回答
我最近用下面的方法解决了这个问题。
在主要活动中,我通过意图设置闪烁屏幕保持可见的毫秒数来传递参数。
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
Intent i=new Intent();
i.SetClass(this, typeof (Splash));
i.PutExtra("Milliseconds", 3000);
StartActivity(i);
}
然后,在第二活性,其余名为“飞溅”我检索到的值,并设置一个第二线程来结束活动当时间已经过去了。
[Activity(Label = "Daraize Tech")]
public class Splash : Activity
{
private int _milliseconds;
private DateTime _dt;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
_milliseconds = Intent.GetIntExtra("Milliseconds", 1000);
SetContentView(Resource.Layout.Splash);
_dt=DateTime.Now.AddMilliseconds(_milliseconds);
}
public override void OnAttachedToWindow()
{
base.OnAttachedToWindow();
new Thread(new ThreadStart(() =>
{
while (DateTime.Now < _dt)
Thread.Sleep(10);
RunOnUiThread(Finish);
}
)).Start();
}
}
另见http://docs.xamarin.com/android/tutorials/Creating_a_Splash_Screen 真正伟大的教程。
只需要大约10行代码:)
在Styles.xml:
<resources>
<style name="Theme.Splash" parent="android:Theme">
<item name="android:windowBackground">@drawable/splash</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
在你的活动:
[Activity (MainLauncher = true, Theme = "@style/Theme.Splash", NoHistory = true)]
public class SplashActivity : Activity
{
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
// Create your async task here...
StartActivity (typeof (Activity1));
}
}
在我看来,没有更好的方法来解决这个问题。 谢谢! –
我遇到了麻烦让这个工作的景观启动画面我设置'ScreenOrientation = ScreenOrientation.Landscape'里面的飞溅活动属性(和我的主要活动也有它),但这会导致不显示启动画面。如果我只是使用肖像飞溅,切换到主要活动时会旋转,这看起来有点奇怪。 – Aranda
该解决方案可以让你如下:
- 立即显示闪屏
- 去除启动画面的确切时间“主”活动启动(主要活动取代了防溅活动)
在OnCreate中,的setContentView被调用,以获得启动画面了,然后工人线程被启动,运行缓慢的处理数据初始化的东西。
这样,spalsh屏幕显示没有延迟。工作线程中的最后一条语句启动了“主”应用程序/活动,这将使其数据库的所有数据都准备好进行访问。从OnCreate调用StartActivity()(即在initializeDataWorker.Start()之后)将导致MainActivity在创建数据库和/或获取数据之前/之前运行,这通常是不需要的)。
该解决方案没有办法从后台堆栈中删除启动画面。当我开始实施这个功能时,我会更新它。
namespace Mono.Droid
{
[Activity(
Label = "Splash Activity",
MainLauncher = true,
Theme = "@android:style/Theme.Black.NoTitleBar",
Icon = "@drawable/icon",
NoHistory = false)]
public class SplashActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.SplashLayout);
Thread initializeDataWorker = new Thread(new ThreadStart(InitializeData));
initializeDataWorker.Start();
}
private void InitializeData()
{
// create a DB
// get some data from web-service
// ...
StartActivity(typeof(MainActivity));
}
}
}
这为我工作:
起价飞溅活动的新线程。您可以等待几秒钟或加载一些数据或其他东西。
[Activity(MainLauncher = true, NoHistory = true)]
public class Splashscreen : Activity
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView (Resource.Layout.splashscreen);
new Thread (new ThreadStart (() =>
{
//Load something here ...
Thread.Sleep(1500);
Intent main = new Intent (this, typeof(MainActivity));
this.StartActivity (main);
this.Finish();
})).Start();
}
}
- 1. Monodroid动画值
- 2. 如何从.java文件启动画面访问Monodroid资源
- 3. WPF动画启动画面
- 4. Monodroid滑动菜单动画
- 5. 像Facebook的启动画面一样移动启动画面
- 6. ios启动画面
- 7. NetBeans - 启动画面?
- 8. j2me启动画面
- 9. jQuery启动画面
- 10. 卡在Android Studio启动画面(启动画面)!
- 11. 启动画面或启动画面中的声音
- 12. Ember JS实现启动画面/加载启动画面
- 13. Android活动启动画面
- 14. Android - 启动画面的淡出动画
- 15. 启动画面的Android图像动画
- 16. MonoDroid&MVVMCross - StartApplicationObject,启动PreferenceActivity?
- 17. VSTO启动画面excel启动
- 18. Phonegap启动画面(IOS)
- 19. Android启动画面闪烁
- 20. 显示启动画面
- 21. 启动画面不加载
- 22. Android启动画面宽度
- 23. Android:启动画面问题
- 24. 创建启动画面
- 25. 安卓启动画面
- 26. Silverlight OOB启动画面
- 27. 启动画面线程
- 28. Starling AS3 IOS启动画面
- 29. 黑色启动画面
- 30. NativeScript启动画面时间
Bob,谢谢你的工作。我需要添加一个“使用System.Threading”。 – Fritz
鲍勃,谢谢。我需要相同的... – Saeed