Android-如何使移动屏幕上的对象扩展Button

时间:2012-01-20 07:43:29

标签: java android button extends

在我正在开发的应用程序中,我有一个扩展表面视图的类,另一个用于处理所有计算的类,以确定应在屏幕上绘制对象的位置和时间。现在我有一种hacky方式来注册屏幕点击,每次点击都会解析对象列表,最近的对象会点击。当屏幕上只有3个或4个对象,但是当我有更多的点击注册错误的对象时,这种方法有效。

我想要做的是让屏幕上的对象扩展按钮类,这样我就可以在单击时将MotionEvent传递给它们。但是由于我所拥有的课程的设置方式,目前对我如何做到这一点有点困惑。

是否有人可能知道任何有关扩展按钮类以用于移动屏幕对象的教程?

2 个答案:

答案 0 :(得分:1)

如果我理解正确,您是否正在尝试确定哪些对象已被点击?

我知道这不是你要求的,但是当我实现过去的自定义视图时,我通常会像这样处理点击检测:

我得到你想要点击的对象的x和y坐标。在SurfaceView类中的onTouchEvent(MotionEvent事件)方法中,使用一些if语句检查单击的x和y是否在对象的范围内。

这里有一些代码可以更好地说明我在说什么:

@Override
public boolean onTouchEvent(MotionEvent event) 
{
    // If the user touches the space occupied by object1
    if(event.getAction() == MotionEvent.ACTION_DOWN 
            && event.getX() <= object1.xPosition + object1.width 
            && event.getX() >= object1.xPosition
            && event.getY() >= object1.yPosition 
            && event.getY() < object1.yPosition + object1.height)
    {
            // The click was in the bounds of object1's current location
        object1.doSomething();
    }
    // ......
}

希望这是有道理的并且有所帮助。

答案 1 :(得分:1)

我认为你有点混合。 Button通常用于布局(xml布局的东西)。当您使用表面视图时,您(很可能)需要实现自己的“按钮”。 但是,可能只是在表面视图顶部覆盖一个框架视图并将按钮放在该视图上。