GestureDetector简单使用
来源:互联网 发布:组态王软件代理 编辑:程序博客网 时间:2024/05/22 16:57
话说onTouch也可以记录按下抬起等简单的手势,但是太过简单且考虑到生命周期等的原因,故google专门为我们提供了一个手势类(GestureDetector)
它有两个接口 :
1.OnGestureListener
2.SimpleOnGestureListener
区别在于第一个是完整的所有手势,第二个顾名思义就是简单的,常用的手势
```
GestureDetector gdt=new GestureDetector(mContext, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
//用户按下屏幕就会触发;
return false;
}
@Override
public void onShowPress(MotionEvent e) {
//如果是按下的时间超过瞬间,而且在按下的时候没有松开或者是拖动的,那么onShowPress就会执行
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
//一次单独的轻击抬起操作,也就是轻击一下屏幕,立刻抬起来,才会有这个触发,当然,如果除了Down以外还有其它操作,那就不再算是Single操作了,所以也就不会触发这个事件
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//在屏幕上拖动事件。无论是用手拖动view,或者是以抛的动作滚动,都会多次触发,这个方法
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
return false;
}
@Override
public void onLongPress(MotionEvent e) {
//长按
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// 滑屏,用户按下触摸屏、快速移动后松开
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
return false;
}
});
```
定义好上面的代码。最后在Activity中的onTouch中将事件交给GestureDetector就可以了
```
public boolean onTouch(View v, MotionEvent event) {
return gdt.onTouchEvent(event);
}
```
如何在Fragment中使用GestureDetector?
思路:在Activity中创建接口,将onTouch的事件传递到接口的方法,调用方在实现接口并传入自己的GestureDetector即可
1.创建接口:
```
//在Activity的dispatchTouchEvent方法中将event事件传递给实现接口的那一方
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyOnTouchListener listener : onTouchListeners) {
listener.onTouch(ev);
}
return super.dispatchTouchEvent(ev);
}
//绑定监听
public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
onTouchListeners.add(myOnTouchListener);
}
//取消监听
public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
onTouchListeners.remove(myOnTouchListener);
}
public interface MyOnTouchListener {
public boolean onTouch(MotionEvent ev);
}
```
2.在Fragment中使用手势
```
/**创建手势*/
gdt = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
@Override
public void onLongPress(MotionEvent e) {
super.onLongPress(e);
shifoushuaxing = false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
shifoushuaxing = true;
return true;
}
});
//实现接口
MainActivity.MyOnTouchListener myOnTouchListener = new MainActivity.MyOnTouchListener() {
@Override
public boolean onTouch(MotionEvent ev) {
boolean result = gdt.onTouchEvent(ev);
return result;
}
};
//绑定
((MainActivity) getActivity())
.registerMyOnTouchListener(myOnTouchListener);
```
它有两个接口 :
1.OnGestureListener
2.SimpleOnGestureListener
区别在于第一个是完整的所有手势,第二个顾名思义就是简单的,常用的手势
```
GestureDetector gdt=new GestureDetector(mContext, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
//用户按下屏幕就会触发;
return false;
}
@Override
public void onShowPress(MotionEvent e) {
//如果是按下的时间超过瞬间,而且在按下的时候没有松开或者是拖动的,那么onShowPress就会执行
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
//一次单独的轻击抬起操作,也就是轻击一下屏幕,立刻抬起来,才会有这个触发,当然,如果除了Down以外还有其它操作,那就不再算是Single操作了,所以也就不会触发这个事件
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
//在屏幕上拖动事件。无论是用手拖动view,或者是以抛的动作滚动,都会多次触发,这个方法
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
return false;
}
@Override
public void onLongPress(MotionEvent e) {
//长按
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
// 滑屏,用户按下触摸屏、快速移动后松开
// velocityX:X轴上的移动速度,像素/秒
// velocityY:Y轴上的移动速度,像素/秒
return false;
}
});
```
定义好上面的代码。最后在Activity中的onTouch中将事件交给GestureDetector就可以了
```
public boolean onTouch(View v, MotionEvent event) {
return gdt.onTouchEvent(event);
}
```
如何在Fragment中使用GestureDetector?
思路:在Activity中创建接口,将onTouch的事件传递到接口的方法,调用方在实现接口并传入自己的GestureDetector即可
1.创建接口:
```
//在Activity的dispatchTouchEvent方法中将event事件传递给实现接口的那一方
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyOnTouchListener listener : onTouchListeners) {
listener.onTouch(ev);
}
return super.dispatchTouchEvent(ev);
}
//绑定监听
public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
onTouchListeners.add(myOnTouchListener);
}
//取消监听
public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
onTouchListeners.remove(myOnTouchListener);
}
public interface MyOnTouchListener {
public boolean onTouch(MotionEvent ev);
}
```
2.在Fragment中使用手势
```
/**创建手势*/
gdt = new GestureDetector(mContext, new GestureDetector.SimpleOnGestureListener() {
@Override
public void onLongPress(MotionEvent e) {
super.onLongPress(e);
shifoushuaxing = false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
shifoushuaxing = true;
return true;
}
});
//实现接口
MainActivity.MyOnTouchListener myOnTouchListener = new MainActivity.MyOnTouchListener() {
@Override
public boolean onTouch(MotionEvent ev) {
boolean result = gdt.onTouchEvent(ev);
return result;
}
};
//绑定
((MainActivity) getActivity())
.registerMyOnTouchListener(myOnTouchListener);
```
0 0
- GestureDetector 简单使用
- GestureDetector简单使用
- android Scroll及GestureDetector的简单使用
- Android手势GestureDetector的简单使用
- GestureDetector手势识别的简单使用
- GestureDetector使用
- GestureDetector使用
- 简单手势GestureDetector
- GestureDetector简单应用
- GestureDetector、SimpleOnGestureListener使用
- Android GestureDetector使用详解
- GestureDetector使用详解
- GestureDetector使用实例
- GestureDetector的使用
- GestureDetector使用详解
- GestureDetector使用详解
- GestureDetector
- GestureDetector
- node 实现 less 自动编译工具的制作
- 使用Fiddler进行iOS APP的HTTP/HTTPS抓包
- powershell 备份文件脚本
- maven 使用时,遇到的错误,及解决办法
- 如何用Fiddler对手机(安卓/iOS)数据进行抓包
- GestureDetector简单使用
- Fiddler建好代理后,能连到手机,但手机不能上网了,求破有果
- 01引言
- 0006_20170228_【我是菜鸟】_NumberFormat虚拟类的小笔记
- 算法课第2周第1题——100. Same Tree
- 02关系模型的介绍
- 03SQL
- 04中级SQL
- 徐悲鸿赠画马车夫