#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();
}