Android动画定位问题

时间:2011-08-25 08:00:50

标签: android xml animation

我正在尝试在Android中制作两个翻译动画并遇到问题:

  1. 我正在尝试显示从一侧进入并退出另一侧的图像,并反复进行几分钟。我可以看到一个移动,但每次动画开始 - 我看到图像的闪烁一毫秒。
  2. 这是我的布局xml:

        <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical" android:background="@drawable/bg"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    
        <ImageView  android:id="@+id/anim_image" android:src="@drawable/movimage"
                    android:layout_width="wrap_content" android:layout_height="wrap_content"
                    android:visibility="invisible"  android:layout_marginTop="30dp"
        />
    
    </FrameLayout>
    

    这是我的动画xml:

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android">
    <rotate
     android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0"
     android:pivotX="40%" android:pivotY="30%" android:duration="4000" />
         <set>
            <translate 
                android:fromXDelta="200%p" android:toXDelta="-150%p" android:fromYDelta="20%"
                android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" />
        </set>
     </set>
    

    在我的java类中,我创建了一个每个onTick调用的倒数计时器:     image.startAnimation(阿尼姆);

    我也试着听动画:         anim.setAnimationListener(本);

    并添加到onAnimationEnd:         image.setVisibility(View.GONE);

    但它没有帮助我。 有谁知道我该怎么做才能解决它?

    -

    1. 我正在尝试显示一个“流星”图像 - 我创建了一个小的png文件(30px * 30px)并且我试图将它放置在屏幕的一个边缘并让它移动到另一个并且消失。但是我在动画XML中编写的每个代码都没有这样做! 任何人都可以帮我正确地编写动画吗?
    2. 我写过:翻译             android:fromXDelta =“100%p”android:toXDelta =“ - 100%p”android:fromYDelta =“0%p”             android:toYDelta =“100%p”android:duration =“500”

      它不起作用..


      编辑:我找到了解决方案:

      我发现了什么问题。我用CountDownTimer编写了一个代码来重复,而不是使用动画的重复选项。我已将XML更改为:

      <?xml version="1.0" encoding="utf-8"?>
      <set xmlns:android="http://schemas.android.com/apk/res/android" android:startOffset="1000"
      >
          <rotate
                  android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
                  android:fromDegrees="40" android:toDegrees="-40" android:toYScale="0.0"
                  android:pivotX="40%" android:pivotY="30%" android:duration="4000" />
           <set>
              <translate 
                  android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
                  android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="20%"
                  android:toYDelta="10%" android:duration="4000" android:zAdjustment="bottom" />
          </set>
       </set>
      

      现在它可以在屏幕上没有闪烁的情况下工作。 同样对于流星,我已经将XML改为:

      <?xml version="1.0" encoding="utf-8"?>
      <set xmlns:android="http://schemas.android.com/apk/res/android">
          <translate 
                  android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
                  android:fromXDelta="100%p" android:toXDelta="-100%p" android:fromYDelta="0%p"
                  android:toYDelta="100%p" android:duration="2500" android:zAdjustment="bottom" />
           <set>
           <alpha 
              android:repeatCount="infinite" android:repeatMode="restart" android:fillAfter="false"
              android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2500" />
          </set>
       </set>
      

      现在它完美无缺!

1 个答案:

答案 0 :(得分:1)

我认为在动画完成后imageView会回到原来的位置。您可以尝试在翻译动画的xml中使用android:fillAfter="true|false"(尝试其中一个)。如果您使用setFillAfter(boolean)加载动画对象,请尝试AnimationUtils