2011.10.17——— android 多点触控
参考: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、事件只触发了一个,但是坐标都是能得到的



更多相关文章

  1. 根据百度地图API得到坐标和地址并在地图上显示
  2. Android事件分发机制——ViewGroup(二)
  3. Android Touch事件
  4. Android 教你如何通过 LocationManager 获取得到当前位置坐标
  5. Android中Touch事件的处理逻辑
  6. Android 中屏幕点击事件的实现
  7. Android ListView中的Button屏蔽onItemClick事件解决办法

随机推荐

  1. 入职一个月,我在项目中犯了的哪些错?
  2. 强大的 Python 任务自动化工具!invoke 十
  3. Python在计算内存时应该注意的问题?
  4. 老大,咱们前端要不要招个妹子?
  5. 我的入职体验,高手如云,美女也如云!
  6. GUI实战|Python做一个文档图片提取软件
  7. 用Python爬取b站弹幕,看大家还会接受《爱
  8. 动态加密?看我如何见招拆招爬取某点评全站
  9. 收藏这些API,获取网易云音乐数据超轻松
  10. Fabric 源码学习:如何实现批量管理远程服