自定义启动画面

时间:2020-06-01 15:43:06

标签: c# xamarin xamarin.forms xamarin.android

我从manual进入了初始屏幕:

我创建了从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_button,但我一无所有。不仅如此:我在行base.OnCreate(savedInstanceState);上设置了断点,并且断点从未停止过。我只看到@drawable/splash_screen的徽标,什么也看不到。

如果我使用相同的代码创建新的Xamarin.Android项目-效果很好(我看到了按钮)。我听不懂什么阻碍了Xamarin.Forms项目的工作?

1 个答案:

答案 0 :(得分:1)

从启动主题中删除Windows背景并尝试使用,除非您

<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>