因为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","");