我有一个简单的圆圈动画,从屏幕的一半到底部附近。它下降得很慢,我的意图是让它可以点击,这样当它被点击时它会做一些事情。我希望可以在从开始位置到停止位置的任何位置单击它。
圆圈是用 an 实现的ImageView
,我添加了clickable
andonClick
属性。当我按下圆圈开始的地方的位置时,onClick
处理程序按预期工作,但是在动画期间它似乎没有“跟踪”图像。
我找到了AnimationListener
课程,当动画结束时,我能够更新我ImageView
的坐标onAnimationEnd()
,但是在动画运行时似乎没有办法做到这一点。
当我的动画移动时,是否有一个类/方法可以用来更新处理程序onClick
的位置?如果没有,我应该使用不同类型的动画来实现我的目标吗?
相关代码:
我的 ImageView 的 xml 布局:
<ImageView
android:id="@+id/bubble"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:scaleType="fitCenter"
android:src="@drawable/bubble"
android:clickable="true"
android:onClick="popBubble"
android:contentDescription="bubble"
android:layout_below="@id/sun"
/>
onCreate
启动动画的方法中的Java源代码:
ImageView bubble = (ImageView) findViewById(R.id.bubble);
Animation bubblefall = AnimationUtils.loadAnimation(this, R.anim.bubble_fall);
bubblefall.setAnimationListener(new MyAnimationListener());
bubble.startAnimation(bubblefall);
设置我的 AnimationListener 的 Java 源代码:
private class MyAnimationListener implements AnimationListener{
@Override
public void onAnimationEnd(Animation arg0) {
ImageView local = (ImageView) findViewById(R.id.bubble);
local.clearAnimation();
local.offsetTopAndBottom(50);
动画 XML:
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false"
android:duration="10000"
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator" >
<translate
android:fromYDelta="10%p"
android:toYDelta="60%p" />
<alpha
android:fromAlpha="0.7"
android:toAlpha="0.7" />
</set>