android View 在动画之前暂时显示在最终位置

标签 android android-animation

当我们进入 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/

相关文章:

android - 等待 Kotlin 协程在 onCreateView() 中完成

android - 如何将android路径字符串获取到 Assets 文件夹中的文件?

android - 每次用户滚动到末尾时仅对回收器 View 的最后一项进行动画处理并使其可见

android - AnimationDrawable 以编程方式没有动画列表 xml

java - 如何在android中创建平滑的高度变化动画

java - Eclipse - Java 数组 ID 值相等。无法独立更改值

android - greendao listview 实体中的所有数据

java - 将 LinkedHashset 内容复制到新的 ArrayList?

android - 是否有可能在android动画中获取当前帧数

android - 从左向右移动图像然后旋转动画