• 六 Android Studio打包Eegret App (解决开机黑屏问题)


    因为android studio中的SplashActivity并没有什么卵用,只是开机1s显示开机画面,1s后面还是黑屏。

    在主文件中加入以下代码,就是开始游戏时显示一个居中填满屏幕的图片,游戏加载完成后,再隐藏这个图片,来达到去掉黑屏的效果。

    import android.app.ActionBar.LayoutParams;
    import android.widget.ImageView;te ImageView image;
        //启动游戏,解决黑屏,顶层显示的图片
        private LayoutParams params;
        private ImageView image;
        public void startSplash(){
            params = new LayoutParams(LayoutParams.MATCH_PARENT,
                    LayoutParams.MATCH_PARENT);
            //设置中间位置
            params.gravity = Gravity.CENTER;
            image = new ImageView(this);
            image.setScaleType(ImageView.ScaleType. CENTER_CROP);
            image.setImageResource(R.drawable.splash_img);
            //添加控件
            addContentView(image, params);
        }
    
        //游戏启动后,隐藏顶层显示的图片
        public void stopSplash(){
            image.setVisibility(View.GONE);
        }

    哦,我的主文件是testappas

    在onCreate中调用startSplash

    监听stopSpash事件

        private void setInterfaces() {
            // Egret(TypeScript)-Runtime(Java)通讯
            // setRuntimeInterface(String name, IRuntimeInterface interface) 用于设置一个runtime的目标接口
            // callEgretInterface(String name, String message) 用于调用Egret的接口,并传递消息
            gameEngine.setRuntimeInterface("RuntimeInterface", new IRuntimeInterface() {
               @Override
                public void callback(String message) {
                    Log.d(TAG, message);
                    gameEngine.callEgretInterface("EgretInterface", "A message from runtime");
                }
            });
    
            gameEngine.setRuntimeInterface("reqLogin", new IRuntimeInterface() {
                @Override
                public void callback(String message) {
                    Log.d("externalInterface", "接收到Egret的登录请求 : " + message);
    
                    gameEngine.callEgretInterface("revLogin", "登录成功");
                }
            });
    
            gameEngine.setRuntimeInterface("stopSplash", new IRuntimeInterface() {
                @Override
                public void callback(String message) {
                    Log.d("externalInterface", "关闭开机画面 : " + message);
                    stopSplash();
                }
            });
    
        }

     Egret游戏加载完成后,在出现Egret自己的加载页面之前调用stopSpash接口即可。

    我一般是在显示在自己loadScene之前调用。

    egret.ExternalInterface.call("stopSplash","");
  • 相关阅读:
    Unity 绘制带颜色的流线 streamline
    Tinyply 源码阅读
    题解 [BZOJ2952]长跑
    莫比乌斯反演技巧
    题解 pyh的求和
    Java Web基础
    后端常用数据持久层模板及框架以及一些工具类模板的配置使用集合
    12306火车订票系统(C++)
    C++/Java文件读写并执行相关操作、文件复制、文件格式转换等(举例)
    《Java EE编程技术》综合应用系统开发_作业管理系统_Struts2_设计报告
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/8284376.html
Copyright © 2020-2023  润新知