我正在使用TransitionDrawable为按钮创建交叉渐变动画。按一次后,该按钮将打开我的服务并进行转换。再次按下时,该按钮将关闭我的服务并发生反向转换。此转换的xml代码如下: -
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/main_off" />
<item android:drawable="@drawable/main_on" />
</transition>
问题是,当活动暂停时,一旦恢复,TransitionDrawable将恢复为Drawable main_off(即索引/第0层的那个)。我可以检查我的服务是否在onResume()中运行,因此我的标志变量已准备就绪。我无法管理的是如何将TransitionDrawable设置为该xml文件中的一个Drawable,即如果服务正在运行,如何在onResume()中将TransitionDrawable设置为main_on?我尝试使用setDrawableByLayerId()方法但它似乎没有工作。不知道我是不是没有正确使用它。任何帮助表示赞赏。感谢。
答案 0 :(得分:1)
没关系,找到了解决方案。
我将以下代码放在onResume()中: -
if(DRAWABLE_STATE==0)
TD_BG.resetTransition();
else if(DRAWABLE_STATE==1) {
TD_BG.resetTransition();
TD_BG.startTransition(0);}
在上面的代码中,DRAWABLE_STATE是跟踪服务是否打开的标志。 resetTransition()设置TransitionDrawable以显示第一层,因此当我的服务关闭时,它将显示main_off。如果我的服务开启(即DRAWABLE_STATE = 1),我只需切换到第一层然后转换得如此之快(0ms),用户就不会看到差异。