public class AppActivity extends Cocos2dxActivity {
private static Cocos2dxActivity sCocos2dxActivity;
private static ImageView sSplashBgImageView = null;
private static void showSplash() {
sSplashBgImageView = new ImageView(sCocos2dxActivity);
-- sSplashBgImageView.setBackgroundColor(
-- sCocos2dxActivity.getResources().getColor(R.color.splash_bg)
-- );
sSplashBgImageView.setImageResource(R.drawable.splash);
sSplashBgImageView.setScaleType(ImageView.ScaleType.FIT_XY);
sCocos2dxActivity.addContentView(sSplashBgImageView,
new WindowManager.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.MATCH_PARENT
)
);
}
/**
* 这是给 CC JS 调用的隐藏原生开屏背景的方法
*/
public static void hideSplash() {
sCocos2dxActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (sSplashBgImageView != null) {
sSplashBgImageView.setVisibility(View.GONE);
}
}
});
}
@Override
protected void onCreate(Bundle savedInstanceState) {
...
// DO OTHER INITIALIZATION BELOW
SDKWrapper.getInstance().init(this);
// 第一步:在第二阶段加入我们的背景View
sCocos2dxActivity = this;
showSplash();
}
...
}
@ccclass
export default class MainSceneCtrl extends cc.Component {
start() {
// 第二步:场景加载之后,隐藏原生纯色背景View
// 这里延迟1秒是为了更好的体验,实际可以不用
this.scheduleOnce(() => {
this._hideNativeSplash();
}, 1);
}
private _hideNativeSplash() {
if (CC_JSB) {
if (cc.sys.os == cc.sys.OS_ANDROID) {
// 反射调用原生的隐藏方法
jsb.reflection.callStaticMethod(
"org/cocos2dx/javascript/AppActivity",
"hideSplash",
"()V"
);
}
}
}
}