许久未敲代码,关于计时器,倒计时这一块的东西有所遗忘,所以决定在撸一遍,加深印象。
一般来说Android 开发可能会遇到,类似项目开机倒计时,电商的秒杀倒计时等等。
我是根据开机倒计时来撸代码。
- MainActivity.java
public class STActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn;
private int count = 5;
private Handler handler = new Handler ( new Handler.Callback ( ) {
@Override
public boolean handleMessage(Message msg) {
int count = msg.arg1;
if (count == 0) {
Intent intent = new Intent ( STActivity.this, MainActivity.class );
startActivity ( intent );
timer.cancel ( );
} else {
btn.setText ( "" + count );
}
return false;
}
} );
private Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate ( savedInstanceState );
setContentView ( R.layout.activity_st );
initView ( );
iniData ( );
}
private void iniData() {
runOnUiThread ( new Runnable ( ) {
@Override
public void run() {
timer = new Timer ( );
TimerTask timerTask = new TimerTask ( ) {
@Override
public void run() {
Message message = handler.obtainMessage ( );
message.arg1 = count;
if(count!=-1){
count--;
}else {
return;
}
handler.sendMessage ( message );
}
};
timer.schedule ( timerTask, 1000, 1000 );
}
} );
}
private void initView() {
btn = (Button) findViewById ( R.id.btn );
btn.setOnClickListener ( this );
}
@Override
public void onClick(View v) {
switch (v.getId ( )) {
case R.id.btn:
//点击跳转项目首页
Intent intent = new Intent ( STActivity.this, MainActivity.class );
startActivity ( intent );
break;
}
}
}
- layout_mian.xml
`<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".ui.start.STActivity">
<Button
android:id="@+id/btn"
android:layout_width="60dp"
android:layout_height="40dp" />
</LinearLayout>