webview双击事件的捕获
来源:互联网 发布:友情岁月演唱会知乎 编辑:程序博客网 时间:2024/04/28 17:33
很多时候我们需要实现双击webview全屏显示的功能,那么我们首先要捕获到webview控件的双击事件:
双击事件就这样被捕获到了,那么全屏什么的操作就迎刃而解了吧!那么我们可以学习下SimpleOnGestureListener可以监听到的其他事件:
这段学习的代码来自http://blog.csdn.net/huangbiao86/article/details/6745670博文,供大家学习,因为有详细的注解,这里我就直接拿过来展示用了。
首先初始化webview,这里我就不贴代码了,然后:
private GestureDetector mGestureDetector;
mGestureDetector = new GestureDetector(this, new MyGestureListener());
这里可以看到,采用了GestureDetector,那么接下来:
mWebView.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stubreturn mGestureDetector.onTouchEvent(event);}});
要注意的是,我经过测试发现webview.setOnClickListener捕获不到点击事件,直接使用屏幕点击也不可以,好像是事件被吃掉了,但是这种wenview.wetOnTouchListener是可行的,可以捕获到webview控件的点击事件。那么双击事件怎么捕获呢?网上很多说法是在单击事件中记录秒数然后计算差值,小于一个阀值就算双击了,但是经过我的实验是不可行的。Android有一个SimpleOnGestureListener是可以监听到双击事件的,那么问题就简单了:
private class MyGestureListener extends SimpleOnGestureListener{ @Overridepublic boolean onDoubleTap(MotionEvent e) {//webview的双击事件// TODO Auto-generated method stubif(TAG%2==0){rl_top.startAnimation(translate_top_in);rl_top.setVisibility(View.VISIBLE);ll_down.startAnimation(translate_down_in);ll_down.setVisibility(View.VISIBLE);TAG++;}else {rl_top.setVisibility(View.GONE);ll_down.setVisibility(View.GONE);TAG++;}return super.onDoubleTap(e);}}
双击事件就这样被捕获到了,那么全屏什么的操作就迎刃而解了吧!那么我们可以学习下SimpleOnGestureListener可以监听到的其他事件:
private class MySimpleGesture extends SimpleOnGestureListener { // 双击的第二下Touch down时触发 public boolean onDoubleTap(MotionEvent e) { Log.i("MyGesture", "onDoubleTap"); return super.onDoubleTap(e); } // 双击的第二下Touch down和up都会触发,可用e.getAction()区分 public boolean onDoubleTapEvent(MotionEvent e) { Log.i("MyGesture", "onDoubleTapEvent"); return super.onDoubleTapEvent(e); } // Touch down时触发 public boolean onDown(MotionEvent e) { Log.i("MyGesture", "onDown"); return super.onDown(e); } // Touch了滑动一点距离后,up时触发 public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.i("MyGesture", "onFling"); return super.onFling(e1, e2, velocityX, velocityY); } // Touch了不移动一直Touch down时触发 public void onLongPress(MotionEvent e) { Log.i("MyGesture", "onLongPress"); super.onLongPress(e); } // Touch了滑动时触发 public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.i("MyGesture", "onScroll"); return super.onScroll(e1, e2, distanceX, distanceY); } /* * Touch了还没有滑动时触发 (1)onDown只要Touch Down一定立刻触发 (2)Touch * Down后过一会没有滑动先触发onShowPress再触发onLongPress So: Touch Down后一直不滑动,onDown * -> onShowPress -> onLongPress这个顺序触发。 */ public void onShowPress(MotionEvent e) { Log.i("MyGesture", "onShowPress"); super.onShowPress(e); } /* * 两个函数都是在Touch Down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touch Up时触发 * 点击一下非常快的(不滑动)Touch Up: onDown->onSingleTapUp->onSingleTapConfirmed * 点击一下稍微慢点的(不滑动)Touch Up://确认是单击事件触发 * onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed */ public boolean onSingleTapConfirmed(MotionEvent e) { Log.i("MyGesture", "onSingleTapConfirmed"); return super.onSingleTapConfirmed(e); } public boolean onSingleTapUp(MotionEvent e) { Log.i("MyGesture", "onSingleTapUp"); return super.onSingleTapUp(e); } }
这段学习的代码来自http://blog.csdn.net/huangbiao86/article/details/6745670博文,供大家学习,因为有详细的注解,这里我就直接拿过来展示用了。
谢谢大家!!
0 0
- webview双击事件的捕获
- dataGrid捕获双击事件
- dataGrid捕获双击事件
- DEV gridview 捕获行双击事件
- DEV gridview 捕获行双击事件
- flex的双击事件
- kdtable的双击事件
- 事件的捕获
- android webview 适配手机屏幕以及禁止双击事件
- dblclick双击事件在安卓手机webview中不支持
- TreeView控件的双击事件
- 捕捉DataGrid的双击事件
- 捕捉DataGrid的双击事件
- 捕捉DataGrid的双击事件
- DataGrid 双击事件的实现
- JList 双击事件的实现
- 捕捉DataGrid的双击事件
- 处理Figure的双击事件
- 成绩转换
- 崩溃恢复和介质恢复的区别
- C#小结
- QCustomPlot实现动态折线图
- 表单乱码问题解决
- webview双击事件的捕获
- IOS 消息推送 服务端和客户端
- Train Problem I
- leetcode Maximum Subarray
- 第十周项目五 找出1000以内的完数
- query for a map
- hdu 1272 小溪的迷宫 (并查集)
- 容易理解的动态规划入门教程
- HDU 1505 City Game