Интерфейс Dialog onShowListener()

#android #android-ui

#Android

Вопрос:

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

Ниже приведен мой 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 не прикреплен к window.

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

Ответ №1:

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

 @Override   
public void onWindowFocusChanged(boolean hasFocus){
        ImageView imageView = (ImageView) findViewById(R.id.blankImageView);
        AnimationDrawable yourAnimation = (AnimationDrawable) imageView.getBackground();
        yourAnimation.start();
    }