【问题标题】:Can Anyone Tell me Why All Rects fires to same Activity谁能告诉我为什么所有 Rects 都会触发相同的 Activity
【发布时间】:2012-05-09 11:50:49
【问题描述】:

*MyImage 类扩展 View 并实现 ontouchListener * enter code here

公共类 MyImage 扩展 View 实现 OnTouchListener {

Bitmap orignal;
Bitmap scaled;
Matrix m;
Context ctext;
ArrayList<Rect> rect;

我有四个矩形,所有矩形都用于移动到 diff diff 活动 矩形矩形0; 矩形矩形1; 矩形矩形2; 矩形矩形3; 矩形矩形4; 私人 int X_POSITION; 私有 int Y_POSITION;

public MyImage(Context context) {
    super(context);

    ctext = context;

}


@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    // TODO Auto-generated method stub
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

@Override
public View findFocus() {
    // TODO Auto-generated method stub
    return super.findFocus();
}

@Override
public boolean isPressed() {
    // TODO Auto-generated method stub
    return super.isPressed();

}

@Override
public boolean isSelected() {
    // TODO Auto-generated method stub
    return super.isSelected();

}



@Override
public boolean onTouchEvent(MotionEvent event) {


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

    System.out.println(X_POSITION + "\t" +Y_POSITION); 

这里出现的问题我不知道为什么所有矩形都会触发相同的活动以及如何解决它以便所有矩形都触发不同的活动

    switch (event.getAction()) {

    case MotionEvent.ACTION_DOWN:


        Intent i = new Intent(ctext , SelecterImage.class);
        ctext.startActivity(i);

    }

返回真;

}

@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




}   


}

强文本

【问题讨论】:

  • 我不明白,你指的是一个独特的活动(SelecterImage.class),你希望如何解雇其他一些活动?如果你想纠正这个问题,你不应该在 MotionEvent.ACTION 上应用这种情况,而是在 getX() getY() 上应用这种情况,然后将这些值与预定义的区域进行比较,然后启动所需的活动!
  • 你能告诉我如何使用 Rect 移动到另一个活动
  • 我使用 rectangle0.contains(X_POSITION , Y_POSITION).......但是 dsnt 显示任何东西
  • X 和 Y 的 if() 值在外部显示,但如果 dsnt 显示在内部...
  • 我真的不明白你在说什么。您在 onTouchEvent 上恢复 X_POSITION 和 Y_POSITION,然后您只需查找哪个矩形确实包含该位置。你最后的评论是什么意思?

标签: java android


【解决方案1】:

首先确保 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); 
        }

        ....

    } 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-03
    • 1970-01-01
    • 2016-04-25
    • 2017-10-09
    • 2015-03-22
    • 1970-01-01
    • 2021-04-10
    相关资源
    最近更新 更多