仿ios右滑界面返回功能
来源:互联网 发布:java map 是否存在key 编辑:程序博客网 时间:2024/05/21 19:32
主要在基类中重写onTouchEvent方法:
//手指向右滑动时的最小速度 protected static final int XSPEED_MIN = 200; //手指向右滑动时的最小距离 protected static final int XDISTANCE_MIN=Settings.DISPLAY_WIDTH*2/3; //记录手指按下时的横坐标。 protected float xDown; //记录手指移动时的横坐标。 protected float xMove; //记录手指按下时的纵坐标。 protected float yDown; //记录手指移动时的纵坐标。 protected float yMove;@Override public boolean onTouchEvent(MotionEvent event) { createVelocityTracker(event); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: xDown = event.getX(); yDown=event.getY(); break; case MotionEvent.ACTION_MOVE: xMove = event.getX(); yMove=event.getY(); //活动的距离 int distanceX = (int) (xMove - xDown); int distanceY=(int)(yDown-yMove); //获取顺时速度 int xSpeed = getScrollVelocity(); //当滑动的距离大于我们设定的最小距离且滑动的瞬间速度大于我们设定的速度时,返回到上一个activity if(Math.abs(distanceX)>Math.abs(distanceY)&&distanceX > XDISTANCE_MIN && xSpeed > XSPEED_MIN) { finish(); //设置切换动画,从右边进入,左边退出 overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right); recycleVelocityTracker(); } break; case MotionEvent.ACTION_UP: recycleVelocityTracker(); break; default: break; } return true; } /** * 创建VelocityTracker对象,并将触摸content界面的滑动事件加入到VelocityTracker当中。 * * @param event * */ protected void createVelocityTracker(MotionEvent event) { if (mVelocityTracker == null) { mVelocityTracker = VelocityTracker.obtain(); } mVelocityTracker.addMovement(event); } /** * 回收VelocityTracker对象。 */ protected void recycleVelocityTracker() { mVelocityTracker.recycle(); mVelocityTracker = null; } /** * 获取手指在content界面滑动的速度。 * * @return 滑动速度,以每秒钟移动了多少像素值为单位。 */ protected int getScrollVelocity() { mVelocityTracker.computeCurrentVelocity(1000); int velocity = (int) mVelocityTracker.getXVelocity(); return Math.abs(velocity); }
in_from_left代码如下
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <translate android:duration="500" android:fromXDelta="-100%" android:toXDelta="0" /></set>
out_to_right代码如下
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" > <translate android:duration="500" android:fromXDelta="0%p" android:toXDelta="100%p" /></set>
距离和速度自己可以再调整。。。
如遇到listview和scrollview等将会失效,楼主是我解决方法是listview.setOnTouchListener(this);重写onTouch方法结果也可以实现。。有更好的方法 可以在此提供建议。。
0 0
- 仿ios右滑界面返回功能
- Android 仿iOS右滑 finish 界面
- 【iOS】右滑返回上一级界面手势
- iOS 右滑返回
- iOS右滑返回
- IOS-64-给整个view添加右滑返回功能
- iOS开发 指定页面关闭右滑手势返回功能
- iOS 实现全屏右滑返回功能解析!
- iOS右滑返回问题
- IOS 取消右滑返回
- iOS 自定义返回按钮,仍实现右滑返回的功能.
- iOS 为自定义返回按钮leftBarButtonItem的页面添加右滑返回功能
- 关于右滑返回到上级界面
- android右滑返回上一个界面
- 右滑返回上一个界面FDFullscreenPopGesture
- 给界面添加右滑返回
- 仿ios右滑销毁activity
- 为navigationController添加右滑返回功能
- 安装PS 无法选择路径
- 关于软件开发,你老板不知道的7件事
- Linux进程的实际用户ID和有效用户ID
- strip_tags()函数使用注意
- ZOJ 1654 Place the Robots(放置机器人)------最大独立集
- 仿ios右滑界面返回功能
- Python字典
- 用Delphi模拟键盘输入
- SDUT- 2506-完美网络
- [网络流24题] 09 方格取数问题 (二分图点权最大独立集,最小割)
- epoll两种类型ET和LT区别(结合实际例子)
- Android Sqlite分页
- @dynamic与@synthesize的区别
- public,private,protected,friend规则