飞溅屏幕活动背景颜色

时间:2014-10-02 05:42:17

标签: android xamarin splash-screen

我在Android上的启动画面有问题。 在长时间应用程序启动期间向用户显示启动画面,但活动背景始终为黑色。我的意思是背景位图(启动图像)是可见的,但背景是黑色而不是白色。我正在使用透明的PNG图像。

我有什么:

  1. 带透明背景的PNG闪屏图像
  2. 启动画面活动
  3.     [Activity(MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)]
        public class SplashScreen : Activity
        {
            protected override void OnCreate(Bundle bundle)
            {
                base.OnCreate(bundle);
    
                // Do your app initialization here
                // Other long running stuff
    
                // Run app when done
                StartActivity(typeof(MainForm));
            }
        }
    
    1. 资源/ values / styles.xml中的启动画面活动的主题样式
    2.     <resources>
            <style name="Theme.Splash" parent="@android:style/Theme.Holo.Light">
              <item name="android:windowBackground">@drawable/splash_centered</item>
              <item name="android:windowNoTitle">true</item>
            </style>
          </resources>
      
      1. Splash drawable in resources / drawable / splash_centered.xml
      2.     <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
                android:src="@drawable/splash"
                android:gravity="center"
                android:background="@color/white"> <!-- this is ignored -->
        

        问题: 正如你所看到的,我使用Theme.Holo.Light作为父主题,我在我的应用程序的其余部分使用它。 Holo光使用白色背景。 此白色背景不适用于SplashActivity背景。 SplashActivity背景总是黑色的。 背景位图(启动图像)可见,但背景为黑色而不是白色。我正在使用具有透明度的PNG图像。

        问题: 如何在SplashScreen活动上设置默认的Holo.Light主题背景颜色(白色)?

        注意: 我正在使用Xamarin.Android,但Android平台的样式很常见。 Android版本4及更高版本。

3 个答案:

答案 0 :(得分:32)

在resources / drawable / splash_centered.xml中,使用图层列表

而不是位图
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape android:shape="rectangle">
      <solid android:color="@android:color/white" />
    </shape>
  </item>
  <item>
    <bitmap android:gravity="center" android:src="@drawable/splash" />
  </item>
</layer-list>

答案 1 :(得分:9)

这就是我在Xamarin中获得白色背景闪光(以徽标为中心)的方式。

[Activity (Theme= "@style/Theme.Splash", MainLauncher=true, NoHistory=true)]            
public class SplashActivity : Activity
{
    protected override void OnCreate (Bundle bundle)
    {
        base.OnCreate (bundle);
        SetContentView (Resource.Layout.splash);
        ThreadPool.QueueUserWorkItem (o => LoadActivity ());
        // Create your application here
    }
    private void LoadActivity() {
        Thread.Sleep (1000); // Simulate a long pause
        RunOnUiThread (() => StartActivity (typeof(MainActivity)));
    }
}

使用Theme.Splash:

<resources>
  <style name="Theme.Splash" parent="@android:style/Theme.Light">
    <item name="android:colorBackground">@android:color/white</item>
    <item name="android:windowNoTitle">true</item>
  </style>
</resources>

和splash.axml代码(Theme.Light.NoTitleBar):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:minWidth="25px"
    android:minHeight="25px"
    android:gravity="center">
    <ImageView
        android:src="@drawable/splash"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView1"
        android:layout_gravity="center" />
</LinearLayout>

注意:起泡png(徽标)稍有延迟,但仍然可以接受,优于黑色背景。

答案 2 :(得分:0)

将android:drawable =“ @ color / colorWhite”设置为项目。

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

    <item android:drawable="@color/colorWhite" />

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