控制动画速度

时间:2010-06-04 19:24:32

标签: android

我的应用程序有一个小的Web视图,我希望在页面加载完成后将其设置为动画。我的代码如下所示:

view.setVisibility(View.VISIBLE);
TranslateAnimation anim=new TranslateAnimation(0.0f, 0.0f,
                                  view.getLayoutParams().height, 0.0f);
anim.setDuration(5);
anim.setInterpolator(new LinearInterpolator());
view.startAnimation(anim);

它动画很好,但我似乎无法控制速度。我已经将setDuration()的值设置为5,500,500,5000000 - 所有这些都没有明显的效果。

我还需要做些什么来控制动画持续时间吗?

BTW我的基础SDK是1.6。

2 个答案:

答案 0 :(得分:1)

我使用XML方法为布局设置动画。

translate.xml

<?xml version="1.0" encoding="utf-8"?>
<set
     xmlns:android="http://schemas.android.com/apk/res/android"
    android:interpolator="@android:anim/accelerate_interpolator" >  
      <translate 
        android:fromYDelta="-100%" 
        android:toYDelta="0"
        android:duration="500" />"
       />
</set>

要控制动画持续时间,您可以尝试将android:duration ="500"更改为您需要的值。

layout_anim_controller.xml

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
        android:animationOrder="reverse"
        android:animation="@anim/translate" />

设置布局的动画

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
   > 

    <WebView 
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layoutAnimation="@anim/layout_anim_controller"
    />

</LinearLayout>

也许这对正确的方向有所帮助。

答案 1 :(得分:0)

这是我在测试中发现的内容。

  1. 这可能是也可能不是WebViews特有的。我的原始代码是从动画LinearLayout的示例中复制的。
  2. 如果您尝试在WebView上使用setVisibility(View.GONE)和setVisibility(View.Visible),则设置动画的持续时间不会产生任何影响。我能让动画正常工作的唯一方法是在WebView上禁用这些方法。
  3. 如果使用Java创建动画,则设置动画的持续时间不会产生任何影响,无论您使用setVisibility执行什么操作。同样,这可能仅适用于WebViews。
  4. 我可以让动画在WebView上工作的唯一方法是取消对setVisibility的调用,并使用prforpop在上一个答案中建议的基于XML的动画。
  5. 同样,YMMV和这可能只适用于WebViews。