|
|
|
|
@ -44,25 +44,14 @@ public class CustomViewPager extends ViewPager { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean dispatchKeyEvent(KeyEvent event) { |
|
|
|
|
return super.dispatchKeyEvent(event) || executeKeyEvent(event); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public boolean executeKeyEvent(@NonNull KeyEvent event) { |
|
|
|
|
boolean handled = false; |
|
|
|
|
if (event.getAction() == KeyEvent.ACTION_DOWN) { |
|
|
|
|
switch (event.getKeyCode()) { |
|
|
|
|
case KeyEvent.KEYCODE_DPAD_LEFT: |
|
|
|
|
handled = arrowScroll(FOCUS_LEFT); |
|
|
|
|
break; |
|
|
|
|
case KeyEvent.KEYCODE_DPAD_RIGHT: |
|
|
|
|
handled = arrowScroll(FOCUS_RIGHT); |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return handled; |
|
|
|
|
if (findFocus() instanceof TextView) return false; |
|
|
|
|
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DPAD_LEFT) return arrowScroll(FOCUS_LEFT); |
|
|
|
|
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DPAD_RIGHT) return arrowScroll(FOCUS_RIGHT); |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
public boolean arrowScroll(int direction) { |
|
|
|
|
boolean handled = false; |
|
|
|
|
View currentFocused = findFocus(); |
|
|
|
|
@ -100,14 +89,14 @@ public class CustomViewPager extends ViewPager { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} else if (direction == FOCUS_LEFT) { |
|
|
|
|
if (getCurrentItem() == 0 || currentFocused instanceof TextView) { |
|
|
|
|
if (getCurrentItem() == 0) { |
|
|
|
|
shake(currentFocused); |
|
|
|
|
handled = true; |
|
|
|
|
} else { |
|
|
|
|
handled = pageLeft(); |
|
|
|
|
} |
|
|
|
|
} else if (direction == FOCUS_RIGHT) { |
|
|
|
|
if (getAdapter() != null && getCurrentItem() == getAdapter().getCount() - 1 || currentFocused instanceof TextView) { |
|
|
|
|
if (getAdapter() != null && getCurrentItem() == getAdapter().getCount() - 1) { |
|
|
|
|
shake(currentFocused); |
|
|
|
|
handled = true; |
|
|
|
|
} else { |
|
|
|
|
@ -144,7 +133,7 @@ public class CustomViewPager extends ViewPager { |
|
|
|
|
return outRect; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
boolean pageLeft() { |
|
|
|
|
private boolean pageLeft() { |
|
|
|
|
if (getCurrentItem() > 0) { |
|
|
|
|
setCurrentItem(getCurrentItem() - 1, false); |
|
|
|
|
return true; |
|
|
|
|
@ -152,7 +141,7 @@ public class CustomViewPager extends ViewPager { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
boolean pageRight() { |
|
|
|
|
private boolean pageRight() { |
|
|
|
|
if (getAdapter() != null && getCurrentItem() < getAdapter().getCount() - 1) { |
|
|
|
|
setCurrentItem(getCurrentItem() + 1, false); |
|
|
|
|
return true; |
|
|
|
|
|