Advertisement
Guest User

Untitled

a guest
Nov 17th, 2013
542
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. public class ScrollDisableableViewPager extends ViewPager {
  2. public static final int DIRECTION_NONE = 0;
  3. public static final int DIRECTION_LEFT = 1;
  4. public static final int DIRECTION_RIGHT = 2;
  5. public static final int DIRECTION_BOTH = 3;
  6.  
  7. public interface DirectionsProvider {
  8. public int getScrollDirections(int position);
  9. }
  10.  
  11. public ScrollDisableableViewPager(Context context) {
  12. super(context);
  13. }
  14.  
  15. public ScrollDisableableViewPager(Context context, AttributeSet attrs) {
  16. super(context, attrs);
  17. }
  18.  
  19. @Override
  20. protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
  21. final PagerAdapter adapter = getAdapter();
  22. final int page = getCurrentItem();
  23.  
  24. if (adapter == null || page >= adapter.getCount() || !(adapter instanceof DirectionsProvider)) {
  25. return super.canScroll(v, checkV, dx, x, y);
  26. }
  27.  
  28. final DirectionsProvider provider = (DirectionsProvider) adapter;
  29. final int directions = provider.getScrollDirections(page);
  30.  
  31. switch (directions) {
  32. case DIRECTION_NONE : {
  33. return true;
  34. }
  35.  
  36. case DIRECTION_LEFT : {
  37. return dx < 0 || super.canScroll(v, checkV, dx, x, y);
  38. }
  39.  
  40. case DIRECTION_RIGHT : {
  41. return dx > 0 || super.canScroll(v, checkV, dx, x, y);
  42. }
  43.  
  44. case DIRECTION_BOTH : {
  45. return super.canScroll(v, checkV, dx, x, y);
  46. }
  47.  
  48. default : {
  49. throw new IllegalArgumentException("Unknown directions value : " + directions);
  50. }
  51. }
  52. }
  53. }
  54.  
  55. public class CustomAdapter extends FragmentStatePagerAdapter implements ScrollDisableableViewPager.DirectionProvider {
  56. public CategoriesPagerAdapter(FragmentManager manager) {
  57. super(manager);
  58. }
  59.  
  60. @Override
  61. public Fragment getItem(int position) {
  62. return MyFragment.newInstance(position);
  63. }
  64.  
  65. @Override
  66. public int getCount() {
  67. return 7;
  68. }
  69.  
  70. @Override
  71. public int getScrollDirections(int position) {
  72. if (position == 0) {
  73. return ScrollDisableableViewPager.DIRECTION_NONE;
  74. }
  75.  
  76. if (position == 1) {
  77. return ScrollDisableableViewPager.DIRECTION_RIGHT;
  78. }
  79.  
  80. return ScrollDisableableViewPager.DIRECTION_BOTH;
  81. }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement