package com.zking.view;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.zking.entity.Circle;
import java.util.ArrayList;
import java.util.List;
/**
*
* @time 2016/12/24 9:16
* @Version ${REV}
*/
public class MyTouchCircle extends View {
private List<Circle> circleList=new ArrayList<Circle>();
private Paint paint;
public MyTouchCircle(Context context) {
super(context);
paint = new Paint();
}
public MyTouchCircle(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (Circle circle : circleList) {
circle.drawSelf(canvas,paint);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//得到手指的行为
int action=event.getAction();
//得到手指的下标 INdex
int index=action>>8;
//得到手指的坐标
float x=event.getX(index);
float y=event.getY(index);
//得到手指的行为
int action_code=action&0xff;
//得到手指的ID(到底是拿一根手指) Id Index
int id=event.getPointerId(index);
if(action_code>=5){
action_code-=5;
}
switch (action_code) {
case MotionEvent.ACTION_DOWN:
//按下(实例化圆,将该圆加入到circleList)
Circle circle=new Circle(x,y,id);
circleList.add(circle);
break;
case MotionEvent.ACTION_UP:
//抬起
circleList.remove(getCircle(id));
break;
case MotionEvent.ACTION_MOVE:
for (int i = 0; i < circleList.size(); i++) {
//求出新的坐标
float xnew=event.getX(i);
float ynew=event.getY(i);
int idnew=event.getPointerId(i);
//得到是哪一个圆
Circle c=getCircle(idnew);
c.x=xnew;
c.y=ynew;
}
//移动
break;
}
//重新调用ondraw()
//重绘
invalidate();
return true;
}
public Circle getCircle(int id){
for (Circle circle : circleList) {
if(circle.id==id){
return circle;
}
}
return null;
}
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import com.zking.entity.Circle;
import java.util.ArrayList;
import java.util.List;
/**
*
* @time 2016/12/24 9:16
* @Version ${REV}
*/
public class MyTouchCircle extends View {
private List<Circle> circleList=new ArrayList<Circle>();
private Paint paint;
public MyTouchCircle(Context context) {
super(context);
paint = new Paint();
}
public MyTouchCircle(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
for (Circle circle : circleList) {
circle.drawSelf(canvas,paint);
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
//得到手指的行为
int action=event.getAction();
//得到手指的下标 INdex
int index=action>>8;
//得到手指的坐标
float x=event.getX(index);
float y=event.getY(index);
//得到手指的行为
int action_code=action&0xff;
//得到手指的ID(到底是拿一根手指) Id Index
int id=event.getPointerId(index);
if(action_code>=5){
action_code-=5;
}
switch (action_code) {
case MotionEvent.ACTION_DOWN:
//按下(实例化圆,将该圆加入到circleList)
Circle circle=new Circle(x,y,id);
circleList.add(circle);
break;
case MotionEvent.ACTION_UP:
//抬起
circleList.remove(getCircle(id));
break;
case MotionEvent.ACTION_MOVE:
for (int i = 0; i < circleList.size(); i++) {
//求出新的坐标
float xnew=event.getX(i);
float ynew=event.getY(i);
int idnew=event.getPointerId(i);
//得到是哪一个圆
Circle c=getCircle(idnew);
c.x=xnew;
c.y=ynew;
}
//移动
break;
}
//重新调用ondraw()
//重绘
invalidate();
return true;
}
public Circle getCircle(int id){
for (Circle circle : circleList) {
if(circle.id==id){
return circle;
}
}
return null;
}
}