gpt4 book ai didi

android - 背景为 Android 中的 AnimationDrawable 的按钮状态

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:49 30 4
gpt4 key购买 nike

我在 Android 中制作自定义按钮已有一段时间了。事情很简单,只是为按钮状态制作图像资源并为它制作一个选择器。一切都顺利而美好。现在我遇到了一个新情况。我制作了一个可绘制的动画并将其设置为我的按钮的背景。

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false">
<item android:drawable="@drawable/frame1" android:duration="600" />
<item android:drawable="@drawable/frame2" android:duration="300" />
<item android:drawable="@drawable/frame3" android:duration="500" />
</animation-list>

如果我将动画设置为按钮的背景,效果会很好。如果我尝试制作一个简单的选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="false"
android:drawable="@drawable/animation" />

<item
android:state_pressed="true"
android:drawable="@drawable/pressed" />
</selector>

如果按钮的正常状态将动画作为背景,而按下状态是静态图像,则事情无法正常工作。

在我的主要 Activity 中,在 onWindowFocus 上我获得按钮背景并启动动画

 @Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
btn = (Button)findViewById(R.id.btnAnim);
btnAnimation = (AnimationDrawable) btnAnim.getBackground();
btnAnimation.start();
}

这似乎是问题所在,因为我的动画无法从选择器中正确获取,并且出现以下错误:

03-14 15:21:16.146: ERROR/AndroidRuntime(440): FATAL EXCEPTION: main
03-14 15:21:16.146: ERROR/AndroidRuntime(440): java.lang.ClassCastException: android.graphics.drawable.StateListDrawable
03-14 15:21:16.146: ERROR/AndroidRuntime(440): at com.bebenjoy.MainActivity.onWindowFocusChanged(MainActivity.java:53)
03-14 15:21:16.146: ERROR/AndroidRuntime(440): at ...

知道如何解决这个问题吗?谢谢。

最佳答案

您的转换不正确——您的背景可绘制对象是 StateListDrawable,而不是 AnimationDrawable。我宁愿做类似的事情:

@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
btn = (Button)findViewById(R.id.btnAnim);
StateListDrawable background = (StateListDrawable) btn.getBackground();
Drawable current = background.getCurrent();
if (current instanceof AnimationDrawable) {
btnAnimation = (AnimationDrawable) current;
btnAnimation.start();
}
}

关于android - 背景为 Android 中的 AnimationDrawable 的按钮状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5299219/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com