This video identifies some pitfalls with bad ways to implement launch screens, and provides a solution that everyone can use.
link
Bad Ways
Theme the launch screen
声明首页的Theme与App其它页面的Theme相同,视频作者对于这部分内容讲述不清,目前存疑。
Turn off the official startup window
使用Window Disable Preview来禁止显示Preview界面,这会导致启动App后依然停留在桌面,在此过程中无法响应用户操作。方法如下:
在styles.xml
中声明Theme
1 2 3
| <style name="Theme.NoPreviewWindow" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowIsTranslucent">true</item> </style>
|
或者
1 2 3
| <style name="Theme.NoPreviewWindow" parent="Theme.AppCompat.NoActionBar"> <item name="android:windowDisablePreview">true</item> </style>
|
然后在AndroidManifest.xml
中使用已经定义的Theme
1 2 3 4 5 6 7 8 9 10 11
| <activity android:name=".activities.SplashActivity" android:label="@string/app_name" android:theme="@style/Theme.NoPreviewWindow" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity>
|
The better way
通过切换Theme的手段来完成
首先声明一个以图片为背景的Theme,并且在首页Activity中应用
1 2 3 4 5 6 7 8 9 10
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque"> <item android:drawable="@android:color/white"/> <item> <bitmap android:src="@drawable/product_log_144dp" android:gravity="center"/> </item> </layer-list>
<activity ...android:theme="@style/AppTheme.Launcher"/>
|
当首页Activity正式启动时,切换到正式的theme
1 2 3 4 5 6
| @Override protected void onCreate(Bundel savedInstanceState) { setTheme(R.style.Theme_MyApp); super.onCreate(savedInstanceState); }
|
参考资料
最后更新时间:
本文系作者原创,如转载请注明出处。欢迎留言讨论,或通过邮件进行沟通~