繁体   English   中英

动态布局动画

[英]Dynamically animate a layout

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

    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文档的信息,请参阅动画文档,以获取系统内置的Interpolator对象的列表。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM