【问题标题】:Allowing rectangle to be clickable - android允许矩形可点击 - android
【发布时间】:2011-08-31 14:06:20
【问题描述】:

我用画布写了一个视图,其中包含许多矩形。我希望将这些矩形用作打开新活动的按钮。我该怎么做?

【问题讨论】:

  • 这些答案有帮助吗?
  • 感谢大家的帮助。我成功创建了可点击的矩形,但如果矩形很小,则很难点击它(仅在 5-6 次点击尝试后)
  • @LiorZ Hai 你能提供这个的工作代码吗?

标签: android


【解决方案1】:

您需要小心 Suri Sahani 示例,onTouchEvent 会在任何限定为触摸事件的操作上调用,这意味着按下、释放、移动手势等 (Android Event Listener Documentation)。要正确使用 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()
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多