首页 > 解决方案 > 自定义启动画面

问题描述

我从手册中制作了启动画面:

我创建了从 AppCompatActivity 等扩展的 SplashActivity。它按预期工作。

但是现在我想为启动活动设置一些动画,我很困惑,因为我放在 SplashActivity 上的所有内容都是不可见的(现在我不能确定 SplashActivity 本身是可见的)。

现在我已经从 SplashActivity 中删除了所有多余的东西并按原样启动它:

// `MainLauncher` argument for my MainActivity is false now
[Activity(Theme = "@style/SplashTheme", NoHistory = true, MainLauncher = true)]  
public class SplashActivity : Activity                      // AppCompatActivity
{


    protected override void OnCreate(Bundle savedInstanceState) // , PersistableBundle persistentState
    {
        base.OnCreate(savedInstanceState); // persistentState
        this.SetContentView(Resource.Layout.LPreloader);
    }

    protected override void OnResume()
    {
        base.OnResume();
    }

}

LPreloader.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:orientation="vertical" >

  <Button
      android:id="@+id/my_button"
      android:layout_width="match_parent"
      android:layout_height="wrap_content"
      android:text="Some element on Activity" />
</LinearLayout>

活动风格的主题是:

  <style name="SplashTheme" parent ="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@drawable/splash_screen</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowActionBar">true</item>
  </style>  

例如,我想查看my_buttonon 活动,但我什么都没有。不仅如此:我在行上设置了断点,base.OnCreate(savedInstanceState);并且它从未停止过。我只看到徽标@drawable/splash_screen,什么都没有。

如果我使用相同的代码创建新的 Xamarin.Android 项目 - 它工作正常(我看到按钮)。我无法理解。在 Xamarin.Forms 项目中工作有什么障碍?

标签: c#xamarinxamarin.formsxamarin.android

解决方案


从启动主题中删除窗口背景并尝试它会起作用,因为你除了

<style name="SplashTheme" parent ="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowBackground">@color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowActionBar">true</item>
  </style> 

推荐阅读