cocos2d-lua android解决启动时因为资源加载而黑屏的问题

6 篇文章 0 订阅
4 篇文章 0 订阅

《清宫Q传》iOS版本已经趋于稳定,这几日开始全力攻克android,之前一直没有android的开发经验,这次下定决心要点亮技能树了。

昨天遇到了一个问题:

游戏启动后黑屏 –> 持续4~5秒钟 –> 显示游戏首屏

这显然是不能接受的。

百度了下,有人提供的解决办法是:

  1. 添加splash activity,将其作为启动的activity
  2. splash activity设置背景图
  3. 延迟N秒钟之后启动首屏的activity

同时为了让切换的时候不出黑屏,还可以设置一些style,比如让首屏的activity的背景为透明的,这样在切换的时候就一直显示splash activity的背景图了。

亲测下来这些并没有什么卵用╮(╯▽╰)╭。

还是自己来吧。

拿手机对着logcat看了半天,发现黑屏的时间耗在资源加载上了,等到资源加载完,才显示UI。

那么等等,是不是可以在activity创建的时候,先显示一个全屏的图片,类似iOS的launch image,等到资源加载好了,该显示「正常」的界面的时候,再把这个图片去掉。

听上去好有道理╰( ̄▽ ̄)╮。

来试试吧!

// AppActivity.java

public 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);
            }
        }
    });
}

@Override
protected 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));
    ...
}

亲测有效<( ̄▽ ̄)> 哇哈哈…

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值