很多时候会用到倒计时,比如欢迎页面。
这里简单的做一个倒计时的实现,具体细节不在多赘述。
最要的功能就是Handler每隔一秒发送一个消息,通知主线程更新UI,仅此而已。
public class WelcomeActivity extends BaseActivity implements View.OnClickListener {
private Handler handler;
private ImageView mImageView;
private int time = 3;
private TextView mTextView;
private ImageOptions mOptions;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_welcome);
}
@Override
protected void initView() {
mImageView = (ImageView) findViewById(R.id.iv_start);
mTextView = (TextView) findViewById(R.id.second_start);
}
@Override
protected void initData() {
mOptions=new ImageOptions.Builder().build();
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 666) {
time--;
if (time==0){
startActivity(new Intent(WelcomeActivity.this,MainActivity.class));
finish();
}
if (time>0){
mTextView.setText(time + "秒:跳过");
}
}
}
};
new MyThread().start();
}
@Override
protected void setData() {
}
@Override
protected void setListener() {
mTextView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
startActivity(new Intent(WelcomeActivity.this, MainActivity.class));
time = 0;
finish();
}
private class MyThread extends Thread{
@Override
public void run() {
while(time>0){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.sendEmptyMessage(666);
}
}
}
}