TabActivity实现手指左右滑动切换页面
来源:互联网 发布:剑三男神脸数据下载 编辑:程序博客网 时间:2024/04/30 12:12
在做项目的时候主界面有好几个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
- TabActivity实现手指左右滑动切换页面
- 【android】TabActivity实现手指左右滑动切换tab
- 【android】TabActivity实现手指左右滑动切换tab
- 【android】TabActivity实现手指左右滑动切换tab
- Android手指滑动切换页面
- Viewpager+Fragment实现左右滑动切换页面
- Tabhost页面实现左右滑动进行页面切换
- 使用GestureDetector实现手指左右滑动检测
- Android左右滑动切换页面
- Android 页面左右滑动切换
- Android 左右滑动切换页面或Activity的效果实现
- Android 左右滑动切换页面或Activity的效果实现
- ViewPager的使用方法(实现左右滑动切换页面)
- *Android手势识别(左右滑动)实现页面切换
- Android 手势识别 (左右滑动)实现 页面 切换
- Android 手势识别 (左右滑动)实现 页面 切换
- TabLayout+View Pager+Fragment 实现页面左右滑动切换
- 手机端滑动实现页面左右切换效果
- Android中双击、三击以及多击的判定
- 线性回归与逻辑回归
- shell 脚本,功能上传图片(第一次写shell,留作纪念)
- Java开启定时任务线程
- Leetcode199: Longest Increasing Subsequence
- TabActivity实现手指左右滑动切换页面
- 轻松学习JavaScript十九:DOM编程之在HTML文档什么位置编写JS代码
- 使用Hibernate SQLQuery执行原生SQL
- StoryBoard中使用Segue实现ViewController之间传值
- Android 一个简易的自定义软键盘
- XUtils
- Android Open Source:陌陌(momo)源代码及实现(大部分UI+功能)
- Vim命令合集
- HDFS数据资源使用量分析以及趋势预测