Java 创建相对于当前实时的倒计时计时器?
我正在尝试创建一个倒计时,显示一天中的当前剩余时间,如下所示是布局,因此有3个文本视图ID,分别为天、小时、分钟 如何获取当前剩余时间并在textview中显示它们?但也考虑到计时器在一天中任意时间的启动时间,因此24小时的启动时间可以从午夜开始,因此上午10点的计时器运行时间将显示剩余14小时,或者24小时的时间从早上6点开始,因此上午10点的计时器将显示剩余18小时 如果有人知道如何做到这一切,那么让它从午夜开始,然后在代码中添加3个小时会更容易吗Java 创建相对于当前实时的倒计时计时器?,java,android,Java,Android,我正在尝试创建一个倒计时,显示一天中的当前剩余时间,如下所示是布局,因此有3个文本视图ID,分别为天、小时、分钟 如何获取当前剩余时间并在textview中显示它们?但也考虑到计时器在一天中任意时间的启动时间,因此24小时的启动时间可以从午夜开始,因此上午10点的计时器运行时间将显示剩余14小时,或者24小时的时间从早上6点开始,因此上午10点的计时器将显示剩余18小时 如果有人知道如何做到这一切,那么让它从午夜开始,然后在代码中添加3个小时会更容易吗 @Override protected
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int timeinminutes = 1;
sSlUp = findViewById(R.id.redtimeerview);
//final TextView hours = (TextView)findViewById(R.id.hours);
countDownTimer = new CountDownTimer(timeinminutes * 60000, 1000) {
TextView countdownText = findViewById(R.id.countdown_text);
public void onTick(long millisUntilFinished) {
long scnds = 1;
scnds = (millisUntilFinished / 1000);
countdownText.setText("" + scnds);
}
public void onFinish() {
countDownTimer.start();
}
}.start();
init();
progressBar.setVisibility(View.VISIBLE);
mTextureView = (TextureView) findViewById(R.id.previewCam);
mBtLaunchActivity = (Button) findViewById(R.id.bt_launch_activity);
TextView textView = (TextView) findViewById(R.id.currentDate);
setDate(textView);
mBtLaunchActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
launchActivity();
}
});
根据要求,这里是一个尝试。请注意,这个答案还没有经过测试 与
时间
无关的所有数据都已删除
int timeInMinutes = 1;
countDownTimer = new CountDownTimer(timeInMinutes * 60000, 1000) {
public void onTick(long millisUntilFinished) {
Time time = new Time(millisUntilFinished);
final int hours = time.getHours();
final int min = time.getMinutes();
final int scnds = time.getSeconds();
countdownText.setText("" + scnds);
}
public void onFinish() {
// Everytime the countDown stops restart it?
//countDownTimer.start();
}
}.start();
相关链接:
- 哦,谢谢!!我相信这让我走上了正确的道路,但它显然并不正确,因为.getHours和.getMinutes显然是从api 14开始贬值的。我看到我可以和我们做一个比较,然后把它和时间做比较
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int timeinminutes = 1;
countDownTimer = new CountDownTimer(timeinminutes * 60000, 1000) {
public void onTick(long millisUntilFinished) {
Time time = new Time(millisUntilFinished);
final int hours = time.compareTo(Calendar.getInstance().getTime()); //added a compareto and set that against what the current time is
final int min = time.getMinutes();
//final int scnds = time.getSeconds();
long scnds = 1;
scnds = (millisUntilFinished / 1000);
countdownText.setText("" + scnds);
countdownHours.setText("" +hours); // sets to ID of textview
}
public void onFinish() {
countDownTimer.start();
}
}.start();
当我测试它时,它显示1小时(当前时间是22:54),所以我确信它是正确的,但我明天必须检查。但是谢谢你给我指出了正确的方向:D我现在需要做的就是找出如何抵消小时数,所以现在应该是4小时
非常感谢在网上搜索了很多信息后,我无法获得任何内置功能。也许有任何函数,但对我来说,我用这样的代码,它真的为我工作。只需复制粘贴它并根据您的文本视图设置timerTV
var cT: CountDownTimer? = null
fun timer() {
val calendar = Calendar.getInstance()
calendar.time
Log.d("Current time: ", calendar.time.toString())
val hourCurrent = calendar.get(Calendar.HOUR)
val minutCurrent = calendar.get(Calendar.MINUTE)
val secondCurrent = calendar.get(Calendar.SECOND)
var hourSub = 24 - hourCurrent
var minSub = 60 - minutCurrent
var secSub = 60 - secondCurrent
cT = object : CountDownTimer(1000, 1000) {
override fun onTick(millisUntilFinished: Long) {
timerTV.setText("$hourSub:$minSub:$secSub")
}
override fun onFinish() {
timer()
}
}
cT?.start()
}
override fun onDestroy() {
super.onDestroy()
cT?.cancel()
}
嘿,马克。首先阅读
时间
程序包文档。顺便说一下,这个问题很难理解。你可能想把它重写一下。如果它现在更有意义的话,你想把它整理一下吗?是的。你能提供一些你必须要从某个地方开始的代码吗?在我认为有帮助的地方添加了一些代码。我猜是在倒计时之后。我知道如何显示当前时间没有问题,但我需要获取剩余时间,因为我没有弄清楚我搜索了什么,但很多结果似乎是距离设定日期(如圣诞节或活动)还有几天/时间,很高兴我能帮助您。很抱歉给您指出一个不推荐使用的API,我的java有点过时:P