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的对话框,可以自定义控件,实现更复杂的对话框。