quick-cocos2dx給Android設(shè)置應(yīng)用啟動(dòng)頁(yè)

最簡(jiǎn)單的方法無(wú)非是在游戲里設(shè)置……這樣蘋(píng)果和安卓都有了,還好加各種特效。
重點(diǎn)說(shuō)一下給安卓加啟動(dòng)圖,思路是:加一個(gè)新的activity,sleep一會(huì)兒,再跳到主activity。
好,新建一個(gè)activity叫SplashActivity,繼承自Activity,不要繼承自cocos的activity,它會(huì)自動(dòng)去幫你走AppDelegate……
參考以下代碼:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        // 常亮
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

        // 橫屏旋轉(zhuǎn)
        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(){//創(chuàng)建子線程
            @Override
            public void run() {
                try{
                    sleep(2000);//使程序休眠五秒
                    Log.i("LUA", "splash sleep end");
                    Intent it=new Intent(getApplicationContext(), AppActivity.class);//啟動(dòng)MainActivity
                    startActivity(it);
                    finish();//關(guān)閉當(dāng)前活動(dòng)
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        };

        myThread.start();//啟動(dòng)線程
    }

    public void setHideVirtualKey(Window window){
        //保持布局狀態(tài)
        int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE|
                //布局位于狀態(tài)欄下方
                View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION|
                //全屏
                View.SYSTEM_UI_FLAG_FULLSCREEN|
                //隱藏導(dǎo)航欄
                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);
    }

大概做的事情就是,創(chuàng)建一個(gè)layout,然后在layout里創(chuàng)建一個(gè)ImageView,圖片為bg,為了使ImageView居中,所以設(shè)置了父控件的gravity,顯示完了,創(chuàng)建一個(gè)線程,sleep2秒鐘,跳到AppActivity,splash這個(gè)activity橫屏且隱藏狀態(tài)欄和虛擬按鈕。
最后,記得把AndroidManifest里的啟動(dòng)activity換成新建的這個(gè)activity。

另外,為了讓蘋(píng)果的啟動(dòng)圖時(shí)間久一點(diǎn),可以在didFinishLaunchingWithOptions里加上一句

    // 啟動(dòng)圖片延時(shí): 1秒
    [NSThread sleepForTimeInterval:1];

經(jīng)實(shí)測(cè),1秒的效果蠻好的。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容