Диалог onShowListener() Интерфейс

Я хочу показать пользовательскую анимацию в диалоге вместо обычной анимации в диалоге прогресса.

Ниже приведен мой XML-файл макета:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ImageView  
        android:id="@+id/blankImageView"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:background="@anim/loading_anim"/>
</LinearLayout>

В onShowListener диалога, я позвонил,

        dialog.setOnShowListener(new DialogInterface.OnShowListener(){

        @Override
        public void onShow(DialogInterface dialog) {
            final ImageView imageView = (ImageView) dlg.findViewById(R.id.blankImageView);
            final AnimationDrawable yourAnimation = (AnimationDrawable) imageView.getBackground();
            yourAnimation.start();
        }

    });

Как видите, я запустил анимацию после диалога в OnShowListener. Если я запускаю анимацию любым другим методом, таким как onStart(), метод диалога onCreate(), анимация не будет работать, так как AnimationDrawable не прикреплен к окну.

Но интерфейс onShowListener относится к API-уровню 8. Мой вопрос таков: есть ли способ до API-уровня 8 узнать, присоединен ли AnimationDrawable к окну?

1 ответ

Решение

Я переопределил функцию onWindowFocusChanged() и там я начал анимацию. Эта функция существует с уровня API 1. Так что она работает как шарм для всех версий

@Override   
public void onWindowFocusChanged(boolean hasFocus){
        ImageView imageView = (ImageView) findViewById(R.id.blankImageView);
        AnimationDrawable yourAnimation = (AnimationDrawable) imageView.getBackground();
        yourAnimation.start();
    }
Другие вопросы по тегам