在Android中运行时创建动画

Mon*_*nty 4 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>
Run Code Online (Sandbox Code Playgroud)

并从像AnimationUtils.loadAnimation这样的代码加载这个xml(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构造函数中我如何指定百分比

Ser*_*tov 5

你是对的.您使用的构造函数创建具有绝对值(像素)的动画.您需要使用另一个构造函数.像这样例如:

TranslateAnimation in = new TranslateAnimation(
    Animation.RELATIVE_TO_SELF, 1.0f,
    Animation.RELATIVE_TO_SELF, 0.0f, 0, 0.0f, 0, 0.0f);
Run Code Online (Sandbox Code Playgroud)

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