在Android中运行时创建动画

时间:2010-11-14 10:22:32

标签: android

我可以使用下面的XML文件

<set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/decelerate_interpolator">

 <translate android:fromXDelta="100%" android:toXDelta="0%" android:duration="500" />

</set>

并从代码中加载此xml AnimationUtils.loadAnimation(mContext,com ..... R.anim.slidein)

一切正常

但是现在由于某种原因,我需要在不使用XML的情况下做同样的事情 如何使用代码创建相同的动画 我试过这样的事情

TranslateAnimation in = new TranslateAnimation(1.0f,0.0f,0.0f,0.0f);


    in.setInterpolator(AnimationUtils.loadInterpolator(mContext,
                        android.R.anim.accelerate_interpolator));

    in.setDuration(500);

但没有工作,没有任何动画

我认为问题在于百分比,在xml中我指定了百分比,但是在TranslateAnimation构造函数中我如何指定百分比

2 个答案:

答案 0 :(得分:5)

你是对的。您使用的构造函数创建具有绝对值(像素)的动画。您需要使用another constructor。像这样举例如:

TranslateAnimation in = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 1.0f,
    Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f);

尝试第一个和第三个参数。尝试使用Animation.RELATIVE_TO_PARENT来满足您的需求。

答案 1 :(得分:0)

试试这个(使用百分比'p'):

 <translate android:fromXDelta="100%p" android:toXDelta="0%p" android:duration="500" />