Ответ 1
Я также не использую темы, поэтому в макете активности я бы добавил
android:background="@drawable/splash_image"
Как использовать фоновое изображение в теме/стиле активности?
Если я делаю это с помощью цвета:
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
</style>
Он работает правильно, но если я заменю строку:
<item name="android:windowBackground">@drawable/splash_image</item>
Изображение отображается правильно, но весь контент сбрасывается в крошечный блок в верхнем левом углу экрана. Тень под строкой состояния также отключена или испорчена.
Я использую Mono для Android, и изображение является действительным девятипартийным png.
Я также не использую темы, поэтому в макете активности я бы добавил
android:background="@drawable/splash_image"
Я не использую темы или что-то еще, поэтому я не уверен, как это повлияет на это, но я установил свой фон следующим образом:
getWindow().setBackgroundDrawableResource(R.drawable.background_image);
in onCreate
Мне нужно было иметь всплывающее изображение, похожее на начальную активность моего приложения, и столкнулось с той же проблемой. Мне повезло с windowContentOverlay вместо windowBackground. Выбираемая строка появилась ниже строки состояния в том же месте, что и реальный макет. Он работал на Android 2.2, Android 3.0 и Android 4.1.
Это мой стиль:
<style name="SplashTheme" parent="android:style/Theme.Light">
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@drawable/splash</item>
</style>
My splash.xml drawable имитирует заголовок моего пользовательского интерфейса с помощью списка слоев:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--- Background; tile is broken on Android 2.2 so just have super wide background that will get clipped -->
<item>
<bitmap android:gravity="top|left" android:src="@drawable/splash_background" />
</item>
<!--- Icon left justified -->
<item>
<bitmap android:gravity="top|left" android:src="@drawable/header_icon" />
</item>
<!--- Buttons/etc right justified -->
<item>
<bitmap android:gravity="top|right" android:src="@drawable/splash_buttons" />
</item>
</layer-list>
Я считаю, что ActionBar также имеет встроенные способы обработки этого, если ваше приложение использует его. образец MonoIO, похоже, имеет такой образ запуска.
Моим решением было изменение андроида: windowBackground для android: background.
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="Theme.Splash" parent="android:Theme">
<item name="android:background">@drawable/splash</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>