Метод OnTouch в OnDraw

Мне нужно установить метод onTouch для прямоугольника, который я настроил, но я не знаю, как это сделать в методе OnDraw. это, но я не знаю, как здесь мой код, спасибо за помощь!

public class Tab3 extends View implements OnTouchListener
{
    int x1, x2, y1, y2;
    Rect Rect = new Rect();
    public Tab3(Context context, AttributeSet attrs)
    {
        super (context, attrs);
        x1 = 0;
        x2 = 100;
        y1 = 0;
        y2 = 100;

    }

    @Override
    protected void onDraw(Canvas canvas) 
    {
        // TODO Auto-generated method stub
        super.onDraw(canvas);


        Rect.set(x1, y1, x2, y2);

        Paint blue = new Paint();
        blue.setColor(Color.BLUE);
        canvas.drawRect(Rect, blue);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) 
    {

        return false;
    }
}

4 ответа

Решение

Во-первых, у вас может быть много проблем с

Rect Rect = new Rect();

назови это

Rect rect2 = new Rect();

или что-то в этом роде, а не Rect Rect

Небольшое выступление

Rect.set(x1, y1, x2, y2);

сделать это в

public Tab3(Context context, AttributeSet attrs)
    {
}

поскольку

  protected void onDraw(Canvas canvas) 
    {

вызывается каждый раз, когда вы делаете перекрас

invalidate();

ее вы проверите, если вы нажмете в прямоугольнике

if (rect2.contains(event.getX(),event.getY())) {

В твоем прикосновении просто поставь:

if(Rect.contains((int) event.getX(),(int) event.getY())){

я думаю, что это то, что вы просите, дайте мне знать, если нет

Читайте о классе MotionEvent.

В onTouchВы можете сделать следующие вещи:

if(Rect.contains((int) event.getX(), (int) event.getY())) {
//do something
}
return super.onTouch(View v, MotionEvent event);  //call super's method so that system would send event to you only once when you touched it.
Другие вопросы по тегам