Android 如何收听ValueAnimator正在设置动画的任何对象上的触摸/单击事件

Android 如何收听ValueAnimator正在设置动画的任何对象上的触摸/单击事件,android,android-animation,Android,Android Animation,我正在浏览谷歌提供的《弹跳球》api指南。我想知道是否有任何方法可以听到动态创建的球对象的触摸或单击事件。事实上,我正在尝试使用ValueAnimator类进行一个简单的游戏,该游戏要求用户触摸对象。有许多不同类型的对象(例如不同半径的球),这些对象可以是可绘制的静态图像,也可以在运行时绘制。 有没有办法检测到球的触碰? 这是我的示例ValueAnimator对象 ValueAnimator simpleAnimation = ObjectAnimator.ofFloat(myObject,"y

我正在浏览谷歌提供的《弹跳球》api指南。我想知道是否有任何方法可以听到动态创建的球对象的触摸或单击事件。事实上,我正在尝试使用
ValueAnimator
类进行一个简单的游戏,该游戏要求用户触摸对象。有许多不同类型的对象(例如不同半径的球),这些对象可以是可绘制的静态图像,也可以在运行时绘制。
有没有办法检测到球的触碰?
这是我的示例ValueAnimator对象

ValueAnimator simpleAnimation = ObjectAnimator.ofFloat(myObject,"y",startY,endY)
simpleAnimation.setDuration(something)
simpleAnimation.setInterpolator(something)
ValueAnimator startAnim = new AnimatorSet()
startAnim.play(simpleAnimation);
现在,当用户触摸我的对象时,我想做一些事情。到目前为止,我只知道这一点

    simpleAnimation.addListener()

但所有参数都不足以接触事件处理。

您可以扩展
形状文件夹
,添加一个方法来检查接触点是否在
形状文件夹

class MyShapeHolder extends ShapeHolder {

    public MyShapeHolder(ShapeDrawable s) {
        super(s);
        // TODO Auto-generated constructor stub
    }

    private boolean isTouchInside(final float x, final float y) {
        if (x < getX() + getWidth() / 2 &&
            x > getX() - getWidth() / 2 &&
            y < getY() + getHeight() / 2 &&
            y > getY() - getHeight() / 2) {
            return true;
        }
        return false;
    }

}
添加您还可以为
ShapeHolder
创建侦听器,如
OnShapeTouchListener
。这对你来说是一个很好的练习。:)

    for (int i = 0; i < balls.size(); ++i) {
        MyShapeHolder shapeHolder = balls.get(i);
        if (shapeHolder.isTouchInside(event.getX(), event.getY()))
            Log.d("TEST", "TOUCH ON BALL " + i);
        }
    }