android视图暂时显示在动画之前的最终位置

时间:2017-08-10 09:57:40

标签: android android-animation

当我们进入活动时,我将动画制作动画向上滑动到最终位置。我的问题是视图暂时出现在开头的最终位置,然后跳到初始位置,然后动画开始。我该如何防止这种情况?

代码

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();

Animator 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"
    />

设置和重置可见性有所帮助,但动画确实按预期工作

2 个答案:

答案 0 :(得分:2)

您必须将<{1}}移动到开始设置动画的位置。

一种方法是在动画开始之前做mImageView ..

像这样:

mImageView.setTranslationY(500)

希望它有帮助..!

答案 1 :(得分:0)

也许这可以解决你的问题。

活动

protected void onResume() {
    super.onResume();
    //Here tv is your view
    tv.setVisibility(View.GONE);
    //Create an animation
    Animation animation = AnimationUtils.loadAnimation(this, R.anim.slide_up_lock_icon);
    //Set your view's visibility to Visible
    tv.setVisibility(View.VISIBLE);
    //Start animation on tv
    tv.startAnimation(animation);
}

Res anim

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
  <translate
      android:duration="1000"
      android:fromYDelta="yourValueHere%"
      android:toYDelta="otherValueHere" />
</set>