当我们进入 Activity 时,我正在为一个 View 设置动画以向上滑动到它的最终位置。我的问题是 View 在开始时暂时出现在最终位置,然后跳转到初始位置然后动画开始。我怎样才能避免这种情况?
代码
protected void onResume() {
mImageView.setVisibility(View.INVISIBLE);
super.onResume();
Animator animator = new ObjectAnimator();
animator = AnimatorInflater.loadAnimator(this,R.animator.slide_up_lock_icon);
//animator.setStartDelay(500);
animator.setTarget(mImageView);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
mImageView.setVisibility(View.VISIBLE);
animator.start();
动画师 XML:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<objectAnimator
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="1000"
android:propertyName="translationY"
android:valueFrom="500"
android:valueTo="0"
android:valueType="floatType"
android:startOffset="500"
/>
设置和重置可见性有所帮助,但动画并不总是按预期工作
最佳答案
您必须移动 mImageView
到它开始动画的位置。
一种方法是在动画开始之前执行 mImageView.setTranslationY(500)
..
像这样:
mImageView.setVisibility(View.INVISIBLE);
mImageView.setTranslationY(500);
Animator animator = new ObjectAnimator();
animator = AnimatorInflater.loadAnimator(this,R.animator.slide_up_lock_icon);
//animator.setStartDelay(500);
animator.setTarget(mImageView);
animator.setInterpolator(new AccelerateDecelerateInterpolator());
mImageView.setVisibility(View.VISIBLE);
animator.start();
希望对您有所帮助...!
关于android View 在动画之前暂时显示在最终位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610440/