我需要显示淡入淡出的图像按钮(以及进出等等......) 可以使用setAlpha设置透明度,但我如何淡入淡出?我的意思是我不能在另一个线程上做,因为你需要在UI线程上做这些事情,对吗?
我想可以用动画完成,但我没有找到任何东西,因为我没有任何动画经验,也不知道要搜索什么......
实际上我真正想要的是淡化一张图像和另一张图像,但我想最简单的方法是将第一张图像按钮放在第二张图像按钮之下,然后淡化第二张图像按钮。或者有更简单的方法吗?
答案 0 :(得分:74)
以下是我现在使用的解决方案,适用于低于12的API级别:
AlphaAnimation anim = new AlphaAnimation(1.0f, 0.0f);
anim.setDuration(1000);
anim.setRepeatCount(NUM_REPEATS);
anim.setRepeatMode(Animation.REVERSE);
button.startAnimation(anim);
答案 1 :(得分:22)
这是我们在项目中使用的动画。 Spinner是一个视图,因此您可以使用imageview更改此视图。确实有两张图像在彼此之上,一张可见的图像是不可见的。这就是我们这样做的方式。希望它有所帮助。
spinner.setVisibility(View.VISIBLE);
spinner.setAlpha(0);
spinner.animate().setDuration(200).alpha(1).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
spinner.setVisibility(View.VISIBLE);
}
});
infoActivityContent.animate().setDuration(200).alpha(0).setListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
infoActivityContent.setVisibility(View.GONE);
mainPresenter.logout();
}
});
答案 2 :(得分:5)
您必须阅读Android developers
中的Crossfading Two Views。在本教程中解释了如何做你想做的事。
答案 3 :(得分:0)
您可以将第一张图像的多个连续帧变形为第二张图像并返回,然后将其定义为animation-list
并在onCreate中开始动画
button_frames.xml:
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/frame1" android:duration="100" />
<item android:drawable="@drawable/frame2" android:duration="100" />
....
布局:
<ImageView android:id="@+id/button"
android:background="@drawable/button_frames"/>
OnCreate中:
ImageView button= (ImageView)findViewById(R.id.button);
mAnimation = (AnimationDrawable) animationView.getBackground();
button.postDelayed(new Runnable() {
public void run() {
mAnimation.start();
}
}, 100);
答案 4 :(得分:0)
在科特林:
view.animate().alpha(1f).setDuration(1000)
.setInterpolator(AccelerateInterpolator()).start()
您可以在AnimatorListenerAdapter
中添加setListener
来处理其他视图状态。
答案 5 :(得分:-2)
实现动画类(您可以通过XML加载它或动态创建它)。
然后你可以通过API setAnimation(动画动画)设置它。