android - 圆形进度条(用于倒数计时器)

标签 android xml android-animation countdowntimer

好的,所以我有一个 15 秒的倒计时计时器,它工作得非常好,我想为那个计时器制作一个自定义的圆形进度条。

我想创建一个完整的圆圈,当计时器下降时取出“馅饼片(圆圈)”,直到不再有圆圈为止。

我更喜欢自己制作形状而不是使用预制图像,因为我希望任何手机上的质量都很好。我该怎么办?谢谢!

最佳答案

我发现这个例子非常好:http://mrigaen.blogspot.it/2013/12/create-circular-progress-bar-in-android.html

所以我以这种方式创建了我的进度条

<ProgressBar
    android:id="@+id/barTimer"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_centerInParent="true"
    android:progressDrawable="@drawable/circular_progress_bar" />

然后我为倒计时做了一个函数,其中:

private void startTimer(final int minuti) {
    countDownTimer = new CountDownTimer(60 * minuti * 1000, 500) {
        // 500 means, onTick function will be called at every 500 milliseconds

        @Override
        public void onTick(long leftTimeInMilliseconds) {
            long seconds = leftTimeInMilliseconds / 1000;
            int barVal= (barMax) - ((int)(seconds/60*100)+(int)(seconds%60));
            barTimer.setProgress(barVal);
            textTimer.setText(String.format("%02d", seconds/60) + ":" + String.format("%02d", seconds%60));
            // format the textview to show the easily readable format

        }
        @Override
        public void onFinish() {
            if(textTimer.getText().equals("00:00")){
                textTimer.setText("STOP");          
            }
            else{
                textTimer.setText("2:00");
            }
        }
    }.start();

}

更新

private void startTimer(final int minuti) {
    countDownTimer = new CountDownTimer(60 * minuti * 1000, 500) {
        // 500 means, onTick function will be called at every 500 milliseconds

        @Override
        public void onTick(long leftTimeInMilliseconds) {
            long seconds = leftTimeInMilliseconds / 1000;
            barTimer.setProgress((int)seconds);
            textTimer.setText(String.format("%02d", seconds/60) + ":" + String.format("%02d", seconds%60));
            // format the textview to show the easily readable format

        }
        @Override
        public void onFinish() {
            if(textTimer.getText().equals("00:00")){
                textTimer.setText("STOP"); 
            }
            else{
                textTimer.setText("2:00");
                barTimer.setProgress(60*minuti);
            }
        }
    }.start();

}  

关于android - 圆形进度条(用于倒数计时器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20010997/

相关文章:

java - Android Studio : Layout hierarchy problems

android - 在android中以编程方式禁用设备管理

xml - 替换 PostgreSQL 中的符号字符

android - ImageView 从左到右滑动动画,反之亦然

android - 我想用 Proguard 混淆 AndroidManifest.xml

android - 有没有办法为 APK 的 .obb 文件手动创建包文件夹?

java - 如何从 java 中的 DOM 解析器读取特定的 XML 标签<示例提到>

mysql - 将非常大的 XML 文件 (60GB) 导入 MySQL

android - SurfaceView.onDraw 未调用

android - 使用动画将 View 移动到屏幕顶部