0

我想在 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 - 代表绿色)?

4

2 回答 2

0

在这一点上,你不能有超过 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);
于 2022-02-07T16:37:52.930 回答
0

根据文档,TransitionDrawable 的构造函数采用一个数组,该数组可能包含两个以上的可绘制对象

公共 TransitionDrawable (Drawable[] 层)

在 API 级别 3 中添加
使用指定的图层列表创建一个新的过渡可绘制对象。这个drawable至少需要2层才能正常工作。

虽然我没有使用过这个类,所以如果它不起作用,你可以设置两个 TransitionDrawables,一个用于从颜色A 到 B的过渡,另一个用于从B 到 C的过渡。然后你必须在第一个结束后的第二个转换上调用 start ,它看起来像是从A 到 B 到 C的转换。

于 2015-12-20T22:20:15.140 回答