Диалог 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();
}