我想要一个初始时不可见的View
,当我按下按钮时,它可以以淡入动画的形式变为可见。我使用AlphaAnimation
来实现淡入效果。问题是,如果我将视图设置为不可见,则无法看到动画效果。
我想要一个初始时不可见的View
,当我按下按钮时,它可以以淡入动画的形式变为可见。我使用AlphaAnimation
来实现淡入效果。问题是,如果我将视图设置为不可见,则无法看到动画效果。
假设您有一个名为imageView
的ImageView
和一个动画文件your_fade_in_anim.xml
位于res\anim\文件夹中:
ImageView imageView = (ImageView) findViewById(R.id.imageView);
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim);
// Now Set your animation
imageView.startAnimation(fadeInAnimation);
你的XML
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="[duration (in milliseconds)]"
android:repeatCount="infinite" />
</set>
将括号替换为实际持续时间。
为动画提供一个AnimationListener
,并在动画开始时使视图可见。
http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html
不要使用无限重复次数并隐藏/显示您的视图,建议只是不重复动画,并最初将 alpha 通道设置为最大。然后您可以使用:
<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:interpolator="@android:anim/accelerate_interpolator"
android:duration="[duration (in milliseconds)]"
android:repeatCount="0" />
</set>
您已经完成了。无需侦听器、隐藏或显示。就是这么简单。
fadeInAnimation.setFillAfter(true);
。 - Oleg Vaskevich