OnTouch的简单例子
来源:互联网 发布:php string split 编辑:程序博客网 时间:2024/06/05 08:41
个人比较健忘,所以前段时间趁空整理了一些简单的demo,以后用着方便。
OnTouch顾名思义就是触摸屏幕事件,各问题代码里解释很详细啦。代码大部分是从网络获取的。
import android.os.Bundle;import android.app.Activity;import android.graphics.PointF;import android.util.Log;import android.view.GestureDetector;import android.view.GestureDetector.OnGestureListener;import android.view.Menu;import android.view.MotionEvent;import android.view.View;import android.view.View.OnTouchListener;import android.widget.TextView;/** * OnTouch的简单应用 * @author 枫jk * */public class MainActivity extends Activity implements OnTouchListener,OnGestureListener {PointF startPoint;GestureDetector mGestureDetector;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);startPoint=new PointF();mGestureDetector=new GestureDetector(this);TextView tv=(TextView) findViewById(R.id.tv_1);tv.setClickable(true);//不设置这个无法响应ACTION_UP ACTION_MOVE 等事件tv.setOnTouchListener(this);}/* * * event.getAction() //获取触控动作比如ACTION_DOWN event.getPointerCount(); //获取触控点的数量,比如2则可能是两个手指同时按压屏幕 event.getPointerId(nID); //对于每个触控的点的细节,我们可以通过一个循环执行getPointerId方法获取索引 event.getX(nID); //获取第nID个触控点的x位置 event.getY(nID); //获取第nID个点触控的y位置 event.getPressure(nID); //LCD可以感应出用户的手指压力,当然具体的级别由驱动和物理硬件决定的 event.getDownTime() //按下开始时间 event.getEventTime() // 事件结束时间 event.getEventTime()-event.getDownTime()); //总共按下时花费时间 */@Overridepublic boolean onTouch(View v, MotionEvent event) {// TODO Auto-generated method stub//Log.e("onTouch x y", event.getX()+" "+event.getY());//触摸点相对于控件的X、Y距离//Log.e("onTouch rawX rawY", event.getRawX()+" "+event.getRawY()); //触摸点相对于屏幕的X、Y距离//switch(event.getAction()& MotionEvent.ACTION_MASK){ ACTION_MASK在Android中是应用于多点触摸操作//switch(event.getAction()){//case MotionEvent.ACTION_DOWN://Log.e("ACTION_DOWN x y", event.getX()+" "+event.getY());//startPoint.set(event.getX(), event.getY());//break;//case MotionEvent.ACTION_UP://Log.e("ACTION_UP x y", event.getX()+" "+event.getY());//break;//case MotionEvent.ACTION_MOVE://Log.e("ACTION_MOVE x y", (event.getX()-startPoint.x)+" "+(event.getY()-startPoint.y));//break;//case MotionEvent.ACTION_CANCEL://Log.e("ACTION_CANCEL x y", event.getX()+" "+event.getY());//break;//}//return false;return mGestureDetector.onTouchEvent(event);}//用户轻触触摸屏,由1个MotionEvent ACTION_DOWN触发@Overridepublic boolean onDown(MotionEvent event) {// TODO Auto-generated method stubLog.e("onDown x y", event.getX()+" "+event.getY());return false;}// 用户按下触摸屏、快速移动后松开,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE, 1个ACTION_UP触发// 参数解释: // event0:第1个ACTION_DOWN MotionEvent // event1:最后一个ACTION_MOVE MotionEvent // velocityX:X轴上的移动速度,像素/秒 // velocityY:Y轴上的移动速度,像素/秒@Overridepublic boolean onFling(MotionEvent event0, MotionEvent event1, float velocityX, float velocityY) {// TODO Auto-generated method stub//Log.e("onFling event0 x y", event0.getX()+" "+event0.getY());//Log.e("onFling event1 x y", event1.getX()+" "+event1.getY());//Log.e("onFling x y", velocityX+" "+velocityY);if(Math.abs(event0.getX()-event1.getX())>100){Log.e("onFling x y", velocityX+" "+velocityY);}return false;}// 用户长按触摸屏,由多个MotionEvent ACTION_DOWN触发@Overridepublic void onLongPress(MotionEvent event0) {// TODO Auto-generated method stubLog.e("onLongPress x y", event0.getX()+" "+event0.getY());}// 用户按下触摸屏,并拖动,由1个MotionEvent ACTION_DOWN, 多个ACTION_MOVE触发@Overridepublic boolean onScroll(MotionEvent event0, MotionEvent event1, float distanceX, float distanceY) {// TODO Auto-generated method stub//Log.e("onScroll event0 x y", event0.getX()+" "+event0.getY());//Log.e("onScroll event1 x y", event1.getX()+" "+event1.getY());//Log.e("onScroll x y", distanceX+" "+distanceY);if(Math.abs(event0.getX()-event1.getX())>100){Log.e("onScroll x y", distanceX+" "+distanceY);}return false;}// 用户轻触触摸屏,尚未松开或拖动,由一个1个MotionEvent ACTION_DOWN触发 // 注意和onDown()的区别,强调的是没有松开或者拖动的状态@Overridepublic void onShowPress(MotionEvent event0) {// TODO Auto-generated method stubLog.e("onShowPress x y", event0.getX()+" "+event0.getY());}// 用户(轻触触摸屏后)松开,由一个1个MotionEvent ACTION_UP触发@Overridepublic boolean onSingleTapUp(MotionEvent event0) {// TODO Auto-generated method stubLog.e("onSingleTapUp x y", event0.getX()+" "+event0.getY());return false;}}
源码地址:http://download.csdn.net/detail/han123456o/7137311
0 0
- OnTouch的简单例子
- android的ontouch事件
- android的ontouch事件
- ListView的onTouch动作
- android的ontouch事件
- Android的各种onTouch
- OnTouch的应用
- ontouch
- 简单的Timer例子
- c的简单例子
- AJAX的简单例子
- 一个简单的例子
- 重载的例子.....简单
- 简单的AJAX例子
- Struts_DispatchAction简单的例子
- Struts_LookupDispatchAction简单的例子
- Struts_LookupDispatchAction简单的例子
- Struts_DispatchAction简单的例子
- Struts2教程5:使用Validation框架验证数据
- BMC Remedy ARERR 9242
- 【每日一C之九】C语言const用法
- J2EE企业开发规范
- Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法
- OnTouch的简单例子
- HDU 1166 && HLG 1794 敌兵布阵(树状数组)
- 史上最最佳软件开发实践指导
- Struts2教程7:上传任意多个文件
- Linux下安装eclipse
- Hibernate乐观锁的实现原理剖析与使用乐观锁时的注意点
- POJ 3628 Bookshelf 2
- android listview 滑动监听
- #import 指令官方介绍 MSDN