Iwfu-安卓Gesture手势(1)-初步
来源:互联网 发布:网络组织结构 编辑:程序博客网 时间:2024/06/05 02:24
安卓中监听手指滑动手势不仅可以重写onTouch(),还可以通过安卓自带的Gesture手势类来判断,使用起来也比较简单易懂。
简单来说使用方法就两步:
1-创建GestureDetector手势检测器,并在创建时绑定监听 2-为应用程序的activity/特定组件,绑定事件监听器。在事件处理中 把对应activity/组件的onTouchEvent事件交给GestureDector处理
让要处理手势监听的Activity实现GestureDetector.OnGestureListener接口,重写其中的方法,
这些方法分别对应了不同的手势操作。在代码里有详细注释:
package com.chan.gesture;import android.annotation.TargetApi;import android.content.Intent;import android.os.Build;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.GestureDetector;import android.view.MotionEvent;public class MainActivity extends AppCompatActivity implements GestureDetector.OnGestureListener { //声明手势检测器 private GestureDetector gestureDetector; //Android M以上可以使用 @TargetApi (Build.VERSION_CODES.M) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /*-1-初始化监听器,传入上下文参数和事件监听*/ gestureDetector = new GestureDetector (this,this); } @Override public boolean onTouchEvent(MotionEvent event) { /*-2-将这个Activity的触摸事件交给监听器处理*/ return gestureDetector.onTouchEvent(event); } @Override /* 手指按下的一刻触发 */ public boolean onDown(MotionEvent e) { Log.d("tag", "onDown"); return false; } @Override /* 手指按在屏幕上,在按下的一刻,长按之前执行 ,即按下的时间既大于点击又小于长按*/ public void onShowPress(MotionEvent e) { Log.d("tag", "onShowPress"); } @Override /* 手指离开触摸屏的时候触发 */ public boolean onSingleTapUp(MotionEvent e) { Log.d("tag", "onSingleTapUp"); return false; } @Override /* 手指滑动触发 */ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { Log.d("tag", "onScroll"); return false; } @Override /* 手指长按 */ public void onLongPress(MotionEvent e) { Log.d("tag", "onLongPress"); Intent intent = new Intent (MainActivity.this,Activity2.class); startActivity (intent); } @Override /* 手指抛掷(快速划屏幕后松开) */ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { Log.d("tag", "onFling"); return false; }}
在每个重写的方法里添加了输出语句,然后运行起来在屏幕上滑动,点击等各种操作,最后总结出这些重写的方法调用时机与真实的手势操作直接的关系,如下:
点击: onDown--onSingleTapUp 长按未抬起: onDown-- onShowPress -- onLongPress 还未达到长按就抬起: onDown -- onShowPress -- onSingleTapUp 迅速滑动: onDown -- onScroll.... -- onFling 慢速拖动:onDown -- onScroll....
清楚了每个回调方法调用的时机后,就可以在相应的回调方法里进行一些操作。
下一篇:安卓Gesture手势(2)-实现多点触控控制图片的放大缩小。
0 0
- Iwfu-安卓Gesture手势(1)-初步
- Iwfu-安卓Gesture手势(2)-实现多点触控控制图片的放大缩小。
- Iwfu-安卓传感器(1)
- Iwfu-安卓网络应用---Socket
- Iwfu-安卓网络应用---WebView
- Iwfu-安卓中的适配器模式
- 手势 gesture
- 手势Gesture
- 手势 Gesture
- 手势Gesture
- Iwfu-安卓自定义控件xml属性---TypedArray
- Iwfu-安卓重要的生命周期图和流程图
- Gesture手势及手势库
- Gesture手势及手势库
- android手势Gesture识别
- 关于手势(Gesture)
- Gesture手势笔记
- Gesture Recognizer(添加手势)
- VS2005 debug版本正常而release版本出现: ERROR LNK2005
- codeforces_675C. Money Transfers(贪心)
- javascript 操作cookie
- jdk之Interger.toString(int i, int radix)
- 基本排序算法时间复杂度
- Iwfu-安卓Gesture手势(1)-初步
- node.js 和 express 框架学习笔记(2)
- hdu 5461 Largest Point(杂题)
- jQuery动画-让页面动起来!
- linux下django的安装、配置
- Python星号操作符的作用
- DrawNode绘制几何图形
- [Android] 如何在 Fragment 中使用 runOnUiThread() 方法
- 从0开始玩安全——Linux基础(1)