我有两个渐变可绘制文件(其中一个示例):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:angle="90"
android:startColor="#DBDBDB"
android:endColor="#F0F0F0"
android:type="linear" />
</shape>
</item>
</selector>
我有一个可绘制的过渡:
<?xml version="1.0" encoding="UTF-8"?>
<transition xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/gradient_c" />
<item android:drawable="@drawable/gradient_e" />
</transition>
我想以编程方式将 Activity 的背景从 gradient_c
淡入淡出到 gradient_e
(以及反向等)。我正在使用此代码:
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rlRAM);
TransitionDrawable 过渡 = (TransitionDrawable) rl.getBackground();
//TransitionDrawable 过渡 = (TransitionDrawable) getWindow().getDecorView().getBackground();
过渡.startTransition(500);
但是,当我尝试运行代码时出现错误:
08-02 12:04:32.223:E/AndroidRuntime(12646):java.lang.RuntimeException:无法启动 Activity ComponentInfo {com.blogspot.appsversatile.performancer/com.example.app.RAM}:java。 lang.ClassCastException:android.graphics.drawable.StateListDrawable无法转换为android.graphics.drawable.TransitionDrawable
我只想将 Activity 的背景淡入另一个渐变(来自可绘制文件)。我怎样才能实现这个目标?
我接受了下面的答案,因为他给了我答案,但帖子没有准确解释。
我解决这个问题的方法是将我的RelativeLayout背景应用到过渡可绘制对象:
android:background="@drawable/transition
.
然后我就使用了:
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rlRAM);
TransitionDrawable 过渡 = (TransitionDrawable) rl.getBackground();
过渡.startTransition(500);
最佳答案
StackTrace 正在解释您正在尝试将 StateListDrawabl 转换为 TransitionDrawable。这是不可能的。
(TransitionDrawable) rl.getBackground();
java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.TransitionDrawable
您正在使用 StateListDrawable,因此您应该使用类似以下内容的内容:
RelativeLayout rl = (RelativeLayout) findViewById(R.id.rlRAM);
StateListDrawable drawable = (StateListDrawable) rl.getBackground();
TransitionDrawable transition = (TransitionDrawable) drawable.getCurrent();
transition.startTransition(500);
关于Android - 以编程方式过渡背景渐变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25094530/