Je souhaite qu'une action soit effectuée lorsque la vue est touchée. Cependant, les touches ne répondent pas. L'application ne plante pas, elle semble juste l'ignorer.Android: OnTouch ne répond pas.
public class CustomDrawableView extends View implements OnTouchListener
{
static final int width = 100;
static final int height = 50;
public CustomDrawableView(Context context)
{
super(context);
setFocusable(true);
setOnTouchListener(mCustomDrawableView);
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN)
{
x = 400;
return true;
}
else {
x = 300;
return false;
}
}
protected void onDraw(Canvas canvas)
{
int mCanvasHeight = canvas.getHeight();
int mCanvasWidth = canvas.getWidth();
canvas.save();
canvas.rotate(R,x,y);
if (y >= mCanvasHeight-100) {
y = 0;
}
RectF oval = new RectF(x, y, x + width, y
+ height); // set bounds of rectangle
Paint p = new Paint(); // set some paint options
p.setColor(Color.BLUE);
canvas.drawOval(oval, p);
canvas.restore();
invalidate();
}
}
J'ai essayé un tas de code différent pour le réparer. Rien de tout cela ne fait rien sauf si je change setOnTouchListener (mCustomDrawable) en mCustomDrawableView.setOnTouchListener (this) l'application se bloque. Il y a beaucoup plus de code dans l'activité que je n'ai pas mis en place.
Que dit logcat? – poitroae