1.代码演示:

package com.example.my_android_pointstouch;import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.MotionEvent;import android.view.View;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/7/9. */public class MyView extends View {    List circles=new ArrayList<>();    public MyView(Context context) {        super(context);    }    public MyView(Context context, @Nullable AttributeSet attrs) {        super(context, 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);    }    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        Paint paint=new Paint();        for (Circle circle : circles) {            circle.drawSelf(canvas,paint);        }    }    @Override    public boolean onTouchEvent(MotionEvent event) {        //获取手指的行为        int action=event.getAction();        int action_code=action&0xff;        //手指的下标index        int pointIndex=action>>8;        //获取手指的坐标        float x=event.getX(pointIndex);        float y=event.getY(pointIndex);        //获取手指的名字id        int pointId=event.getPointerId(pointIndex);        if (action_code>=5){            action_code-=5;        }        switch (action_code){            case MotionEvent.ACTION_DOWN:                //实例化圆                Circle c=new Circle(x,y,pointId);                //将圆添加到集合中                circles.add(c);                break;            case MotionEvent.ACTION_UP:                circles.remove(get(pointId));                break;            case MotionEvent.ACTION_MOVE:                for (int i = 0; i < event.getPointerCount(); i++) {                    int id=event.getPointerId(i);                    get(id).x=event.getX(i);                    get(id).y=event.getY(i);                }                break;        }        //重新调用onDraw 重绘        invalidate();        return true;    }    //圆的下标    public  Circle get(int pointId){        for (Circle circle : circles) {            if (circle.pointId==pointId){                return  circle;            }        }        return null;    }}

(2)圆package com.example.my_android_pointstouch;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import java.util.Random;/** * Created by Administrator on 2017/7/9. */public class Circle {    public float x;    public float y;    public int r=100;    public int pointId;    int red;    int green;    int blue;    Random random=new Random();    public Circle(float x,float y,int pointId){        this.x=x;        this.y=y;        this.pointId=pointId;        red=random.nextInt(255);        green=random.nextInt(255);        blue=random.nextInt(255);    }    public  void drawSelf(Canvas canvas, Paint paint){        paint.setColor(Color.rgb(red,green,blue));        canvas.drawCircle(x,y,r,paint);    }}

(3)MainActivitypackage com.example.my_android_pointstouch;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import java.util.Random;/** * Created by Administrator on 2017/7/9. */public class Circle {    public float x;    public float y;    public int r=100;    public int pointId;    int red;    int green;    int blue;    Random random=new Random();    public Circle(float x,float y,int pointId){        this.x=x;        this.y=y;        this.pointId=pointId;        red=random.nextInt(255);        green=random.nextInt(255);        blue=random.nextInt(255);    }    public  void drawSelf(Canvas canvas, Paint paint){        paint.setColor(Color.rgb(red,green,blue));        canvas.drawCircle(x,y,r,paint);    }}


 

更多相关文章

  1. Android(安卓)技术总结(016)—— 使用百度地图api获取当前位置
  2. TextView获取行数
  3. Android(安卓)获取系统自带相机的照片
  4. 自定义Android侧滑菜单控件
  5. android实现从网上获取数据
  6. android 获取控件宽度高度
  7. Android(安卓)Calendar的运用
  8. Android学习之使用HttpURLConnection下载文件
  9. 模拟抽奖的九宫格动画效果

随机推荐

  1. Android小项目之八 界面细节
  2. Android(安卓)h264 硬编码 软编码
  3. Android初始化的时候获取加载的布局的宽
  4. android 事件处理机制之requestDisallowI
  5. 疯狂Android第一章:Android环境配置以及
  6. Android(安卓)TextView的drawLeft、drawR
  7. Android如何打开/关闭系统解锁服务?—典型
  8. Android(安卓)quikboot
  9. 【quickhybrid】H5和Native交互原理
  10. 安卓unit与instrumentation测试教程