android为了增加用户体验,新增了GestureDetector类,那该类是做什么用的呢?
通俗的讲该类是 手势检测. 难道是手指有不同的动作系统会检测到,是的.确实如此.
哎,问题来了,那诡异了.那这个类和touch有什么关系呢?我们平常写代码的时候,如何是单击,我们都是通过挂载个listener来响应这个触摸事件.那和这个类有关系吗? 恩,有关系的.
touch 是触摸,只要手指接触到屏幕都是touch. 为了增加用户体验.手指在屏幕滑动算不算触摸呢?双击算不算触摸呢?都是啊.
所以说. touch是个广泛的概念,基本用来响应单击事件,如果更细致的区分各中touch事件,那就需要该类了.
口说没用,举个例子最要紧,弄出APK是硬道理,来吧.
package com.android;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
public class Res extends Activity implements View.OnTouchListener {
Button btn = null;
private GestureDetector mGestureDetector = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button) findViewById(R.id.button);
btn.setOnTouchListener(this);
mGestureDetector = new GestureDetector(this, new LearnGestureListener());
}
public boolean onTouch(View view, MotionEvent event) {
return mGestureDetector.onTouchEvent(event);
}
class LearnGestureListener extends GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapUp(MotionEvent ev) {
Log.d("DEBUG","onSingleTapUp");
return true;
}
@Override
public void onShowPress(MotionEvent ev) {
Log.d("DEBUG","onShowPress");
}
@Override
public void onLongPress(MotionEvent ev) {
Log.d("DEBUG","onLongPress");
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
Log.d("DEBUG","onScroll");
return true;
}
@Override
public boolean onDown(MotionEvent ev) {
Log.d("DEBUG","onDownd");
return true;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
Log.d("DEBUG","onFling");
return true;
}
public boolean onDoubleTap(MotionEvent event){
Log.d("DEBUG","onDoubleTap");
return true;
}
}
}
mGestureDetector = new GestureDetector(this, new LearnGestureListener());
return mGestureDetector.onTouchEvent(event);
文件的关键基本就这两句.第一句创建了对象,第二句把事件传给这个对象.传过去后系统回判断做什么动作.然后new LearnGestureListener()来调用相应的处理函数做处理.
呵呵,不好整吧,要努力,深刻理解.不能光明白表面.会写APK没用,关键要理解framework运行机智.以后才有能力修改框架.
分享到:
相关推荐
使用ViewFlipper的手势功能完成的图像之间的切换、 package com.action; import android.app.Activity; import android.os.Bundle; import android.view.GestureDetector; import android.view.MotionEvent; import...
android-gridview-拖放将 UI 内容组织为二维滚动网格时,gridview 会派上用场。 这个项目展示了一个更复杂的实现,它给了你更多:现在每个项目视图还显示一个具有双重状态的右上角图像,用作切换很有用,或者在我的...
25.4.2 GestureDetector和OnGestureListener 25.4.3 自定义手势 25.4.4 Gestures Builder应用程序 25.5 参考资料 25.6 小结 第26章 传感器 26.1 什么是传感器 26.1.1 检测传感器 26.1.2 ...
除了经常使用GestureDetector和onInterceptTouchEvent之外, 几乎很少有人使用新的API, 要不然的话, 实现就复杂. 事实上真的有十分简单的方式在RecyclerView上面添加这两个功能. 它只要求一个类, 而且这个类已经是...
1. 效果图,本功能用了ViewFlipper和GestureDetector (手势检测器)两个关键技术点: 2. 先写好布局文件,这里用到了ViewFlipper类,用于切换视图,毕竟ViewFlipper见得少,先介绍一下。 在xml布局中的方法介绍: ...
25.4.2 GestureDetector和OnGestureListener 25.4.3 自定义手势 25.4.4 Gestures Builder应用程序 25.5 参考资料 25.6 小结 第26章 传感器 26.1 什么是传感器 26.1.1 检测传感器 26.1.2 ...
主要介绍了Android开发之手势检测及通过手势实现翻页功能的方法,结合实例形式分析了Android GestureDetector类实现手势检测功能的相关操作技巧,需要的朋友可以参考下
内容包括输入事件InputEvent响应方式,触摸事件MotionEvent的概念和使用,触摸事件的动作分类、多点触摸。根据案例和API分析了触摸手势Touch Gesture的识别处理的一般过程。介绍了相关的GestureDetector,Scroller和...
本文实例为大家分享了Android答题器翻页功能,主要使用ViewFilpper和GestureDetector来实现,供大家参考,具体内容如下 1.效果图 2.实现思路 把Activity的TouchEvent事件交个GestureDetector来处理,然后使用...
Flutter音量控制插件,支持Android和IOS,具有:显示隐藏的音量图标,监视音量变化,设置音量,获取设备的当前音量。 请使用真实机器测试,某些功能不支持仿真器。关联采用获取设备音量PerfectVolumeControl . ...
侧滑菜单效果和手势滑动改变导航栏Demo ActionBar SlidingMenu GestureDetector混合使用 实现多功能导航 代码详细注释 适合初学者
bmi_calculator iOS,Android,桌面和Web上的Flutter应用程序。描述该应用程序在线可用,请单击此处->体重指数计算器。 UI受的设计启发。 这是一个具有简单功能但具有完整自定义样式的多屏幕应用程序。 您可以在这里...
最近想实现Android左滑弹出菜单框,右滑消失菜单这个个功能。了解了一下Android 的滑动事件,必须是在view组件或者Activity上实现,同时必须实现OnTouchListener, OnGestureListener这个两个接口。 public class ...
|--android dp和px之间转换 |--android INSTALL_PARSE_FAILED_MANIFEST_MALFORMED |--android root下禁用组件 |--android 判断网络状态 |--android 对话框样式 |--android 开机启动 |--android 挪动dialog的位置 |--...
2、GestureDetector与ScaleGestureDetector 3、Bitmap的一下基本用法 4、这里只需要重写view的onDraw就可实现全部功能 可以发现这个其实没什么难度,主要就是一些位置的计算。 为了能便于理解首先把要用到的知识点...
如何使用Flutter Routes和Navigator创建多页应用程序。 单击按钮如何提取和重构Flutter Widget。 如何将函数作为参数和字段传递。 如何使用GestureDetector窗口小部件进行检测,而不仅仅是点击。 如何通过使用十六...
现在app中,图片预览功能肯定是少不了的,用户基本已经形成条件反射,看到小图,点击看大图,看到大图两个手指开始进行放大,放大后,开始移动到指定部位~~~ 我相信看图的整个步骤,大家或者说用户应该不希望被打断...
最近想实现Android左滑弹出菜单框,右滑消失菜单这个个功能。了解了一下Android 的滑动事件,必须是在view组件或者Activity上实现,同时必须实现OnTouchListener, OnGestureListener这个两个接口。 public class ...
Android中提供了判断手势的接口,所以我们可以根据提供的API来实现各种各样的手势功能来提高手机应用的用户体验。 下面是我写的一段小Demo: GestureActivity.Java public class GestureActivity extends Activity ...
历史最牛、绝对原创、代码简洁、功能强大,华丽的使用TabHost与ViewFlipper结合实现滑动翻页效果,支持tab背景图片自动切换.之前看到别人写的实现方法是重写TabHost,但是代码太繁琐。本程序虽然资源分高点儿,但...