我正在构建一个简单的计数器应用程序。我有一个button
按下开始倒计时,倒计时文本也会出现在同一个按钮上。我希望按钮动画上的倒计时文本,如果它更改为新数字,就像从上到下。
我知道有textview
的解决方案,但我找不到任何按钮的文字。
P.S我使用CountDownTimer
类来倒计时,这是代码。
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
CounterClass timer = new CounterClass(15000,1000);
//some codes--
setContentView(R.layout.activity_main);
play=(Button)findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
timer.start();
}
};
}
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@SuppressLint("NewApi")
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@SuppressLint("NewApi")
@TargetApi(Build.VERSION_CODES.GINGERBREAD)
@Override
public void onTick(long millisUntilFinished) {
millis = millisUntilFinished;
String hms = String.format("%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(millis) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(millis)),
TimeUnit.MILLISECONDS.toSeconds(millis) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millis)));
System.out.println(hms);
play.setText(hms);
}
任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
Android Button
实际上是TextView
,所以请看:https://stackoverflow.com/a/24389011/819355
<强>更新强>
根据评论,这里有一个使用CountDownTimer
和TextSwitcher
的可能解决方案(注意:未经测试):
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_gravity="center" >
<Button
android:id="@+id/play"
android:layout_width="100dp"
android:layout_height="100dp" />
<TextView
android:id="@+id/text1"
android:layout_width="100dp"
android:layout_height="100dp"
android:clickable="false"
android:text="Click me" />
<TextView
android:id="@+id/text2"
android:layout_width="100dp"
android:layout_height="100dp"
android:clickable="false"
android:text="" />
</FrameLayout>
代码:
public class MyClass {
TextSwitcher textSwitcher;
...
CounterClass timer = new CounterClass(15000,1000);
setContentView(R.layout.activity_main);
play = (Button) findViewById(R.id.play);
play.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
timer.start();
}
});
textSwitcher = new TextSwitcher(context);
textSwitcher.setInAnimation(context, R.anim.slide_in_left); // use any animation
textSwitcher.setOutAnimation(context, R.anim.slide_out_right);
textSwitcher.addView(findViewById(R.id.text1));
textSwitcher.addView(findViewById(R.id.text2));
...
public class CounterClass extends CountDownTimer {
public CounterClass(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
public void onTick(long millisUntilFinished) {
...
textSwitcher.setText(hms); // will now animate text
}
}
}