我在xml中有一个简单的翻译动画
anim.xml
<Translate
xmlns:...
android:fromYDelta="100%p"
android:toYDelta="0%p"
android:duration="1500" />
我用它从屏幕底部向上滑动布局:
View layoutStatus = activity.findViewById(R.id.layoutSettingsStatus);
layoutStatus.setVisibility(View.VISIBLE);
Animation a = AnimationUtils.loadAnimation(context, R.anim.slide_up);
layoutStatus.startAnimation(a);
但是在执行此代码之后它才开始直到1500ms(或可能更长)。当我将动画持续时间从1500更改为5000时,它在执行代码后5秒内不会执行。持续时间属性正常工作,翻译需要与开始时间一样长。
它像android:duration也适用于android:startOffset,为什么会这样?
答案 0 :(得分:0)
从你的网页摘要中我不知道为什么会发生这种情况,我需要更多代码。但请查看此课程ViewPropertyAnimator,它可以让您的生活和代码在将来更轻松。在您的案例中使用它的示例:
layoutStatus.animate().translationY(toY).setDuration(1500);
// toY is float and takes coordinates on the screen
您只需要一行代码即可获得所需的全部内容。 该类还包含所有可用的方法,如setStartDelay(),setInterpolator(),setListener()等... TranslateAnimation和ViewPropertyAnimation / ObjectAnimation之间存在一些差异,我解释了here。