动态动画布局



我必须以编程方式实现(子)布局翻译动画,因为翻译的距离是在运行时确定的。我设置了下面的翻译动画

    TranslateAnimation tanim = new TranslateAnimation(
        TranslateAnimation.ABSOLUTE, 0.0f,
        TranslateAnimation.ABSOLUTE, 0.0f,
        TranslateAnimation.ABSOLUTE, 0.0f,
        TranslateAnimation.ABSOLUTE, 100);

可以向下滑动布局,例如

问题1:这个布局将在动画完成后恢复到原来的位置。我需要设置什么来保持它的位置吗?我怀疑这是由于布局被移出父布局(父布局有参数layout_width="wrap_content")。如果是这种情况,我如何调整父布局以适应子布局的变化?

问题2:我必须提供一个自定义插值器类来实现减速效果吗?如果有,你知道我在哪里可以找到一个例子吗?在xml中我可以这样做

android:interpolator="@android:anim/accelerate_interpolator"
是否有一个等效的Android代码来实现加速/减速效果编程?

要保持动画之后的位置,您需要使用fillAfter属性。是的,在公共api中有加速和减速插补器类

TranslateAnimation tanim = new TranslateAnimation(
        TranslateAnimation.ABSOLUTE, 0.0f,
        TranslateAnimation.ABSOLUTE, 0.0f,
        TranslateAnimation.ABSOLUTE, 0.0f,
        TranslateAnimation.ABSOLUTE, 100);
tanim.setFillAfter(true);
tanim.setInterpolater(new DecelerateInterpolator());
//tanim.setInterpolater(new AccelerateInterpolator());

查看动画文档中有关fillAfter的信息,以及系统内内置的Interpolator对象列表。

最新更新