android 视图暂时显示在动画之前的最终位置
android view momentarily shows at final position before animation
当我们进入 activity 时,我正在为视图设置动画以向上滑动到其最终位置。我的问题是视图在开始时暂时出现在最终位置,然后跳转到初始位置然后动画开始。我该如何防止这种情况?
代码
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();
希望对您有所帮助..!
也许这可以解决您的问题。
Activity
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);
}
资源动画
<?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>
当我们进入 activity 时,我正在为视图设置动画以向上滑动到其最终位置。我的问题是视图在开始时暂时出现在最终位置,然后跳转到初始位置然后动画开始。我该如何防止这种情况?
代码
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();
希望对您有所帮助..!
也许这可以解决您的问题。
Activity
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);
}
资源动画
<?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>