Я сделал пользовательские кнопки в 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>
, где нормальное состояние кнопки будет содержать анимацию в качестве фона, а нажатое состояние - статическое изображение, все будет работать неправильно.
Вкл.моя основная деятельность, на 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 ...
Есть идеи, как это исправить?Спасибо.