Android: настройка фона окна на запущенной

Поэтому я прочитал сообщение в блоге Ромена Гая о настройке фона Window и пропущенной производительности, и я пытаюсь подражать этому. Это такое простое решение, и я не уверен, почему я не могу заставить это работать, но деятельность просто отказывается отбирать направленный фон.

У меня есть ListView, что onListItemClick запускает новое действие, которое занимает 3-5 секунд для полной загрузки. Пока пользователь ждет, я хотел бы нарисовать windowBackground, чтобы они «увидели» активность до того, как она будет готова. Вот мой код:

AndroidManifest фрагмент для запуска. Активность:

<activity android:name=".activity.EditorActivity" android:screenOrientation="portrait" android:windowBackground="@drawable/background_editor"> 

XML-макет для EditorActivity:

 <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/editor" android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Editor" /> </FrameLayout> 

И, наконец, выпадающее существо, установленное в манифесте, background_editor.xml:

 <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:src="@drawable/editor_bg" android:tileMode="repeat" /> 

Editor_bg – это .png-файл, расположенный в папке с возможностью его вывода.

Конечным результатом является запуск EditorActivity, и все, что я вижу, это черный фон по умолчанию с текстом «Редактор», отображаемым белым цветом (я добавил, что для проверки правильности загрузки файла XML.

Я также попытался настроить фон FrameLayout и TextView на прозрачный с помощью Android: background = "@ android: color / transparent", думая, что они по умолчанию на черном фоне, но не повезло.

Прошло несколько дней, я уверен, что мне не хватает чего-то простого … явных ошибок, которые я здесь делаю?

Solutions Collecting From Web of "Android: настройка фона окна на запущенной"

Попробуйте установить фон окна перед запуском нового действия программно.

 getWindow().setBackgroundDrawableResource(R.drawable.my_drawable); 

Я столкнулся с той же проблемой и потратил свой день на это. Мы не можем задавать тему в java, так как в моем случае элемент управления очень сильно зашел в onCreate моей активности всплеска. До этого времени черный экран остается видимым.

Это дало мне понять, что окно должно управляться из темы, которую мы укажем в манифесте.

Есть манифест, который у меня есть:

 <activity android:name=".main.activities.SplashScreen" android:theme="@style/Splash" android:screenOrientation="portrait"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 

Теперь тема, которую я создал, выглядит следующим образом:

 <style name="Splash" parent="@style/Theme.AppCompat.Light"> <item name="android:windowBackground">@drawable/splash</item> <item name="android:windowNoTitle">true</item> <item name="windowNoTitle">true</item> <item name="colorPrimaryDark">@color/green_09</item> <item name="colorPrimary">@color/green_09</item> <item name="windowActionBar">false</item> </style> 

Всплеск ресурса, который содержит ресурс растрового изображения, я должен немного настроить его, чтобы он выглядел идеально не растянутым и в центре:

 <bitmap xmlns:android="http://schemas.android.com/apk/res/android" android:antialias="true" android:dither="true" android:gravity="fill" android:src="@drawable/splash_screen" /> 

Он работает для меня, если я объявляю это в стиле темы в styles.xml:

 <?xml version="1.0" encoding="utf-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <style name="CustomTheme" parent="android:Theme.Holo.NoActionBar"> <item name="android:windowBackground">@color/bg_evening</item> </style> </resources> 

И в манифесте я задал эту тему в своем приложении:

 <application android:name="com.my_app.pack" android:theme="@style/CustomTheme" > ... 

Или к одному из моих действий:

 <activity android:name="..." android:theme="@style/CustomTheme"> ... 

Вы можете объявить несколько стилей темы и добавить любую из них к любой из ваших действий, которая переопределит тему, установленную в приложении