实例详解用户输入 i. 检测常用手势
需积分: 0 148 浏览量
更新于2020-09-02
收藏 37KB PDF 举报
在Android开发中,用户输入是应用交互的核心部分。检测常用手势是提高用户体验的关键技术,它允许用户通过简单的触摸屏幕动作来执行特定的操作。本实例主要介绍了如何使用`GestureDetector`类来检测一些基本的手势,如单击、双击、滑动和长按。
我们创建一个`GestureDetector`对象,并传入一个实现了`OnGestureListener`接口的对象。`OnGestureListener`接口定义了一系列方法,用于处理各种手势事件。在`MainActivity`的`onCreate`方法中,我们初始化布局中的文本视图并创建`GestureDetector`实例:
```java
public class MainActivity extends Activity{
private GestureDetector mGestureDetector;
private TextView mGestureTextView;
private TextView mDoubleTapTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mGestureTextView = findViewById(R.id.gesture);
mDoubleTapTextView = findViewById(R.id.doubleTap);
mGestureDetector = new GestureDetector(this, mOnGestureListener);
mGestureDetector.setOnDoubleTapListener(mDoubleTapListener);
}
}
```
接着,我们定义了`mOnGestureListener`,这是一个内部类,实现了`OnGestureListener`接口。每个手势事件的方法都会在这里被重写,以便在用户触发这些手势时更新UI或执行相应的操作。例如:
- `onSingleTapUp`:当用户轻触屏幕并快速抬起手指时,这个方法会被调用。在本例中,它用来更新`mGestureTextView`的文本。
```java
@Override
public boolean onSingleTapUp(MotionEvent e) {
Log.i(LOG_TAG, "onSingleTapUp: " + e.toString());
mGestureTextView.setText("onSingleTapUp: ");
return false;
}
```
- `onShowPress`:当用户按下屏幕并保持一段时间(但不足以触发长按时),这个方法会被调用。
```java
@Override
public void onShowPress(MotionEvent e) {
Log.i(LOG_TAG, "onShowPress: " + e.toString());
mGestureTextView.setText("onShowPress: ");
}
```
- `onScroll`:当用户在屏幕上滑动时,这个方法会被多次调用,每次移动手指时都会传入新的触摸点。
```java
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
Log.i(LOG_TAG, "onScroll: " + e1.toString() + ", " + e2.toString());
mGestureTextView.setText("onScroll ");
return false;
}
```
- `onLongPress`:当用户长按时,这个方法会被调用。
```java
@Override
public void onLongPress(MotionEvent e) {
Log.i(LOG_TAG, "onLongPress: " + e.toString());
}
```
此外,我们还设置了`OnDoubleTapListener`来处理双击手势:
```java
private GestureDetector.SimpleOnDoubleTapListener mDoubleTapListener = new GestureDetector.SimpleOnDoubleTapListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
// 双击确认后,可以在此处处理逻辑
mDoubleTapTextView.setText("onSingleTapConfirmed: ");
return true;
}
@Override
public void onDoubleTap(MotionEvent e) {
// 用户双击屏幕时,此处的逻辑会被执行
mDoubleTapTextView.setText("onDoubleTap: ");
}
@Override
public void onDoubleTapEvent(MotionEvent e) {
// 双击事件的各个阶段,可以在此处添加额外的处理
}
};
```
为了确保`GestureDetector`能接收到触摸事件,我们需要在`onTouchEvent`方法中调用`mGestureDetector.onTouchEvent(event)`。这样,`GestureDetector`就会处理所有的触摸事件,然后根据需要调用相应的方法:
```java
@Override
public boolean onTouchEvent(MotionEvent event) {
mGestureDetector.onTouchEvent(event);
return super.onTouchEvent(event);
}
```
通过这种方式,我们可以轻松地在Android应用中检测和响应用户的常见手势,从而提供更加直观和自然的交互体验。记住,根据实际需求,你可以自定义`OnGestureListener`和`OnDoubleTapListener`,增加更多手势的识别,或者调整已有的手势行为,以满足应用的特定功能。
weixin_38537777
- 粉丝: 4
- 资源: 966
最新资源
- 基于小程序的研知识题库小程序源码(小程序毕业设计完整源码).zip
- scratch放烟花 scratch案例 scratch编程案例 scratch创意编程
- 基于小程序的超市售货管理平台小程序源码(小程序毕业设计完整源码+LW).zip
- 基于监督学习的web入侵检测系统源码毕业设计源码
- 基于小程序的大学生党务学习平台小程序源码(小程序毕业设计完整源码+LW).zip
- 基于小程序的大学生校园兼职微信小程序源码(小程序毕业设计完整源码+LW).zip
- 睡岗图像数据集(1400张图片).rar
- 2017 Global Data Challenge Hosted by JD Finance , JDD-2017京东金融全球数据探索者大赛 金融信贷需求预测.zip
- thinkpython配套资源-示例源码
- labview 编写的类teststand多工位并行测试框架,带单独的测试和序列编辑,参数编辑功能,具体的见图片,功能正常,多工位测试,带源码
- 工具变量-中国制造业新质生产力水平指标.xlsx
- 3DMAX书籍生成器插件BookGenerator下载
- 复现基于双向反激变器的SOC估算与主动均衡仿真 1复现硕士lunwen:《锂离子电池SOC估算与主动均衡策略研究-王昊》 2六节电池模型:使用 Simmulink 搭建了六节电池主动均衡仿
- 离线打包报错音频的依赖
- 基于深度学习卷积神经网络的农作物病虫害识别检测系统python源码+数据集(高分毕设)
- Modelsim安装软件