Java 有人能告诉我为什么所有的RECT都会触发相同的活动吗

Java 有人能告诉我为什么所有的RECT都会触发相同的活动吗,java,android,Java,Android,*MyImage类扩展了视图并实现了ontouchListener* 在这里输入代码 公共类MyImage扩展视图实现OnTouchListener{ Bitmap orignal; Bitmap scaled; Matrix m; Context ctext; ArrayList<Rect> rect; 这里出现的问题我不知道为什么所有的矩形都激发到同一个活动,如何解决这个问题,使所有的矩形激发到不同的活动 返回true } @Override public void onDr

*MyImage类扩展了视图并实现了ontouchListener* 在这里输入代码

公共类MyImage扩展视图实现OnTouchListener{

Bitmap orignal;
Bitmap scaled;
Matrix m;
Context ctext;
ArrayList<Rect> rect;
这里出现的问题我不知道为什么所有的矩形都激发到同一个活动,如何解决这个问题,使所有的矩形激发到不同的活动

返回true

}

@Override
public void onDraw(Canvas canvas) {
    Paint paint = new Paint();

    int X_WIDTH = canvas.getWidth();
    int Y_HEIGHT = canvas.getHeight() / 2;

    System.out.println(X_WIDTH + "\n" + Y_HEIGHT);

    Paint rectanglePaint = new Paint();
    rectanglePaint.setARGB(255, 0, 0, 0);
    rectanglePaint.setStrokeWidth(2);
    rectanglePaint.setColor(Color.BLUE);

    rectangle0 = new Rect(10, 420, 60, 380);
    rectangle1 = new Rect(70, 420, 120, 380);


    rectangle2 = new Rect(130, 420, 180, 380);
    rectangle3 = new Rect(190, 420, 240, 380);
    rectangle4 = new Rect(250, 420, 300, 380);


    canvas.drawRect(rectangle0, rectanglePaint);

    canvas.drawRect(rectangle1, rectanglePaint);

    canvas.drawRect(rectangle2, rectanglePaint);

    canvas.drawRect(rectangle3, rectanglePaint);

    canvas.drawRect(rectangle4, rectanglePaint);

    scaled = Bitmap.createScaledBitmap(orignal, X_WIDTH, Y_HEIGHT, false);

    canvas.drawBitmap(scaled, 0, 0, paint);

}


void setBitmap(Bitmap bitmap) {
    // TODO Auto-generated method stub

    orignal = bitmap;

}



@Override
public boolean onTouch(View v, MotionEvent event) {
    return false;
    // TODO Auto-generated method stub




}   


}

强文本

首先确保onTouchEvent工作正常,并像您一样返回X和Y,然后

@Override 
public boolean onTouchEvent(MotionEvent event) { 


    X_POSITION = (int)event.getX(); 
    Y_POSITION = (int)event.getY(); 

    if (event.getAction == MotionEvent.ACTION_DOWN)
    {
        if (rectangle0.contains(X_POSITION,Y_POSITION))
        {
           Intent i = new Intent(ctext , Activity1.class); 
           ctext.startActivity(i); 
        }
        else if (rectangle1.contains(X_POSITION,Y_POSITION))
        {
           Intent i = new Intent(ctext , Activity2.class); 
           ctext.startActivity(i); 
        }

        ....

    } 
}

我不明白,你指的是一个独特的activity SelecterImage.class,你希望如何激发其他一些活动?如果你想纠正这一点,你不应该在MotionEvent.ACTION上应用大小写,而应该在getX getY上应用大小写,然后将这些值与预定义区域进行比较,然后启动所需的活动!你能告诉我如何使用Rect移动到下一个吗er activity我使用矩形0.containsX_位置,Y_位置……但是dsnt显示任何东西如果X和Y的值显示在外面,但如果dsnt显示在里面……我真的不明白你在说什么。你在onTouchEvent上恢复X_位置和Y_位置,然后你只需查找哪个矩形包含该位置。你是什么意思你最后的评论是什么?
}

@Override
public void onDraw(Canvas canvas) {
    Paint paint = new Paint();

    int X_WIDTH = canvas.getWidth();
    int Y_HEIGHT = canvas.getHeight() / 2;

    System.out.println(X_WIDTH + "\n" + Y_HEIGHT);

    Paint rectanglePaint = new Paint();
    rectanglePaint.setARGB(255, 0, 0, 0);
    rectanglePaint.setStrokeWidth(2);
    rectanglePaint.setColor(Color.BLUE);

    rectangle0 = new Rect(10, 420, 60, 380);
    rectangle1 = new Rect(70, 420, 120, 380);


    rectangle2 = new Rect(130, 420, 180, 380);
    rectangle3 = new Rect(190, 420, 240, 380);
    rectangle4 = new Rect(250, 420, 300, 380);


    canvas.drawRect(rectangle0, rectanglePaint);

    canvas.drawRect(rectangle1, rectanglePaint);

    canvas.drawRect(rectangle2, rectanglePaint);

    canvas.drawRect(rectangle3, rectanglePaint);

    canvas.drawRect(rectangle4, rectanglePaint);

    scaled = Bitmap.createScaledBitmap(orignal, X_WIDTH, Y_HEIGHT, false);

    canvas.drawBitmap(scaled, 0, 0, paint);

}


void setBitmap(Bitmap bitmap) {
    // TODO Auto-generated method stub

    orignal = bitmap;

}



@Override
public boolean onTouch(View v, MotionEvent event) {
    return false;
    // TODO Auto-generated method stub




}   


}
@Override 
public boolean onTouchEvent(MotionEvent event) { 


    X_POSITION = (int)event.getX(); 
    Y_POSITION = (int)event.getY(); 

    if (event.getAction == MotionEvent.ACTION_DOWN)
    {
        if (rectangle0.contains(X_POSITION,Y_POSITION))
        {
           Intent i = new Intent(ctext , Activity1.class); 
           ctext.startActivity(i); 
        }
        else if (rectangle1.contains(X_POSITION,Y_POSITION))
        {
           Intent i = new Intent(ctext , Activity2.class); 
           ctext.startActivity(i); 
        }

        ....

    } 
}