Android如何实现多点触控功能
Android如何实现多点触控功能
本篇内容介绍了“Android如何实现多点触控功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
使用了Android的系统API实现了多点触控功能,多点触控对设备的硬件有一定的要求,目前市面上的手机几乎都能实现多点触控了。
实现多点触控最关键的API:
event.getPointerCount()
意思是这事件中包含的数据的指针的数量,总是大于或等于1。可以简单理解为放在手机屏幕上的手指的数目,为什么总是大于或等于1呢?因为触发事件需要用手指去触屏,一触屏必然产生一个指针。
重写这两个函数:
一:
publicbooleanonTouchEvent(MotionEventevent)
调用一个触屏事件,通过操作event完成触屏相关事件的处理。
上代码:
publicbooleanonTouchEvent(MotionEventevent){//if(event.getX(1)==event.getX(0)&&event.getY(1)==event.getY(0))if(event.getPointerCount()==2){x2=event.getX(1);y2=event.getY(1);}x1=event.getX(0);y1=event.getY(0);myView.invalidate();Log.d("multiTouch",event.getPointerCount()+"xy1:"+x1+","+y1+"xy2:"+x2+","+y2);returnsuper.onTouchEvent(event);}
二:
protectedvoidonDraw(Canvascanvas)
通过重写onDraw来画图,Canvas的意思是“ holds the “draw” calls to draw something”(官方文档的介绍,觉得这话已经很通俗易懂了)
上代码:
protectedvoidonDraw(Canvascanvas){super.onDraw(canvas);canvas.drawColor(Color.WHITE);Paintpaint=newPaint();paint.setAntiAlias(true);paint.setStyle(Paint.Style.FILL);paint.setColor(Color.BLUE);canvas.drawCircle(x1,y1,30,paint);canvas.drawRect(x2-30,y2-30,x2+30,y2+30,paint);paint.setColor(Color.RED);canvas.drawLine(x1,y1,x2,y2,paint);ShadermShader=newLinearGradient(0,0,100,100,newint[]{Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW},null,Shader.TileMode.REPEAT);paint.setShader(mShader);paint.setTextSize(14);canvas.drawText("xy1:"+x1+";"+y1,80,50,paint);canvas.drawText("xy2:"+x2+";"+y2,80,120,paint);}
实现onDraw时需要在继承自View的一个类中完成
privateclassTestViewextendsView{publicTestView(Contextcontext){super(context);}......}
完成以上操作以后主程序就简单了,初始化然后调用之前写好的代码
publicclassmultiTouchextendsActivity{publicfloatx1,x2,y1,y2;privateTestViewtestView;@OverridepublicvoidonCreate(BundlesavedInstanceState){requestWindowFeature(Window.FEATURE_NO_TITLE);x1=30;y1=30;x2=200;y2=30;super.onCreate(savedInstanceState);testView=newTestView(this);setContentView(testView);}
实现效果图
圆圈代表第一次触屏时的手指,正方形表示第二次触屏时的手指。
“Android如何实现多点触控功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注恰卡编程网网站,小编将为大家输出更多高质量的实用文章!
推荐阅读
-
怎么使用Android基准配置文件Baseline Profile方案提升启动速度
-
HTML5如何实现禁止android视频另存为
-
学java好还是学php好?
-
android怎么实现多点触摸应用
-
Android怎么实现手势划定区域裁剪图片
-
android怎么实现简单的矩形裁剪框
-
Android单选多选按钮怎么使用
-
Android中如何利用oncreate获取控件高度或宽度
Android中如何利用oncreate获取控件高度或宽度本篇内容...
-
Android中怎么使用onSaveInstanceState()方法
Android中怎么使用onSaveInstanceState()方法...
-
Android中如何解决嵌套滑动冲突