Android活动背景图片

时间:2012-01-19 15:59:23

标签: android background android-manifest xamarin.android splash-screen

如何在活动主题/样式中使用背景图像?

如果我使用颜色执行此操作:

<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 for Android,图片是一个有效的九补丁png。

5 个答案:

答案 0 :(得分:16)

我也不使用主题,所以在活动的布局中我会添加

android:background="@drawable/splash_image"

答案 1 :(得分:9)

我不使用主题或任何东西,所以我不确定这会如何影响这一点,但我设置了这样的背景:

getWindow().setBackgroundDrawableResource(R.drawable.background_image);
创建

答案 2 :(得分:7)

我的解决方案是将android: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>

答案 3 :(得分:5)

我需要一个看起来像我的应用程序初始活动的启动图像并遇到同样的问题。我很幸运使用windowContentOverlay而不是windowBackground。 drawable出现在状态栏下方,与真实布局完全相同。它适用于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>

我的splash.xml drawable使用layer-list模仿我的用户界面标题:

<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 sample似乎有这样的启动图像。

答案 4 :(得分:1)

您可以使用android:gravity="fill"代替android:gravity="center"

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:opacity="translucent">

    <item>
        <bitmap
            android:gravity="fill"
            android:src="@drawable/splash_screen" />
    </item>
</layer-list>

注意:这取决于您的初始图像的形状和大小。就我而言,使用android:gravity="fill"可以使飞溅看起来很完美。 您可以在初始图像的类型上使用重力的不同属性。