手势处理
2016-04-03 12:38
344 查看
Android事件处理(event)分:按键处理和手势处理
手势处理指用户在设备的屏幕上的触控操作,通常包括按下、弹起、滑动等等,由这些基本操作可以构成各种常见手势,例如单击、长按、滑动等等。
处理触控操作主要依赖于重写Activity的onTouchEvent()方法,方法的参数MotionEvent中封装了触控相关的参数,例如触控点的坐标等。
如果只针对于某些控件,则可以通过调用控件对象的setOnTouchListener()方法为控件配置手势操作的监听器。
【注意】
在手势操作的处理中,需要保证多次的触控点的坐标范围,即单击时按下、弹起的坐标是允许存在一定差异的,滑动时按下、弹起的坐标是需要大于一定的差异的。
JAVA Activity:
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } private float downX;//记录下按下的x的住标,声明变量 //实现手势的处理,重写ontouch()方法 @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction();//event是一个常量 switch (action) { //手指按下 case MotionEvent.ACTION_DOWN://在承载“event”对象事件“MotionEvent”的里面找对应的常量 Log.d("tedu", "ACTION_DOWN,X="+event.getX()+",Y"+event.getY());//通过日志进行观察 downX = event.getX();//变量的初始化 break; //手指弹起 case MotionEvent.ACTION_UP://在承载“event”对象事件“MotionEvent”的里面找对应的常量 Log.i("tedu", "ACTION_UP,X="+event.getX()+",Y"+event.getY());//通过日志进行观察 #下面两个“if”不能写成“if...else...”格式# if (event.getX()-downX>50) { Log.w("tedu", "left->right"); } if (downX-event.getX()>50) {//按下去的点减去弹起的点 Log.w("tedu","right->left"); } break; case MotionEvent.ACTION_MOVE: Log.v("tedu", "ACTION_MOVE,X="+event.getX()+",Y"+event.getY()); } return super.onTouchEvent(event); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
相关文章推荐
- Win7 x64安装SVN服务器和客户端的曲折历程
- boost正则表达式小结
- 《构建之法》第四章 二人合作 读后感
- Django 有关数据库几个命令
- linux命令学习01-mkdir
- Oracle ORA-12541:TNS:no listener错误解决方法
- Nmap速查手册
- 为什么 没有缺省构造函数的类类型成员 必需要在初始化列表 里初始化 ?
- 【音画DIY】冰上舞曲 -- 辛德勒名单插曲
- c++primer第二章读书笔记---变量和基本类型
- Android开发随手记1
- linux (centos6.3) 安装mysql
- 只读共享
- Common Intents
- Qt学习 -- Qt采用设计器Qt Designer与 代码实现的区别
- codeforces#331-B. Wilbur and Array-贪心
- iOS开发中ViewController的生命周期分析和使用方法
- 利用dockerfile构建mysql容器
- 排序中求最小交换次数
- hadoop权威指南阅读笔记(一)