android 多点触控
16lz
2021-12-04
2011.10.17——— android 多点触控
参考: http://blog.csdn.net/ldj299/article/details/6422547
主要API:
Java代码
测试代码如下:
自定义view
Java代码
注意:
onTouchEvent返回true 要不是没有效果的
Activity
Java代码
运行结果:
Java代码
结论:
1、ACTION_POINTER_2_DOWN和ACTION_POINTER_1_DOWN 可能只会触发一个
2、事件只触发了一个,但是坐标都是能得到的
参考: http://blog.csdn.net/ldj299/article/details/6422547
主要API:
Java代码
- event.getPointerCount():触控点的个数
- getPointerId(intpointerIndex):pointerIndex从0到getPointerCount-1,返回一个触摸点的标示
- getX(intpointerIndex):通过标示来得到X坐标
- getY(intpointerIndex):通过标示来得到Y坐标
- MotionEvent.ACTION_POINTER_1_DOWN:第一个触摸点点击事件
- MotionEvent.ACTION_POINTER_2_DOWN:第二个触摸点点击事件
- MotionEvent.ACTION_POINTER_1_UP:第一个触摸点松开事件
- MotionEvent.ACTION_POINTER_2_UP:第二个触摸点松开事件
测试代码如下:
自定义view
Java代码
- packagecom.lp.multi;
- importandroid.content.Context;
- importandroid.graphics.Canvas;
- importandroid.graphics.Color;
- importandroid.graphics.Paint;
- importandroid.util.AttributeSet;
- importandroid.util.Log;
- importandroid.view.MotionEvent;
- importandroid.view.View;
- publicclassMyViewextendsView{
- publicMyView(Contextcontext,AttributeSetattrs,intdefStyle){
- super(context,attrs,defStyle);
- //TODOAuto-generatedconstructorstub
- }
- publicMyView(Contextcontext,AttributeSetattrs){
- super(context,attrs);
- //TODOAuto-generatedconstructorstub
- }
- publicMyView(Contextcontext){
- super(context);
- //TODOAuto-generatedconstructorstub
- }
- @Override
- protectedvoidonDraw(Canvascanvas){
- PaintmPaint=newPaint();
- mPaint.setColor(Color.GRAY);
- mPaint.setTextSize(30);
- canvas.drawText("呵呵",100,200,mPaint);
- }
- @Override
- publicbooleanonTouchEvent(MotionEventevent){
- intpointCount=event.getPointerCount();
- System.out.println(pointCount);
- if(pointCount==2){
- finalfloatx0=event.getX(event.getPointerId(0));
- finalfloaty0=event.getY(event.getPointerId(0));
- finalfloatx1=event.getX(event.getPointerId(1));
- finalfloaty1=event.getY(event.getPointerId(1));
- switch(event.getAction()){
- caseMotionEvent.ACTION_POINTER_2_DOWN:
- System.out.println("ACTION_POINTER_2_DOWN");
- break;
- caseMotionEvent.ACTION_POINTER_1_DOWN:
- System.out.println("ACTION_POINTER_1_DOWN");
- break;
- caseMotionEvent.ACTION_POINTER_1_UP:
- System.out.println("ACTION_POINTER_1_UP");
- break;
- caseMotionEvent.ACTION_POINTER_2_UP:
- System.out.println("ACTION_POINTER_2_UP");
- break;
- caseMotionEvent.ACTION_MOVE:{
- System.out.println("ACTION_MOVE");
- break;
- }
- }
- System.out.println(x0+""+x1+""+y0+""+y1);
- }
- returntrue;
- }
- }
注意:
onTouchEvent返回true 要不是没有效果的
Activity
Java代码
- packagecom.lp.multi;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- publicclassMainActivityextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(newMyView(this));
- }
- }
运行结果:
Java代码
- 10-1717:53:32.269:INFO/System.out(11675):1
- 10-1717:53:32.279:INFO/System.out(11675):2
- 10-1717:53:32.279:INFO/System.out(11675):ACTION_POINTER_2_DOWN
- 10-1717:53:32.279:INFO/System.out(11675):324.3229201.5791688.79375226.62125
- 10-1717:53:32.289:INFO/System.out(11675):2
- 10-1717:53:32.289:INFO/System.out(11675):ACTION_MOVE
- 10-1717:53:32.299:INFO/System.out(11675):324.3229201.5791688.79375226.62125
- 10-1717:53:32.299:INFO/System.out(11675):2
- 10-1717:53:32.299:INFO/System.out(11675):ACTION_POINTER_1_UP
- 10-1717:53:32.309:INFO/System.out(11675):324.3229201.5791688.79375226.62125
- 10-1717:53:32.309:INFO/System.out(11675):1
结论:
1、ACTION_POINTER_2_DOWN和ACTION_POINTER_1_DOWN 可能只会触发一个
2、事件只触发了一个,但是坐标都是能得到的
更多相关文章
- [android源码下载索引贴】微信+二维码那都不是事......
- Android解决父控件拦截子控件手势滑动事件的问题
- android手机客户端上传文件,java servlet服务器端接收并保存到服
- 【Android】使用LiveData KTX Builder让代码更简洁
- Android下模拟按键输入
- 一个简单的iPhone项目及代码
- android布局文件中的include
- android touch事件解析
- 打android的patch