2011.10.17——— android 多点触控
16lz
2021-01-23
2011.10.17——— android 多点触控
参考:http://blog.csdn.net/ldj299/article/details/6422547
主要API:
测试代码如下:
自定义view
注意:
onTouchEvent返回true 要不是没有效果的
Activity
运行结果:
结论:
1、ACTION_POINTER_2_DOWN和ACTION_POINTER_1_DOWN 可能只会触发一个
2、事件只触发了一个,但是坐标都是能得到的
参考:http://blog.csdn.net/ldj299/article/details/6422547
主要API:
event.getPointerCount():触控点的个数getPointerId(int pointerIndex):pointerIndex从0到getPointerCount-1,返回一个触摸点的标示getX(int pointerIndex):通过标示来得到X坐标getY(int pointerIndex):通过标示来得到Y坐标MotionEvent.ACTION_POINTER_1_DOWN:第一个触摸点点击事件MotionEvent.ACTION_POINTER_2_DOWN:第二个触摸点点击事件MotionEvent.ACTION_POINTER_1_UP:第一个触摸点松开事件MotionEvent.ACTION_POINTER_2_UP:第二个触摸点松开事件
测试代码如下:
自定义view
package com.lp.multi;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;public class MyView extends View{public MyView(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stub}public MyView(Context context, AttributeSet attrs) {super(context, attrs);// TODO Auto-generated constructor stub}public MyView(Context context) {super(context);// TODO Auto-generated constructor stub}@Overrideprotected void onDraw(Canvas canvas) {Paint mPaint = new Paint();mPaint.setColor(Color.GRAY);mPaint.setTextSize(30);canvas.drawText("呵呵", 100, 200, mPaint);}@Overridepublic boolean onTouchEvent(MotionEvent event) {int pointCount = event.getPointerCount();System.out.println(pointCount);if (pointCount == 2) {final float x0 = event.getX(event.getPointerId(0));final float y0 = event.getY(event.getPointerId(0));final float x1 = event.getX(event.getPointerId(1));final float y1 = event.getY(event.getPointerId(1));switch (event.getAction()) {case MotionEvent.ACTION_POINTER_2_DOWN:System.out.println("ACTION_POINTER_2_DOWN");break;case MotionEvent.ACTION_POINTER_1_DOWN:System.out.println("ACTION_POINTER_1_DOWN");break;case MotionEvent.ACTION_POINTER_1_UP:System.out.println("ACTION_POINTER_1_UP");break;case MotionEvent.ACTION_POINTER_2_UP:System.out.println("ACTION_POINTER_2_UP");break;case MotionEvent.ACTION_MOVE: {System.out.println("ACTION_MOVE");break;}}System.out.println(x0+" "+x1+" "+y0+" "+y1);}return true;}}
注意:
onTouchEvent返回true 要不是没有效果的
Activity
package com.lp.multi;import android.app.Activity;import android.os.Bundle;public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new MyView(this)); }}
运行结果:
10-17 17:53:32.269: INFO/System.out(11675): 110-17 17:53:32.279: INFO/System.out(11675): 210-17 17:53:32.279: INFO/System.out(11675): ACTION_POINTER_2_DOWN10-17 17:53:32.279: INFO/System.out(11675): 324.3229 201.57916 88.79375 226.6212510-17 17:53:32.289: INFO/System.out(11675): 210-17 17:53:32.289: INFO/System.out(11675): ACTION_MOVE10-17 17:53:32.299: INFO/System.out(11675): 324.3229 201.57916 88.79375 226.6212510-17 17:53:32.299: INFO/System.out(11675): 210-17 17:53:32.299: INFO/System.out(11675): ACTION_POINTER_1_UP10-17 17:53:32.309: INFO/System.out(11675): 324.3229 201.57916 88.79375 226.6212510-17 17:53:32.309: INFO/System.out(11675): 1
结论:
1、ACTION_POINTER_2_DOWN和ACTION_POINTER_1_DOWN 可能只会触发一个
2、事件只触发了一个,但是坐标都是能得到的
更多相关文章
- 根据百度地图API得到坐标和地址并在地图上显示
- Android事件分发机制——ViewGroup(二)
- Android Touch事件
- Android 教你如何通过 LocationManager 获取得到当前位置坐标
- Android中Touch事件的处理逻辑
- Android 中屏幕点击事件的实现
- Android ListView中的Button屏蔽onItemClick事件解决办法