在Xamarin
中,我有一个简单的Activity
,在加载另一个Activity
之前加载了五秒钟。
第一个Activity
将图片作为Layout
的一部分,但此图片未显示。
这是我的Activity
代码:
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.SplashActivity);
Thread.Sleep(5000);
var testActivity = new Intent (this, typeof(TestStartup));
StartActivity (testActivity);
}
这是我的SplashActivity
布局代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/background_color">
<ImageView
android:src="@drawable/Splash"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/SplashImage"
android:layout_gravity="center_vertical" />
</LinearLayout>
应用程序等待五秒钟,然后加载TestStartup Activity
,但是在五秒钟等待期间不显示图像。如何在Activity
等待五秒钟时显示此图像?
我可以帮助您使用此代码吗?
提前致谢
答案 0 :(得分:0)
未显示,因为您使用
阻止了UI线程Thread.Sleep(5000);
你应该摆脱这种逻辑。依靠x secs
总是错的。您正在等待的计算可能已准备就绪,使剩余等待时间成为浪费,或者可能需要更多x secs
。要问"fix"
您的问题,您可以使用Handler.postDelayed(Runnable, 5000)
,并将您需要执行的逻辑放在run
方法中。这样,至少,UI线程不会被阻止
答案 1 :(得分:0)
您可能想看一下Xamarin在Android中创建启动画面的教程:
http://developer.xamarin.com/guides/android/user_interface/creating_a_splash_screen/
看起来你是在正确的轨道上,但他们使用主题而不是设置内容视图。如前所述,您的布局未显示,因为您的sleep方法阻止了UI线程。使用主题是解决此问题的好方法,您可以重复使用已有的许多内容。