【android】TabActivity实现手指左右滑动切换tab
来源:互联网 发布:大数据建模工程师 编辑:程序博客网 时间:2024/05/01 07:32
在做项目的时候主界面有好几个tab, 有些用户习惯性的左右滑屏来切换tab,所以添加了左右滑屏切换他变得功能。
基本思想:
dispatchTouchEvent在接收到用户触屏时间之后被触发,所在在dispatchTouchEvent中获取当前用户事件,判断是滑动,则执行切换tab,并且终止当前触屏事件。否则则正常流程。
实现方式:
private GestureDetector gestureDetector; // 用户滑动
gestureDetector = new GestureDetector(new TabHostTouch());
private int flaggingWidth;// 互动翻页所需滚动的长度是当前屏幕宽度的1/3
// 获取分辨率
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
flaggingWidth = dm.widthPixels / 3;
private class TabHostTouch extends SimpleOnGestureListener { @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (Math.abs(e1.getX() - e2.getX()) > Math.abs(e1.getY() - e2.getY()) && (e1.getX() - e2.getX() <= (-flaggingWidth) || e1.getX() - e2.getX() >= flaggingWidth)) { if (e1.getX() - e2.getX() <= (-flaggingWidth)) { currentTabID = mTabHost.getCurrentTab() - 1; if (currentTabID < 0) { currentTabID = mTabHost.getTabCount() - 1; } mTabHost.setCurrentTab(currentTabID); return true; } else if (e1.getX() - e2.getX() >= flaggingWidth) { currentTabID = mTabHost.getCurrentTab() + 1; if (currentTabID >= mTabHost.getTabCount()) { currentTabID = 0; } mTabHost.setCurrentTab(currentTabID); return true; } } return false; } }
override dispatchTouchEvent
@Override public boolean dispatchTouchEvent(MotionEvent event) { if (gestureDetector.onTouchEvent(event)) { event.setAction(MotionEvent.ACTION_CANCEL); } return super.dispatchTouchEvent(event); }
在写好了tab,之后修订的功能,所以只是为了实现这个功能而实现。
应该是可以直接用ViewPager实现这个效果的。
~~~~
android系统中的每个ViewGroup的子类都具有下面三个和TouchEvent处理密切相关的方法:
1)public boolean dispatchTouchEvent(MotionEvent ev) 这个方法用来分发TouchEvent
2)public boolean onInterceptTouchEvent(MotionEvent ev) 这个方法用来拦截TouchEvent
3)public boolean onTouchEvent(MotionEvent ev) 这个方法用来处理TouchEvent
注意:不是所有的View的子类,很多教程都说的是所有的View的子类,只有可以向里面添加View的控件才需要分发,比如TextView它本身就是最小的view了,所以不用再向它的子视图分发了,它也没有子视图了,所以它没有dispatch和Intercept,只有touchEvent。
转:http://blog.csdn.net/actual_/article/details/8000359
- 【android】TabActivity实现手指左右滑动切换tab
- 【android】TabActivity实现手指左右滑动切换tab
- 【android】TabActivity实现手指左右滑动切换tab
- TabActivity实现手指左右滑动切换页面
- 【android】实现手指滑动来切换activity
- Android实现:手指触摸滑动切换Activity
- 【android】实现手指滑动来切换activity
- Android ActionBar+ViewPager 实现左右滑动Tab
- Android ActionBar+ViewPager 实现左右滑动Tab
- Android之新闻客服端顶部导航栏Tab点击和左右滑动实现切换界面
- ActionBar + ViewPager实现左右滑动切换Tab页效果
- Android手指滑动切换页面
- android实现多界面左右滑动切换
- Android实现界面左右滑动切换
- Android实现左右滑动切换的效果
- Android实现界面左右滑动切换
- 使用GestureDetector实现手指左右滑动检测
- 用GestureDetector实现手指滑动切换Activity
- POJ_1151 扫描线+离散化+线段树
- Nova虚拟机启动提示libvirtError
- NSIS进阶教程(四)
- ubuntu中taglist和ctags安装,简单明了
- 2.iOS内存管理
- 【android】TabActivity实现手指左右滑动切换tab
- NSIS进阶教程(五)
- 哪些互联网金融产品能真正刺痛银行?
- Hive+UDAF简单示例
- C语言的那些小秘密之动态数组
- hadoop家族知识框架简介
- 刚写的一个js分页类,未优化
- 古诗文欣赏-春夜宴桃李园序
- 真空度测试仪有哪些需要注意的事项