因为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

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

在onCreate中调用startSplash

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

监听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","");
05-11 20:14