最簡單的方法無非是在游戲里設置……這樣蘋果和安卓都有了,還好加各種特效。
重點說一下給安卓加啟動圖,思路是:加一個新的activity,sleep一會兒,再跳到主activity。
好,新建一個activity叫SplashActivity,繼承自Activity,不要繼承自cocos的activity,它會自動去幫你走AppDelegate……
參考以下代碼:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 常亮
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
// 橫屏旋轉
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
//隱藏虛擬按鍵,并且全屏
final Window window = getWindow();
setHideVirtualKey(window);
window.getDecorView().setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() {
@Override
public void onSystemUiVisibilityChange(int visibility) {
setHideVirtualKey(window);
}
});
Log.i("LUA", "on splash activity create");
/*mainLayout初始化*/
LinearLayout mainLayout = new LinearLayout(this);
mainLayout.setBackgroundColor(Color.WHITE);
mainLayout.setLayoutParams(new LinearLayout.LayoutParams(-1,-1));
mainLayout.setGravity(17); // 17 的意義是 "CENTER"
/*iv初始化*/
ImageView iv = new ImageView(this);
iv.setLayoutParams(new LinearLayout.LayoutParams(-1,-2));
iv.setScaleType(ImageView.ScaleType.CENTER);//居中顯示
int resId=this.getResources().getIdentifier("bg","drawable",getPackageName());
iv.setImageResource(resId);
mainLayout.addView(iv);//添加iv
setContentView(mainLayout);//顯示manLayout
Thread myThread=new Thread(){//創建子線程
@Override
public void run() {
try{
sleep(2000);//使程序休眠五秒
Log.i("LUA", "splash sleep end");
Intent it=new Intent(getApplicationContext(), AppActivity.class);//啟動MainActivity
startActivity(it);
finish();//關閉當前活動
}catch (Exception e){
e.printStackTrace();
}
}
};
myThread.start();//啟動線程
}
public void setHideVirtualKey(Window window){
//保持布局狀態
int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
//布局位于狀態欄下方
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|
//全屏
View.SYSTEM_UI_FLAG_FULLSCREEN|
//隱藏導航欄
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION|
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
if (Build.VERSION.SDK_INT>=19){
uiOptions |= 0x00001000;
}else{
uiOptions |= View.SYSTEM_UI_FLAG_LOW_PROFILE;
}
window.getDecorView().setSystemUiVisibility(uiOptions);
}
@Override
protected void onResume() {
super.onResume();
final Window window = getWindow();
setHideVirtualKey(window);
}
大概做的事情就是,創建一個layout,然后在layout里創建一個ImageView,圖片為bg,為了使ImageView居中,所以設置了父控件的gravity,顯示完了,創建一個線程,sleep2秒鐘,跳到AppActivity,splash這個activity橫屏且隱藏狀態欄和虛擬按鈕。
最后,記得把AndroidManifest里的啟動activity換成新建的這個activity。
另外,為了讓蘋果的啟動圖時間久一點,可以在didFinishLaunchingWithOptions里加上一句
// 啟動圖片延時: 1秒
[NSThread sleepForTimeInterval:1];
經實測,1秒的效果蠻好的。