【问题标题】:Transition Drawable - 3 options过渡 Drawable - 3 个选项
【发布时间】:2015-12-20 22:04:34
【问题描述】:
我想在 3 个可绘制对象之间更改按钮的样式:“正常”、“绿色”和“红色”。我使用了 TransitionDrawable,但它只适用于 2 层。
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button" />
<item android:drawable="@drawable/buttongreen" />
</transition>
我将如何实现另一个“android:drawable”,或者除了TransitionDrawable,还有其他方法可以实现吗?如何根据输入在可绘制对象之间切换(0 - 代表红色,1 - 代表绿色)?
【问题讨论】:
标签:
android
android-layout
android-drawable
transitiondrawable
【解决方案1】:
TransitionDrawable 的构造函数采用一个数组,根据文档,该数组可能包含两个以上的可绘制对象
public TransitionDrawable(可绘制[]层)
在 API 级别 3 中添加
使用
指定的图层列表。为此,至少需要 2 层
可绘制以正常工作。
虽然我没有使用过这个类,所以万一它不起作用,你可以设置两个TransitionDrawables,一个用于从颜色A到B的过渡,另一个用于B 到 C。然后你必须在第一个结束后的第二个转换中调用 start,它看起来就像是从 A 到 B 到 C 的转换。
【解决方案2】:
此时你不能有超过 2 层。
所以,我是这样做的:
myView.setBackgroundResource(R.drawable.transition_drawable_green_yellow);
TransitionDrawable transition = (TransitionDrawable) myView.getBackground();
transition.startTransition(2000);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
myView.setBackgroundResource(R.drawable.transition_drawable_yellow_red);
TransitionDrawable transition = (TransitionDrawable) myView.getBackground();
transition.startTransition(2000);
}
}, 2000);