public class view extends View {
private Paint paint;
//中心點座標
private float pointX = 500;
private float pointY =800;
//控制是否可以移動的變量 true的時候可以移動
private boolean xmovetrue;
private boolean ymovetrue;
public view(Context context) {
super(context);
}
public view(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
paint.setStrokeWidth(5);
paint.setColor(Color.RED);
paint.setAntiAlias(true);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLine(pointX+20000,pointY,pointX-20000,pointY,paint);
canvas.drawLine(pointX,pointY+20000,pointX,pointY-20000,paint);
}
public boolean onTouchEvent(MotionEvent event) {
// event.getAction()判斷事件的類型
switch (event.getAction()) {
//按下的事件
case MotionEvent.ACTION_DOWN:
float touchX = event.getX();
float touchY= event.getY();
if (touchX > pointX-2000 && touchX < pointX+2000 && touchY<pointY+20 && touchY>pointY-20) {
xmovetrue = true;
Toast.makeText(getContext(), "我按下了x軸", Toast.LENGTH_LONG).show();
}
if (touchY >pointY-2000 && touchY < pointY+2000 && touchX<pointX+20 && touchX>pointX-20 ) {
ymovetrue = true;
Toast.makeText(getContext(), "我按下了y軸", Toast.LENGTH_LONG).show();
}
if (touchY<pointY+20 && touchY>pointY-20 && touchX<pointX+20 && touchX>pointX-20) {
xmovetrue = true;
ymovetrue = true;
Toast.makeText(getContext(), "我按下了x軸和Y軸", Toast.LENGTH_LONG).show();
}
break;
//移動的事件
case MotionEvent.ACTION_MOVE:
float x = event.getX();
float y = event.getY();
if (xmovetrue==true) {
pointY =y;
invalidate();
}
if(ymovetrue==true){
pointX =x;
invalidate();
}
if (xmovetrue==true&&ymovetrue==true){
pointX =x;
pointY =y;
invalidate();
}
break;
//擡起的事件
case MotionEvent.ACTION_UP:
Toast.makeText(getContext(), "擡起",Toast.LENGTH_SHORT).show();
xmovetrue = false;
ymovetrue = false;
break;
}
return true;
}
}
使用View繪製可以移動的座標軸
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.