今天产品出新花样非得要右滑。。。。检測到右滑手势后事件不做处理放在Activity中做对应的处理即可了。

import android.app.Activity;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.view.View;
import android.view.View.OnTouchListener;
import android.webkit.WebSettings;
import android.webkit.WebSettings.RenderPriority;
import android.webkit.WebView; public class MyWebView extends WebView { //手指向右滑动时的最小速度
private static final int XSPEED_MIN = 200; //手指向右滑动时的最小距离
private static final int XDISTANCE_MIN = 150; //记录手指按下时的横坐标。
private float xDown; //记录手指移动时的横坐标。 private float xMove; //用于计算手指滑动的速度。
private VelocityTracker mVelocityTracker; Context mContext; public MyWebView(Context context) {
super(context);
this.mContext = context;
init();
} public MyWebView(Context context, AttributeSet attrs) {
super(context, attrs);
this.mContext = context;
init();
} public MyWebView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
this.mContext = context;
init();
} private void init() { setScrollBarStyle(0);// 设置滚动栏的宽度
WebSettings webSettings = getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setSaveFormData(false);
webSettings.setSavePassword(false);
webSettings.setSupportZoom(false);
webSettings.setGeolocationEnabled(true);
webSettings.setRenderPriority(RenderPriority.HIGH);
webSettings.setSupportMultipleWindows(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setUseWideViewPort(true);
} @Override
public boolean onTouchEvent(MotionEvent event) {
createVelocityTracker(event);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
xDown = event.getRawX();
break;
case MotionEvent.ACTION_MOVE:
xMove = event.getRawX();
//活动的距离
int distanceX = (int) (xMove - xDown);
//获取顺时速度
int xSpeed = getScrollVelocity();
//当滑动的距离大于我们设定的最小距离且滑动的瞬间速度大于我们设定的速度时,返回到上一个activity
// if(distanceX > XDISTANCE_MIN && xSpeed > XSPEED_MIN) {
if(distanceX > XDISTANCE_MIN) {
return false;
}
break;
case MotionEvent.ACTION_UP:
recycleVelocityTracker();
break;
default:
break;
}
return super.onTouchEvent(event);
} /**
* 创建VelocityTracker对象。并将触摸content界面的滑动事件增加到VelocityTracker其中。
*
* @param event
*
*/
private void createVelocityTracker(MotionEvent event) {
if (mVelocityTracker == null) {
mVelocityTracker = VelocityTracker.obtain();
}
mVelocityTracker.addMovement(event);
} /**
* 回收VelocityTracker对象。
*/
private void recycleVelocityTracker() {
mVelocityTracker.recycle();
mVelocityTracker = null;
} /**
* 获取手指在content界面滑动的速度。
*
* @return 滑动速度,以每秒钟移动了多少像素值为单位。
*/
private int getScrollVelocity() {
mVelocityTracker.computeCurrentVelocity(1000);
int velocity = (int) mVelocityTracker.getXVelocity();
return Math.abs(velocity);
}
}

最新文章

  1. 1.NoSql简介
  2. 从客户端(Content="<p>测试</p>")中检测到有潜在危险的 Request.Form 值
  3. php 导出csv文件
  4. 修改ruby gem源为ruby.taobao.org
  5. c# 借助cmd命令解析apk文件信息
  6. liunx文件与用户和群组
  7. linux(九)之网络基础
  8. V7000存储数据恢复_底层结构原理拆解及Mdisk磁盘掉线数据恢复方法
  9. 刨析Maven(对pom.xml配置文件常用标签的解析)
  10. obj-c编程05:类的多态与id动态绑定
  11. bzoj 1592 dp
  12. kvm-virsh管理工具
  13. flutter No material widget found textfield widgets require a material widget ancestor
  14. SVPullToRefresh问题解决
  15. Halcon例程detect_indent_fft学习
  16. (转)【风宇冲】Unity3D教程宝典之AssetBundles:第二讲
  17. Pyqt图标下载网站
  18. CentOS7使用打开关闭防火墙与端口
  19. kubernetes dashboard 安装时出现9090: getsockopt: connection refused错误
  20. THINKPHP5获取设置缓存的例子

热门文章

  1. 【NOIP 2002】 字串变换
  2. js原生淘宝京东宝贝放大镜效果
  3. BPM控制控件的隐藏与显示
  4. 免费获取Bootstrap模板的方法
  5. Dalvik 堆内存管理与回收
  6. C++关键字简述
  7. (转载)Activity-数据状态的保存
  8. vs中的正则替换
  9. linux中errno使用(转)
  10. 给html里面的class添加一个判断语句,判断当前class是否显示(vue)