Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >两个给定日期之间的进度条- Android Studio

两个给定日期之间的进度条- Android Studio
EN

Stack Overflow用户
提问于 2021-04-14 10:53:51
回答 2查看 253关注 0票数 2

我想要一个进度条来显示给定日期之间的剩余时间。我已经在我的应用程序上设置了一个计时器,它每秒刷新一次,并给出两个给定日期之间的时间差。

以下是计算日期之间时间的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public String printDifference(Date startDate, Date endDate) {
    //milliseconds
    long different = endDate.getTime() - startDate.getTime();


    System.out.println("startDate : " + startDate);
    System.out.println("endDate : "+ endDate);
    System.out.println("different : " + different);

    long secondsInMilli = 1000;
    long minutesInMilli = secondsInMilli * 60;
    long hoursInMilli = minutesInMilli * 60;
    long daysInMilli = hoursInMilli * 24;

    long elapsedDays = different / daysInMilli;
    different = different % daysInMilli;

    long elapsedHours = different / hoursInMilli;
    String hour = String.valueOf(elapsedHours);
    different = different % hoursInMilli;

    long elapsedMinutes = different / minutesInMilli;
    String mins = String.valueOf(elapsedMinutes);
    different = different % minutesInMilli;

    long elapsedSeconds = different / secondsInMilli;
    String sec = String.valueOf(elapsedSeconds);
    if(Integer.parseInt(hour)<10){
        hour = "0"+hour;
    }
    if(Integer.parseInt(mins)<10){
        mins = "0"+mins;
    }
     if(Integer.parseInt(sec)<10){
        sec = "0"+sec;
    }


    return hour + ":" + mins + ":" + sec;
}

这是更新显示的代码,使其看起来像是倒计时:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
private void updateDisplay() {
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {

        @Override
        public void run() {
            Date curr = Calendar.getInstance().getTime();

            Calendar tmr = Calendar.getInstance();
            tmr.add(Calendar.DAY_OF_MONTH, 1);

            Date tmrTime = tmr.getTime();

            SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy, hh:mm:ss aa", Locale.getDefault());
            SimpleDateFormat df2 = new SimpleDateFormat("dd.MM.yyyy", Locale.getDefault());



            String currentDate = df.format(curr);
            String shewanDate = df2.format(curr)+", "+shewan+":00 pm";
            String bayaniDate = df2.format(curr)+", "+bayani+":00 am";
            String bayaniDateTmr = df2.format(tmrTime)+", "+bayani+":00 am";

            Date currentD = new Date(), shewanD = new Date(), bayaniD = new Date(), bayaniTmrD = new Date();
            try {
                currentD = df.parse(currentDate);
                shewanD = df.parse(shewanDate);
                bayaniD = df.parse(bayaniDate);
                bayaniTmrD = df.parse(bayaniDateTmr);
            } catch (ParseException e) {
                e.printStackTrace();
            }

            
            try {
                    currentD = df.parse(currentDate);
                    bayaniTmrD = df.parse(bayaniDateTmr);

                    time.setText(printDifference(currentD, bayaniTmrD));
            } catch (ParseException e) {
                e.printStackTrace();
            }


    },0,1000);//Update text every second
}

如何制作一个水平进度条来显示给定的两个日期之间的剩余时间。提前谢谢。

编辑:这是我使用以下代码得到的结果:

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-04-14 12:07:43

给定两个日期,您可以将它们之间的差值计算为长值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    long startDate = ....  ;
    long endDate = .....  //calendar.getTimeInMillis();
    long diffDate = endDate - startDate;

然后获取currentDate always as long值:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    long currentDate =  ... ;
    long currentDiff = currentDate - startDate;

最后,计算应用于ProgressBar的进度:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    float progress = (float)currentDiff/diffDate*100;

并更新您的ProgressBar:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    LinearProgressIndicator linearProgressIndicator = findViewById(R.id.progress);
    linearProgressIndicator.setProgress((int)progress);

通过以下方式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    <com.google.android.material.progressindicator.LinearProgressIndicator
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/progress"
        android:indeterminate="false"/>

票数 1
EN

Stack Overflow用户

发布于 2021-04-14 11:08:25

这样做。计算日期之间的差异,并将其div为100(进度条0..100)以获得进度条步长。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
int progress = 100;
long diff = endDateValue.getTime() - startDateValue.getTime();
val step = dif/100;
val currentStateDiff = endDateValue.getTime() - new Date().getTime();
if(currentStateDiff <= 0) progress = 0 else progress = currentStateDiff / step
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67090316

