gpt4 book ai didi

java - Android - ProgressBar setProgress() 方法不更新进度条可绘制对象

转载 作者:行者123 更新时间:2023-11-30 00:35:22 27 4
gpt4 key购买 nike

我设置了一个循环进度条(从 0 到 100)来显示时间运行进度(从 1:00 到 0:00)。时间为1:00时,进度必须为0,时间为0:00时,进度必须为100。

<ImageView
android:layout_width="@dimen/_56sdp"
android:layout_height="@dimen/_56sdp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/_2sdp"
android:src="@drawable/a_circular_black" />

<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="@dimen/_56sdp"
android:layout_height="@dimen/_56sdp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/_2sdp"
android:max="100"
android:progress="26" //I set the progress 26 to show what it will be look like. Normally for 1:00 the progress must be 0.
android:progressDrawable="@drawable/a_circular" />

<TextView
android:id="@+id/textViewTimer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/_17sdp"
android:text="1:00"
android:textColor="#000000"
android:textSize="@dimen/_18sdp"
android:textStyle="bold" />

这是进度条背景:

    <?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/progress">
<rotate
android:fromDegrees="270"
android:toDegrees="270"
android:pivotX="50%"
android:pivotY="50%" >
<shape
android:innerRadiusRatio="2.5"
android:shape="ring"
android:thickness="@dimen/_3sdp" >
<size android:width="@dimen/_56sdp" android:height="@dimen/_56sdp" />
<gradient
android:centerColor="#FFA708"
android:endColor="#FFA708"
android:startColor="#FFA708"
android:type="sweep" />
</shape>
</rotate>
</item>
</layer-list>

这是图片背景:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<size
android:width="60dp"
android:height="60dp" />
<stroke
android:width="3dp"
android:color="#ccc" />
<padding
android:bottom="3dp"
android:left="3dp"
android:right="3dp"
android:top="3dp" />
</shape>
</item>
<item android:id="@android:id/progress">
<rotate
android:fromDegrees="270"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="270">
<shape
android:shape="oval">
<size
android:width="60dp"
android:height="60dp" />
<gradient
android:centerColor="#000"
android:endColor="#000"
android:startColor="#000"
android:type="sweep" />

<padding
android:bottom="3dp"
android:left="3dp"
android:right="3dp"
android:top="3dp" />
</shape>
</rotate>
</item>
<item>
<shape android:shape="oval">
<size
android:width="60dp"
android:height="60dp" />
<solid android:color="#ccc" />
</shape>
</item>
</layer-list>.

因此,在我的布局预览中它看起来像这样:

I set the progress 26 to show what it will be look like. Normally for 1:00 the progress must be 0.

在我的 onCreate 中,我将进度设置为 0

progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setProgress(0);

然后,当我的时间在线程中运行时,计时器会自行更新:

private class TimeRun implements Runnable {

@Override
public void run() {
while (timeLeft > 0) {
try {
Thread.sleep(100);
timeLeft = timeLeft - 100;
} catch (InterruptedException e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
progressBar.setProgress(100 - (int) ((double) timeLeft / ((double) 60000) * 100));
if (timeLeft < 10000)
textViewTimer.setText("0:0" + timeLeft / 1000);
else
textViewTimer.setText("0:" + timeLeft / 1000);
}
});
}
}

当我运行 Activity 时,进度条显示为 100,我以为它应该是 0(黑色圆圈)。它在运行时没有显示任何变化。 TextView 正常更新,但进度条显示没有变化。日志显示进度正在更新,但图形上没有任何变化。

progress bar doesn't update我试图通过发布一个 Runnable 来更新它,我也检查了这个问题,但答案对我没有帮助

android progressBar does not update progress view/drawable

你能给我一些解决方案吗?

最佳答案

看看这个解决方案。有效。 http://demonuts.com/2017/01/02/android-circular-progress-bar-percentage/这是由于您的进度条背景。

关于java - Android - ProgressBar setProgress() 方法不更新进度条可绘制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43489433/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com