Android的别踩白块开发,使用SurfaceView(二)

private void initView() {
        mPianoTilesView = (PianoTilesView) findViewById(R.id.pianoTilesView);
        mCountDownView = (CountDownView) findViewById(R.id.countTextView);
        mMarkRela = (RelativeLayout) findViewById(R.id.markRela);
        mCountDownView.setData(Arrays.asList("3","2","1","开始"));
        mCountDownView.init();//刷新执行完后,进入下一个函数。
        //这里不是监听,不需要触发事件,主线程到这里即执行。
        mCountDownView.setCountDownListener(new CountDownView.CountDownListener() {
            @Override
            public void finish() {
                mMarkRela.setVisibility(View.GONE);
                mPianoTilesView.setZOrderOnTop(true);//把钢琴滑块视图顶到最高点
                mPianoTilesView.startGame();
            }
        });
        //设置游戏结束后的弹框,有结束与重开功能。
        mAlertScoreDialog = new AlertScoreDialog.Builder(MainActivity.this)
                .setFinishClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Log.e("DEMO","点击点击");
                        finish();
                        mAlertScoreDialog.dismiss();
                    }
                })
                .setRestartClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mAlertScoreDialog.dismiss();
                        mPianoTilesView.restart();
                        mMarkRela.setVisibility(View.VISIBLE);
                        mCountDownView.init();

                    }
                })
                .builder();

        //这里有一个线程一直在设置分数。
        mPianoTilesView.setGameListener(new PianoTilesView.GameListener() {
            @Override
            public void gameEnd(final  String number) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        Log.e("DEMO","number == "+number);
                        if(mAlertScoreDialog!=null){
                            mAlertScoreDialog.setScore(number);
                            mAlertScoreDialog.show();
                        }

                    }
                });

            }
        });
    }

mCountDownView执行开始时候的倒计时,用了scheduleAtFixedRate执行线程,是从指定时刻开始执行,而不是执行时的时刻。

非Layout型对话框,直接使用AlertDialog。
使用了Layout的对话框,可以自定义控件,实现更复杂的对话框。

猜你喜欢

转载自blog.csdn.net/qq_37804737/article/details/70306071
今日推荐