80,351
社区成员
发帖
与我相关
我的任务
分享
class MyView extends View {
private float leftX;
private float rightX;
private float circleY;
private static final float circleR = 10.0f;
public MyView(Context context) {
super(context);
leftX = 20.0f;
rightX = 200.0f;
}
@Override
protected void onDraw(Canvas canvas) {
circleY = canvas.getHeight()/2;
//Paint自己加
canvas.drawCircle(circleY, leftX, circleR, null);
canvas.drawCircle(circleY, rightX, circleR, null);
canvas.drawLine(leftX, circleY, rightX, circleY, null);
super.onDraw(canvas);
}
private static final int TOUCH_LEFT = 0;
private static final int TOUCH_RIGHT = 1;
private static final int TOUCH_NONE = 2;
private int touchWho = TOUCH_NONE;
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if(isTouchCircle(circleR, leftX, circleY, event.getX(), event.getY()))
touchWho = TOUCH_LEFT;
else if(isTouchCircle(circleR, rightX, circleY, event.getX(), event.getY()))
touchWho = TOUCH_RIGHT;
else
touchWho = TOUCH_NONE;
return true;
case MotionEvent.ACTION_MOVE:
if(touchWho == TOUCH_LEFT){
leftX = event.getX();
invalidate();
}else if(touchWho == TOUCH_RIGHT){
rightX = event.getX();
invalidate();
}else{
break;
}
return true;
case MotionEvent.ACTION_UP:
if(touchWho != TOUCH_NONE)
touchWho = TOUCH_NONE;
return true;
}
return super.onTouchEvent(event);
}
private boolean isTouchCircle(float r,float cx,float cy,float mx,float my){
if((mx>=cx-r||mx<=cx+r)&&(my>=cy-r||my<=cy+r))
return true;
return false;
}
}
伪代码大概这样自己改一下