OnDraw中的OnTouch方法

时间:2012-05-14 00:22:37

标签: android ontouchevent ondraw

我需要将onTouch方法设置为我已设置的rect,但我不知道如何在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 个答案:

答案 0 :(得分:2)

你的onTouch中的

就是:

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

我认为这就是你的要求让我知道它不是

答案 1 :(得分:1)

首先,您可能会遇到很多问题

Rect Rect = new Rect();

将其命名为

Rect rect2 = new Rect();

或类似的东西,而不是Rect Rect

小型表演tipp

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())) {

答案 2 :(得分:0)

了解MotionEvent类。

答案 3 :(得分:0)

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.