0

我有一个简单的圆圈动画,从屏幕的一半到底部附近。它下降得很慢,我的意图是让它可以点击,这样当它被点击时它会做一些事情。我希望可以在从开始位置到停止位置的任何位置单击它。

圆圈是用 an 实现的ImageView,我添加了clickableandonClick属性。当我按下圆圈开始的地方的位置时,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>
4

1 回答 1

0

您可以使用AnimatorUpdateListener

bubblefall.addUpdateListener(new AnimatorUpdateListener(){
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        //get animated value using
        animation.getAnimatedValue();

        //then handle the click listener
    }

});
于 2013-10-20T14:59:59.717 回答