Состояния кнопок с Background as AnimationDrawable в Android

Некоторое время я делал пользовательские кнопки в 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 ...

Есть идеи, как это исправить? Спасибо.

8
задан Alin 14 March 2011 в 13:30
поделиться