这篇文章主要为大家详细介绍了机器人检测手机多点触摸点数的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了机器人检测手机多点触摸点数的具体代码,供大家参考,具体内容如下
多点触摸点数效果图
Circle.java
包com。zking。管理员。g 160628 _ Android 19 _ points touch
导入安卓。图形。画布;
导入安卓。图形。颜色;
导入安卓。图形。油漆;
导入Java。util。随机;
/**
*由管理员于2017年七月9日创建。
*/
公共阶层圈{
公共浮动x;
公共浮动y;
public int r=100//半径
公共int id//手指的名字
//三原色(每一个(同国际组织)国际组织类型的取值都是255)
int红色
(同Internationalorganizations)国际组织绿色;
(同Internationalorganizations)国际组织蓝;
//随机数
Random Random=new Random();
公共圆(浮点x,浮点y,整数id) {
this.x=x
this.y=y
this.id=id
红色=随机。nextint(255);
绿色=随机。nextint(255);
蓝色=随机。nextint(255);
}
//画自己
public void draw self(Canvas Canvas,Paint paint){
//设置颜色随机
paint.setColor(Color.rgb(红、绿、蓝));
canvas.drawCircle(x,y,r,paint);
}
}
MainActivity.java
包com。zking。管理员。g 160628 _ Android 19 _ points touch
导入安卓。支持。V7。app。app compat活动;
导入安卓。OS。捆绑;
公共类主要活动扩展AppCompatActivity {
@覆盖
受保护的void onCreate(Bundle saved instancestate){
超级棒。oncreate(savedInstanceState);
setContentView(新建我的视图(this));
}
}
MyView.java
包com。zking。管理员。g 160628 _ Android 19 _ points touch
导入安卓。内容。语境;
导入安卓。图形。画布;
导入安卓。图形。油漆;
导入安卓。支持。注释。可空;
导入安卓。util。attributeset
导入安卓。查看。运动事件;
导入安卓。查看。查看;
导入Java。util。ArrayList
导入Java。util。列表;
/**
*由管理员于2017年七月9日创建。
*/
公共类我的视图扩展视图{
//全局变量(单点触摸)
//私有浮动x;
//私有浮动y;
//private int r=100;
//定义圆的集合
list circle circles=new ArrayList();
公共我的视图(上下文上下文){
超级(上下文);
}
公共我的视图(上下文上下文,@可空属性集attrs){
超级(上下文,attrs);
}
public MyView(Context context,@Nullable AttributeSet attrs,int defStyleAttr) {
super(context,attrs,defStyleAttr);
}
public MyView(Context context,@Nullable AttributeSet attrs,int defStyleAttr,int defStyleRes) {
super(context,attrs,defStyleAttr,defStyleRes);
}
@覆盖
受保护的void onDraw(画布画布){
super.onDraw(画布);
//画笔
油漆油漆=新油漆();
//画圆(单点触摸)
//canvas.drawCircle(x,y,r,paint);
for (Circle circle : circles) {
//把画布和画笔传进去(运行第一次进入什么都没有,所有默认的圆也就没了)
circle.drawSelf(画布、颜料);
}
}
@覆盖
公共布尔onTouchEvent(运动事件事件){
//获取手指的行为
int action=事件。get action();
int action _ code=action0xff
//手指的下标索引
int pointIndex=action8//右移8
//获取手指的坐标
浮点x=事件。getx(点指数);
浮点y=事件。gety(点指数);
//获取手指的名字(身份证)
int id=事件。getpointerid(点索引);
if(action_code=5){
action _ code-=5;
}
开关(动作代码){//动作代码单点触摸是012,多点触摸562
//案例五://多点触摸的按下时5
案例运动事件ACTION_DOWN://0按下
//实例化圆
Circle circle=new Circle(x,y,id);
//将圆添加到集合中
圆圈。加(圈);
打破;
案例运动事件. ACTION_UP://1抬起
//调用拿圆的方法(拿到是哪个圆我集合就移除,然后重新绘制)
circles . remove(get(id));
打破;
Caseevent.action _ move://2 move
//得到所有手指的个数(循环所有的圆得到他的ID,然后用当前的圆重新分配每个圆的xy)
for(int I=0;I event . getpointercount();i ) {
//根据下标获取ID
int did=event . getpointerid(I);
//根据ID得到新的圆(I是当前手指的下标,因为我们根据下标得到xy)
得到(做了)。x=event . getx(I);
得到(做了)。y=event . gety(I);
}
打破;
}
//在主线程调用中重新调用onDraw进行重绘
invalidate();
返回true
}
//这个方法的目的是取圆
public Circle get(int id){
for (Circle circle : circles) {
//判断(获取各圈id等。然后等你传过去的ID。如果是你想要的圈子,就回到过去)
if(circle.id==id){
回圈;
}
}
返回null
}
}
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。