2011.10.17——— android 多点触控
参考: http://blog.csdn.net/ldj299/article/details/6422547

主要API:

Java代码
  1. event.getPointerCount():触控点的个数
  2. getPointerId(intpointerIndex):pointerIndex从0到getPointerCount-1,返回一个触摸点的标示
  3. getX(intpointerIndex):通过标示来得到X坐标
  4. getY(intpointerIndex):通过标示来得到Y坐标
  5. MotionEvent.ACTION_POINTER_1_DOWN:第一个触摸点点击事件
  6. MotionEvent.ACTION_POINTER_2_DOWN:第二个触摸点点击事件
  7. MotionEvent.ACTION_POINTER_1_UP:第一个触摸点松开事件
  8. MotionEvent.ACTION_POINTER_2_UP:第二个触摸点松开事件


测试代码如下:

自定义view

Java代码
  1. packagecom.lp.multi;
  2. importandroid.content.Context;
  3. importandroid.graphics.Canvas;
  4. importandroid.graphics.Color;
  5. importandroid.graphics.Paint;
  6. importandroid.util.AttributeSet;
  7. importandroid.util.Log;
  8. importandroid.view.MotionEvent;
  9. importandroid.view.View;
  10. publicclassMyViewextendsView{
  11. publicMyView(Contextcontext,AttributeSetattrs,intdefStyle){
  12. super(context,attrs,defStyle);
  13. //TODOAuto-generatedconstructorstub
  14. }
  15. publicMyView(Contextcontext,AttributeSetattrs){
  16. super(context,attrs);
  17. //TODOAuto-generatedconstructorstub
  18. }
  19. publicMyView(Contextcontext){
  20. super(context);
  21. //TODOAuto-generatedconstructorstub
  22. }
  23. @Override
  24. protectedvoidonDraw(Canvascanvas){
  25. PaintmPaint=newPaint();
  26. mPaint.setColor(Color.GRAY);
  27. mPaint.setTextSize(30);
  28. canvas.drawText("呵呵",100,200,mPaint);
  29. }
  30. @Override
  31. publicbooleanonTouchEvent(MotionEventevent){
  32. intpointCount=event.getPointerCount();
  33. System.out.println(pointCount);
  34. if(pointCount==2){
  35. finalfloatx0=event.getX(event.getPointerId(0));
  36. finalfloaty0=event.getY(event.getPointerId(0));
  37. finalfloatx1=event.getX(event.getPointerId(1));
  38. finalfloaty1=event.getY(event.getPointerId(1));
  39. switch(event.getAction()){
  40. caseMotionEvent.ACTION_POINTER_2_DOWN:
  41. System.out.println("ACTION_POINTER_2_DOWN");
  42. break;
  43. caseMotionEvent.ACTION_POINTER_1_DOWN:
  44. System.out.println("ACTION_POINTER_1_DOWN");
  45. break;
  46. caseMotionEvent.ACTION_POINTER_1_UP:
  47. System.out.println("ACTION_POINTER_1_UP");
  48. break;
  49. caseMotionEvent.ACTION_POINTER_2_UP:
  50. System.out.println("ACTION_POINTER_2_UP");
  51. break;
  52. caseMotionEvent.ACTION_MOVE:{
  53. System.out.println("ACTION_MOVE");
  54. break;
  55. }
  56. }
  57. System.out.println(x0+""+x1+""+y0+""+y1);
  58. }
  59. returntrue;
  60. }
  61. }


注意:
onTouchEvent返回true 要不是没有效果的



Activity
Java代码
  1. packagecom.lp.multi;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. publicclassMainActivityextendsActivity{
  5. /**Calledwhentheactivityisfirstcreated.*/
  6. @Override
  7. publicvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(newMyView(this));
  10. }
  11. }



运行结果:


Java代码
  1. 10-1717:53:32.269:INFO/System.out(11675):1
  2. 10-1717:53:32.279:INFO/System.out(11675):2
  3. 10-1717:53:32.279:INFO/System.out(11675):ACTION_POINTER_2_DOWN
  4. 10-1717:53:32.279:INFO/System.out(11675):324.3229201.5791688.79375226.62125
  5. 10-1717:53:32.289:INFO/System.out(11675):2
  6. 10-1717:53:32.289:INFO/System.out(11675):ACTION_MOVE
  7. 10-1717:53:32.299:INFO/System.out(11675):324.3229201.5791688.79375226.62125
  8. 10-1717:53:32.299:INFO/System.out(11675):2
  9. 10-1717:53:32.299:INFO/System.out(11675):ACTION_POINTER_1_UP
  10. 10-1717:53:32.309:INFO/System.out(11675):324.3229201.5791688.79375226.62125
  11. 10-1717:53:32.309:INFO/System.out(11675):1



结论:

1、ACTION_POINTER_2_DOWN和ACTION_POINTER_1_DOWN 可能只会触发一个
2、事件只触发了一个,但是坐标都是能得到的


更多相关文章

  1. [android源码下载索引贴】微信+二维码那都不是事......
  2. Android解决父控件拦截子控件手势滑动事件的问题
  3. android手机客户端上传文件,java servlet服务器端接收并保存到服
  4. 【Android】使用LiveData KTX Builder让代码更简洁
  5. Android下模拟按键输入
  6. 一个简单的iPhone项目及代码
  7. android布局文件中的include
  8. android touch事件解析
  9. 打android的patch

随机推荐

  1. 总结android中Intent的用法
  2. GridView的属性
  3. android混淆出错更新progurad
  4. Android中屏幕密度和图片大小的关系分析
  5. android 菜单导航 (Fragment + RadioGrou
  6. android system setup and building (3)
  7. Java編程和Android編程的區別
  8. 转:Android 设置EditText光标颜色及粗细
  9. 如何解决Eclipse开发android程序的编译错
  10. Android XML Editor cannot process this