cocos2d-lua android解决启动时因为资源加载而黑屏的问题
16lz
2021-01-23
《清宫Q传》iOS版本已经趋于稳定,这几日开始全力攻克android,之前一直没有android的开发经验,这次下定决心要点亮技能树了。
昨天遇到了一个问题:
游戏启动后黑屏 –> 持续4~5秒钟 –> 显示游戏首屏
这显然是不能接受的。
百度了下,有人提供的解决办法是:
- 添加splash activity,将其作为启动的activity
- splash activity设置背景图
- 延迟N秒钟之后启动首屏的activity
同时为了让切换的时候不出黑屏,还可以设置一些style,比如让首屏的activity的背景为透明的,这样在切换的时候就一直显示splash activity的背景图了。
亲测下来这些并没有什么卵用╮(╯▽╰)╭。
还是自己来吧。
拿手机对着logcat看了半天,发现黑屏的时间耗在资源加载上了,等到资源加载完,才显示UI。
那么等等,是不是可以在activity创建的时候,先显示一个全屏的图片,类似iOS的launch image,等到资源加载好了,该显示「正常」的界面的时候,再把这个图片去掉。
听上去好有道理╰( ̄▽ ̄)╮。
来试试吧!
// AppActivity.javapublic class AppActivity extends Cocos2dxActivity {protected static Handler mUIHandler;private static ImageView img = null;// 创建一个ImageView,splash是闪屏图片protected ImageView createLaunchImage() { img = new ImageView(this); img.setImageResource(R.drawable.splash); return img;}// 当资源加载好了之后要删除之前创建的imageView// 否则一直会在界面上显示的;-)public static void removeLaunchImage() { mUIHandler.post(new Runnable() { @Override public void run() { if (img != null) { img.setVisibility(View.GONE); } } });}@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mUIHandler = new Handler(); // 显示launch image 遮住「黑屏」 addContentView(createLaunchImage(), new WindowManager.LayoutParams( WindowManager.LayoutParams.FILL_PARENT, WindowManager.LayoutParams.FILL_PARENT)); ...}
亲测有效<( ̄▽ ̄)> 哇哈哈…
更多相关文章
- android资源提供介绍
- Android 开发中 布局加载的原理
- Android 资源文件介绍
- android获取资源文件R.drawable中的图片的相关方法
- android获取资源文件非主流方法
- [android]简单方法记载 在adapter中异步加载网络图片
- Hybrid App for Android 资源整理(初步整理,待完善)
- [置顶] Android相关网络资源整理
- android加载gif图片