在Android系统中需要自定义View的事件,它根据根据鼠标拖动,长按,点击等事件进行处理。
--使用Android.view.GestureDetector这个接口
首先将自己的view继承此接口:
public class MyView extends View implements OnClickListener,GestureDetector.OnGestureListener
在view中添加GestureDetector的对象并初始化:
private GestureDetector mGestureDetector;
init() {
mGestureDetector = new GestureDetector(getContext(), this);
}
之后重写view的onTouchEvent方法:
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_UP:
break;
}
return mGestureDetector.onTouchEvent(event);
}
正常情况下以上步骤即可以将鼠标事件捕捉,并使用OnGestureListener接口方法去处理。
boolean onDown(MotionEvent e);//mouse down
void onShowPress(MotionEvent e);//Touch了还没有滑动
boolean onSingleTapUp(MotionEvent e);//like onClick->onKeyUp
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY);//scroll
void onLongPress(MotionEvent e);//long press
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY);//快速拖动
顾名思义可以想见这些方法的用途。
在实际使用过程中发现有一个问题:
当上下拖动的过程中向左右拖然后松开鼠标会不响应onTouchEvent的ACTION_UP事件,
所以要根据情况在onScroll中对distanceX和distanceY同时进行判断。
分享到:
相关推荐
Android自定义View的事件分发机制(一) 博客地址:http://blog.csdn.net/jsonnan/article/details/73693543
android 自定义view比较综合的例子,涉及到一些复杂的实现效果,有一些基础的人可以参考下。
方式一:设置View的setOnTouchListener(),重写onTouch方法;方式二:实现view的onTouchEvent()方法。实现自定义view的拖动、点击事件。
Android中自定义View操作Android中自定义View操作Android中自定义View操作
笔者之前已经写过了一些自定义View的文章,在此对其也就不从头说起了,如有兴趣的读者可以看一下笔者的前两篇文章。 [android 自定义view的使用(最佳demo——返回标题栏)]...
android 自定义view及自定义属性
android项目下对图片高斯模糊毛玻璃,自定义view,模糊程度可控制,高斯模糊毛玻璃,自定义view,模糊程度可控制
自定义view进阶一,最后先看自定义view基础篇。
自定义View的详细流程,自定义控件的三种方式,自定义ViewGroup,以及事件拦截机制
Android音频剪辑裁剪自定义view,拖动剪切音频的时长,滑动滑块实时显示对应的时间点,指针可以滑动
android自定义View实现SwitchView
在我们从Android小学生 进阶到 Android中学生的路上,肯定需要经历 自定义View。 大神已经给出了,最精简的Demo,我这里 顺水推舟,把一些基础知识 标记在代码之中,各位可以一边看源码 一边学基础。 觉得文章有用,...
自定义View---三种事件的触发、自定义View属性
方向控制自定义View Android方向控制自定义View Android方向控制自定义View Android
自定义View的PPT,包含了Android里面自定义View的onMeasure,onLayout等知识点
android 自定义View界面大合集
Android自定义View
android demo,自定义控件view,点击该自定义view,onclick随机生成数字
什么是自定义View 为什么使用自定义View 如何自定义控件
很简单,学习自定义的View,还有自定义的Button,其实也就是一个View。