复制
相关文章
Visual Studio 中两个窗体(WinForm)之间相互传值的方法
编写WinowsForm应用程序时,实现两个窗体之间相互传递值的方法其实很简单。以下用一个例子说明:在名为FormMain主窗体运行过程中利用名为FormInfo窗体,获取用户输入信息,并将这些信息返回给FormMain
zls365
2021/04/23
2.3K0
Visual Studio 中两个窗体(WinForm)之间相互传值的方法
Visual Studio 中两个窗体(WinForm)之间相互传值的方法
编写WinowsForm应用程序时,实现两个窗体之间相互传递值的方法其实很简单。以下用一个例子说明:在名为FormMain主窗体运行过程中利用名为FormInfo窗体,获取用户输入信息,并将这些信息返回给FormMain
用户9127601
2021/11/01
1.8K0
Unity与Android Studio✨之间那些不清不楚的小秘密✨(Android Studio与unity交互)
前言:因为最近在学习Unity与安卓之间的交互,所以在网上搜寻了很多关于这方面的东西。因为自己在网上搜的时候,感觉大家的东西都有些零碎,该有的差不多都有了,但是都不够全面,所以自己写篇文章用来整理这些精华 Unity与Android Studio互相调用的知识给大家分享一下
呆呆敲代码的小Y
2021/08/12
4K0
Android Studio 调试会出现安装两个相同的APP?
默认打开的activity如: <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> 注释掉,重新运行就行了.
一个会写诗的程序员
2018/08/20
7250
android进度条
为者败之,执者失之。——《道德经》 原生安卓实现的进度条 package com.example.uidemo.activity; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ProgressBar; import android.widget.SeekBar; import android.wi
阿超
2022/08/16
1.9K0
android的WebView进度条
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/110181.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/05
6790
【Android应用开发】Android Studio 简介 (Android Studio Overview)
Android Studio 来源 : Android Studio 是 Intelij IDEA 的免费版本 + Android SDK 集成的;
韩曙亮
2023/03/27
2.3K0
【Android应用开发】Android Studio 简介 (Android Studio Overview)
Android Studio
0安装教程 按下面教程进行下载安装配置(Windows 10  64位) Android Studio 和 SDK 下载、安装和环境变量配置 安装过程中遇到如下问题及解决方法 错误描述: Gradle sync failed: Unknown host 'services.gradle.org'. You may need to adjust the proxy settings in Gradle. Consult IDE log for more details (Help | Show Log)
用户1733354
2018/05/22
2.8K0
Android圆形进度条
圆形进度条.jpg 先在attrs.xml中自定义属性 <declare-styleable name="CircleProgressBar"> <attr name="backgroundColor" format="color" /> <attr name="progressColor" format="color" /> <attr name="progressWidth" format="dimension" /> <attr
aruba
2020/07/03
8670
Android圆形进度条
Android开发(25) 两个App之间使用intent交换数据
两个App之间如何进行数据交换,像“使用intent调用系统自带的拍照应用并获得结果” 是一种很方便的形式。 它发送一个 Intent,这个Intent指明启动了另外一个App,完成任务后指定返回结果,原先的App接收返回的结果。
张云飞Vir
2020/03/16
1.6K0
android studio接口调用_android studio jdk版本
Android 做jni的时候 需要根据native java类生成对应的.h头文件,然后根据.h头文件写cpp文件。
全栈程序员站长
2022/11/08
1.5K0
android studio接口调用_android studio jdk版本
Android studio SweetAlert for Android
Android零基础系列教程:Android基础课程UI-动画_哔哩哔哩_bilibili
用户9227784
2021/12/02
2.5K0
Android – 环形进度条
环形进度条 ring_circle_progress.gif 如上图所示,之所以想到写这个,因为项目中有这样的需求,所以自己就去琢磨琢磨该怎么去实现这个需求。 实现思路: ① 画个圆弧 ② 圆弧
code_horse
2018/07/02
1.2K0
android ProgressBar(进度条)
本节给大家带来的是Android基本UI控件中的ProgressBar(进度条),ProgressBar的应用场景很多,比如 用户登录时,后台在发请求,以及等待服务器返回信息,这个时候会用到进度条;或者当在进行一些比较 耗时的操作,需要等待一段较长的时间,这个时候如果没有提示,用户可能会以为程序Carsh或者手机死机 了,这样会大大降低用户体验,所以在需要进行耗时操作的地方,添加上进度条,让用户知道当前的程序 在执行中,也可以直观的告诉用户当前任务的执行进度等!使用进度条可以给我带来这样的便利! 好了,开始讲解本节内容~ 对了,ProgressBar官方API文档:ProgressBar
233333
2021/04/09
1.4K0
android ProgressBar(进度条)
点击加载更多

相似问题

Android Studio进度条

20

两个给定日期之间的天数

20

两个给定日期之间的随机日期

30

Android Studio -创建模拟进度条

11

计算Android Studio两个位置之间的距离

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文