[Android] ColorV UI代码理解笔记(1)-Launcher页

Launcher页:


AndroidManifest.xml:

        <activity
            android:name=".modules.main.ui.activity.StartActivity"
            android:label="${APP_NAME}"
            android:screenOrientation="portrait"           //只竖屏显示
            android:windowSoftInputMode="adjustPan|stateAlwaysHidden">   //设置系统键盘状态,使该Activity从不被键盘遮盖
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />     //入口Activity
            </intent-filter>
            <intent-filter>
                <data android:scheme="colorv" />

                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
            </intent-filter>


StartActivity.java:

    protected void onCreate(Bundle savedInstanceState) {
        setContentView(R.layout.activity_start); //一张只有ImageView的Layout


        //.....初始化......


        waitAndGoNext();

停留2S跳转:

    private void waitAndGoNext() {
        // 停留2秒后跳转
        Handler h = new Handler();
        h.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (!goon) {
                    return;
                }
                if (ApplicationCache.pushHelper != null) {
                    LogUtils.println("--push----------------------------------handle push helper in StartActivity");
                    ApplicationCache.pushHelper.handlePush(StartActivity.this);
                    ApplicationCache.pushHelper = null;
                    return;
                }
                LogUtils.println("--push----------------------------------handle StartActivity normally");
                if (ApplicationCache.newUser || ApplicationCache.updateUser) {      //若是新用户或者不是最新版本需要更新的用户,执行goGuide,否则启动到主页
                    goGuide();
                } else {
                    goMainActivity();          //启动到主页
                }
            }
        }, wait);
    }

启动到主页:

    private void goMainActivity() {
        Intent it = new Intent(StartActivity.this, MainActivity.class);
        it.putExtra("from_start", true);
        startActivity(it);
        finish();
        overridePendingTransition(R.anim.fadein, R.anim.fadeout);     //该用法切换Activity时触发,两个animation的效果分别为当前Activity退出时的效果和新的Activity打开时的效果
    }

如果APP初始化还没完成,显示进度Dialog,执行Check,否则启动主页

    private void goGuide() { 
        if (!CacheUtils.INS.isAppInited()) {   //初始化状态boolean值存储在SharePreFerence中
            mPd = AppUtil.showProgressDialog(this, MyApplication.getToString(R.string.initialization_data));
            check();
        } else {
            goMainActivity();
        }
    }

开启一个AsyncTastk,每0.1秒check下是不是完成了APP的初始化。若完成初始化return true,若超过60s还没完成return false,弹启动失败的Toast并Finish。

    private void check() {
        new AsyncTask<String, Boolean, Boolean>() {
            @Override
            protected Boolean doInBackground(String... params) {
                long waiting = 0;
                while (!CacheUtils.INS.isAppInited()) {
                    try {
                        long time = 100;
                        Thread.sleep(time);
                        waiting += time;
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    if (waiting > 60000) {
                        return false;
                    }
                }
                return true;
            }

            @Override
            protected void onPostExecute(Boolean success) {
                AppUtil.safeDismiss(mPd);
                if (success) {
                    goMainActivity();
                } else {
                    ToastUtils.toastAbove(StartActivity.this, MyApplication.getToString(R.string.initialization_data_fail));
                    StartActivity.this.finish();
                }
            }
        }.execute();

    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值