在运行此代码时,它直接将文本设置为0,而不以1秒的间隔将其从30减少到0。
JAVA代码
public void LoadCounter() {
for (int i = 30; i > -1; i--) {
final int counter = i;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
txtview.setText("" + counter);
Log.d("test1", "" + counter);
}
}, 1000);
}
}
在运行时设置值的文本视图。
XML代码
<RelativeLayout 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"
tools:context=".MainActivity">
<TextView
android:id="@+id/txtview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:textColor="#000"
android:layout_centerInParent="true"
android:textStyle="bold"/>
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/txtview"
android:layout_centerInParent="true"
android:text="START COUNT"
android:textStyle="bold"
android:textSize="20sp"/>
我知道CountdownTimer方法是一个选项,但是我正在尝试以这种方式解决 以上代码或说明中的任何更改都将受到赞赏。
这是我第一次在StackOverflow上提问,我希望这是一种正确的方式提出问题,并预先感谢您的任何帮助。
答案 0 :(得分:1)
然后我们再次发明滚轮:)
public void LoadCounter() {
Thread timer = new Thread(){
public void run(){
try{
for (int i = 30; i>= 0; i--){
sleep(1000);
final int timer = i;
runOnUiThread(new Runnable() {
public void run() {
txt.setText(String.valueOf(timer));
}
});
};
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
};
timer.start();
}
答案 1 :(得分:0)
new CountDownTimer(30000, 1000) {
public void onTick(long millisUntilFinished) {
txtview.setText((millisUntilFinished / 1000) + "");
}
public void onFinish() {
// todo
}
}.start();
https://developer.android.com/reference/android/os/CountDownTimer
答案 2 :(得分:0)
我自己弄清楚了,它运行正常。
Windows Explorer or your computer