Android客户端,比如网易新闻和腾讯新闻中,都加入了右滑手指退出当前页面的功能。
刚刚看到一篇博文,他也讲了一个滑动退出的功能。于是把之前的项目里面用到的一样的功能拿出来也放在这里总结下。
之前我也在github发现一个开源库,别人写的,有类似于Safari浏览器,前进和退出的效果,就是随着手指滑动特效。暂时没找到,找到一定放上来。
这里的主要实现思路就是,
GestureDetector + OnGestureListener
主要是实现了OnGestureListener监听中的onScroll方法。当水平滑动距离要大于120 垂直距离要小瑜50的时候就退出当前的Activity 。并添加动画效果。
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX,
float distanceY) {
// 滑动推出功能
//计算手指在屏幕滑动的距离和方向判断退出。
if ((e2.getX() - e1.getX()) > 120
&& Math.abs(e1.getY() - e2.getY()) < 50) {
// activity.onBackPressed();
activity.finish();
activity.overridePendingTransition(R.anim.slide_in_left,
R.anim.slide_out_right);
return true;
}
return false;
}
然后在Activity中,初始化手势,将每个Activity都注册成为手势监听。
if (gestureDetector == null) {
gestureDetector = new GestureDetector(this, new MyGestureListener(
this));
}
然后重写Activity的 dispatchTouchEvent方法。
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (flingFinishEnabled) {
return gestureDetector.onTouchEvent(ev)
|| super.dispatchTouchEvent(ev);
}
return super.dispatchTouchEvent(ev);
}
boolean flingFinishEnabled = true or false ;
另外一种方式实现,地址:http://blog.csdn.net/ff20081528/article/details/17845753#comments
滑动返回,画面随手指移动。开源库.https://github.com/Issacw0ng/SwipeBackLayout