我尝试使用手势来更改MainActivity中的片段。
我使用此代码。
主要活动:
public class MainActivity extends FragmentActivity {
/* ... */
HomeGestureDetector homeGestureDetector = new HomeGestureDetector(MainActivity.this){
public void onSwipeRight() {
menuListener((selectedItem-1 == -1)? 4 : selectedItem-1) ;
}
public void onSwipeLeft() {
menuListener((selectedItem + 1) % 5);
}
};
center.setOnTouchListener(new GestureManager(new GestureDetector(MainActivity.this, homeGestureDetector)));
}
GestureManager:
public class GestureManager implements OnTouchListener {
private final GestureDetector gestureDetector;
public GestureManager(GestureDetector gd) {
gestureDetector = gd;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return gestureDetector.onTouchEvent(event);
}
最后,HomeGestureDetector是扩展SimpleOnGestureListener的类,但是你可以看到方法onSwipeRight()onSwipeLeft()的实现是MainActivity中的委托。
最初这段代码工作正常,但是当我用其他元素填充布局时,似乎无法拦截手势,因为侦听器在容器布局上,当我点击时,我触摸了相关元素,而不是容器。
如何实现此功能?
答案 0 :(得分:1)
考虑使用ViewPager修改您的实施。
ViewPager是......
布局管理器,允许用户左右翻转 数据页面。您提供PagerAdapter的实现 生成视图显示的页面。
(来自docs)
有趣/需要阅读(我发布了代码,但developer.android.com在此处需要一切):
https://developer.android.com/training/implementing-navigation/lateral.html#horizontal-paging
https://developer.android.com/training/implementing-navigation/lateral.html#swipe-tabs
MainActivity#menuListener
方法https://developer.android.com/design/patterns/swipe-views.html
HTH!