使矩形可点击 - 安卓

3

我用canvas写了一个View,其中包含许多矩形。我希望这些矩形能够被用作按钮,以打开一个新的activity。我该如何实现?


这些答案中有任何帮助的吗? - EpicOfChaos
谢谢大家的帮助。我成功创建了可点击的矩形,但如果矩形很小,很难点击它(只有尝试5-6次后才能点击)。 - LiorZ
@LiorZ,你能提供这个的可用代码吗? - Taruni
2个回答

11

你需要小心处理Suri Sahani的例子,onTouchEvent会在任何被认定为触摸事件的动作上被调用,这意味着按下、释放、移动手势等(Android事件监听器文档)。要正确使用onTouchEvent,你需要检查MotionEvent的类型。

List<Rect> retangles;//Assume these have been drawn in your draw method.

@Override
public boolean onTouchEvent(MotionEvent event) {
    int touchX = event.getX();
    int touchY = event.getY();
    switch(event){
        case MotionEvent.ACTION_DOWN:
            System.out.println("Touching down!");
            for(Rect rect : rectangles){
                if(rect.contains(touchX,touchY)){
                    System.out.println("Touched Rectangle, start activity.");
                    Intent i = new Intent(<your activity info>);
                    startActivity(i);
                }
            }
            break;
        case MotionEvent.ACTION_UP:
            System.out.println("Touching up!");
            break;
        case MotionEvent.ACTION_MOVE:
            System.out.println("Sliding your finger around on the screen.");
            break;
    }
    return true;
}

当您使用event.getX()event.getY()时,会返回float值,因此您必须将event.getX()event.getY()强制转换为int以便与int类型变量一起使用。另外,在switch语句中的event应该是event.getAction() - Zach H

1
在你的onTouchEvent()中,只需捕获x和y值,然后可以使用Rect类中的contains(int x, int y)方法。如果contains(x, y)返回true,则触摸事件发生在矩形内部,然后只需创建意图并启动新活动即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接