Я хочу нарисовать круг на экране, который будет перемещаться при удержании пальца. В коде есть метод, который изменяет цвет экрана в этом случае, но как я могу изменить положение круга? помогите помочь!onTouch + canvas + android
package com.example.canva;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
public class MyActivity extends Activity implements View.OnTouchListener {
/**
* Called when the activity is first created.
*/
private float x;
private float y;
private String sDown;
private String sMove;
private String sUp;
private DrawView dr;
private Paint p;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dr = new DrawView(this);
dr.setOnTouchListener(this);
setContentView(dr);
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
x = motionEvent.getX();
y = motionEvent.getY();
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN: // нажатие
sDown = "Down: " + x + "," + y;
sMove = ""; sUp = "";
break;
case MotionEvent.ACTION_MOVE: // движение
sMove = "Move: " + x + "," + y;
dr.changeColor((int)-x);
dr.getX(x);
dr.getY(y);
break;
case MotionEvent.ACTION_UP: // отпускание
case MotionEvent.ACTION_CANCEL:
sMove = "";
sUp = "Up: " + x + "," + y;
break;
}
return true;
}
}
class DrawView extends View {
private Paint p;
public DrawView(Context context) {
super(context);
p = new Paint();
p.setColor(Color.RED);
}
@Override
protected void onDraw(Canvas canvas) {
canvas.drawCircle(getX(),getY(),50,p);
invalidate();
}
public float getX(float X){
return X;
}
public float getY(float Y){
return Y;
}
public void changeColor(int color){
this.setBackgroundColor(color);
}
}
int x = getX(), y = getY(); public void refresh (float x, float y) { this.x = x; this.y = y; invaliate(); } – user2954895