0

我正在使用 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() 方法,但它似乎不起作用。不确定我是否只是没有正确使用它。任何帮助表示赞赏。谢谢。

4

1 回答 1

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),我只需切换到第一层,然后转换速度如此之快(0 毫秒),用户看不到差异。

于 2013-07-30T05:44:18.320 回答