Страница 1 из 1

canvas перетаскивание

Добавлено: 14 авг 2014, 15:15
alexmx
Доброго времени суток.
Как реализовать перетаскивание например кружка
Пробую делать так:
[syntax=java]package ru.startandroid.develop.p1421drawingfigure;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.graphics.RectF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawView(this));
}

class DrawView extends View {
float touchX = 0;
float touchY = 0;
Paint p;
Rect rect;
RectF rectf;
Boolean drag = false;

public DrawView(Context context) {
super(context);
p = new Paint();
rect = new Rect();
rectf = new RectF(0,0,50,50);
}


@Override
protected void onDraw(Canvas canvas) {

p.setAntiAlias(true);

p.setColor(Color.RED);

p.setStrokeWidth(10);

p.setStyle(Paint.Style.STROKE);

rectf.offsetTo(touchX - 25, touchY - 25);

canvas.drawArc(rectf, 90, -360, false, p);





}

public boolean onTouchEvent(MotionEvent event){

if(event.getAction() == MotionEvent.ACTION_DOWN){
touchX = event.getX();
touchY = event.getY();
drag = true;
invalidate();

}

if(event.getAction() == MotionEvent.ACTION_MOVE){
if(drag){
touchX =touchX + event.getRawX();
touchY = event.getRawY();
invalidate();
}
}

if(event.getAction() == MotionEvent.ACTION_UP){
touchX = 0;
touchY = 0;
invalidate();
}

return false;
}

}

}[/syntax]
Но срабатывает только ACTION_DOWN

Re: canvas перетаскивание

Добавлено: 14 авг 2014, 15:24
rezak90
потому что нужно возвращать true в onTouchEvent

Re: canvas перетаскивание

Добавлено: 14 авг 2014, 15:29
alexmx
Спасибо)))