Движение одновременно двух растровых изображений на виде с MotionEvent
Я создал два растровых изображения на своем виде, используя следующий класс (Простая 2D-графика в Android), и блуждание, чтобы добиться этого растрового изображения, может перемещаться независимо. Я вызываю метод motionevent для этого.
Текущая проблема, я не понимаю, почему только один объект движется прямо в следующем коде. например с этим кодом перемещается только «не» растровое изображение, я хотел бы перемещать оба растровых изображения независимо друг от друга
Сценарий: я могу использовать свои два пальца, по одному для каждого объекта, чтобы независимо перемещать растровые изображения. но я не знаю, как этого добиться.
public class TouchView extends View {
private Drawable cross;
private Rect crossBounds = null;
private Drawable not;
private Rect notBounds = null;
private int x1, y1, x2, y2 ;
boolean flag = true;
private void intialize ()
{
int w1 = cross.getIntrinsicWidth();
int h1 = cross.getIntrinsicHeight();
x1 = 100;
y1 = 100;
crossBounds = new Rect(x1-w1/2, y1-w1/2, x1+w1/2, y1+h1/2);
int w = not.getIntrinsicWidth();
int h = not.getIntrinsicHeight();
x2 = 300;
y2 = 300;
notBounds = new Rect(x2-w/2, y2-w/2, x2+w/2, y2+h/2);
}
public TouchView(Context context) {
super(context);
// Get a representation of the image
Resources resources = context.getResources();
cross = (Drawable) resources.getDrawable(R.drawable.cross);
not = (Drawable) resources.getDrawable(R.drawable.not);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i("TouchView.onTouchEvent", "event = " + event);
if(event.getAction() == MotionEvent.ACTION_DOWN ||
event.getAction() == MotionEvent.ACTION_MOVE) {
int touchCounter = event.getPointerCount();
if (touchCounter ==2 && getHeight ()==y1){
int w = cross.getIntrinsicWidth();
int h = cross.getIntrinsicHeight();
x1 = (int) event.getX();
crossBounds = new Rect(x1-w/2, y1-w/2, x1+w/2, y1+h/2);
}
else
{
int w1 = not.getIntrinsicWidth();
int h1 = not.getIntrinsicHeight();
x2 = (int) event.getX();
notBounds = new Rect(x2-w1/2, y2-w1/2, x2+w1/2, y2+h1/2);
}
// Request the system to redraw the view (call onDraw at
// some point in the future)
// From a non-UI thread, call postInvalidate instead
invalidate();
return true;
}
return false;
}
@Override
protected void onDraw(Canvas canvas) {
Log.i("TouchView.onDraw", "");
// Background
Paint bgPaint = new Paint();
bgPaint.setColor(Color.WHITE);
canvas.drawPaint(bgPaint);
if (flag == true){
intialize ();
cross.setBounds(crossBounds);
cross.draw(canvas);
not.setBounds(notBounds);
not.draw(canvas);
flag=false;
}
if(crossBounds != null) {
cross.setBounds(crossBounds);
cross.draw(canvas);
not.setBounds(notBounds);
not.draw(canvas);
}
}
}