android的多点触摸效果
来源:互联网 发布:淘宝优惠券采集软件 编辑:程序博客网 时间:2024/05/14 05:05
1.获取点击xy轴的下标,实现触摸效果。
获取XY画一个圆并且自动从下变大,直到消失不见。
效果图如下:
代码如下:
1.写一个实体类,用于存写触摸点击的XY轴下表,并根据获得的下标用半径把圆画出来,半径默认为0
package com.example.android_pointstouch;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;import java.util.Random;/** * Created by Administrator on 2017/7/9 0009. */public class Circle { public float x; public float y; public int r; public int pointId; private int red; private int green; private int blue; Random random=new Random(); public Circle(float x,float y,int r,int pointId){ this.x=x; this.y=y; this.r=r; this.pointId=pointId; this.red=random.nextInt(255); this.green=random.nextInt(255); this.blue=random.nextInt(255); } //画圆 public void drawSelf(Canvas canvas, Paint paint){ paint.setColor(Color.rgb(red,green,blue));//颜色 canvas.drawCircle(x,y,r,paint); paint.setStyle(Paint.Style.STROKE); }}
2.利用线程的调用改变圆半径的大小
package com.example.android_pointstouch;import android.content.Context;import android.content.Intent;import android.graphics.Canvas;import android.graphics.Paint;import android.os.Handler;import android.os.Message;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * Created by Administrator on 2017/7/9 0009. */public class MyButton extends View { private List<Circle> circleList=new ArrayList<>(); private float x; private float y; private int indexid; int i=0; public MyButton(Context context) { super(context); } public MyButton(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public MyButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } //画画 @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Paint paint=new Paint(); paint.setStyle(Paint.Style.STROKE); for (Circle circle : circleList) { circle.r+=10; circle.drawSelf(canvas,paint); } } //触摸 @Override public boolean onTouchEvent(MotionEvent event) { int action = event.getAction(); //手指的下标Index int pointIndex = action >> 8; int action_code= action&0xff; x = event.getX(pointIndex);//X轴 y = event.getY(pointIndex);//Y轴 indexid = event.getPointerId(pointIndex);//触摸的下标 // Log.i("text","pointIndex="+pointIndex+"action_code="+action_code+"indexid="+indexid); if(action_code>=5){ action_code-=5; } switch (action_code){ case MotionEvent.ACTION_DOWN://点击 i++; Circle circle=new Circle(x,y,0,indexid);//进来一次就NEW一个对象 circleList.add(circle);//加入集合 new my().start();//启动线程 break; case MotionEvent.ACTION_UP://移开 //circleList.remove(delete(indexid)); break; case MotionEvent.ACTION_MOVE://移动 /* for (int i = 0; i <event.getPointerCount() ; i++) { int id= event.getPointerId(i); delete(id).x=event.getX(i); delete(id).y=event.getY(i); }*/ break; } invalidate(); return true; } //移除 public Circle delete(int indexid){ for (Circle circle : circleList) { if(circle.pointId==indexid){ return circle; } } return null; } //线程 改变圆大小 @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } class my extends Thread{ @Override public void run() { for (int i = 0; i <10; i++) { try { sleep(110); postInvalidate();//回调 } catch (InterruptedException e) { e.printStackTrace(); } if(i==9){ circleList.remove(0); } } } }}
阅读全文
0 0
- android的多点触摸效果
- android的多点触摸(制作水波涟漪效果)
- Android多点触摸的实现
- Android多点触摸的实现
- Android多点触摸的判断
- Android中的多点触摸交互处理,可以达到缩放图片的效果
- android支持多点触摸的补丁
- Android多点触摸的实现 (转)
- Android多点触摸的实现(1)
- Android多点触摸的实现(2)
- Android多点触摸的实现(3)
- android 和linux的多点触摸解析
- android多点触摸事件的一些事
- Android-单点触摸-多点触摸
- android多点触摸demo
- Android 多点触摸接口
- android多点触摸demo
- Android : 多点触摸
- Windows下的OSG环境配置注意事项
- 官方发布的ThinkPHP3.1快速入门教程系列
- mybatis模糊查询写法
- Python学习笔记(五)——日期和时间
- 常用的正则表达式
- android的多点触摸效果
- 2017.7.8~2017.7.9总结
- 数据库金额方面存储
- LeetCode 74. Search a 2D Matrix
- JavaScript 基础知识
- 笔记:新手的Hive指南
- 单词数
- HDU4055 (dp计数)
- DLL重载