在Android中,要實現(xiàn)一個具有多狀態(tài)顯示的進(jìn)度條(ProgressBar),你可以使用ProgressBar
的屬性和一些技巧。以下是實現(xiàn)這一功能的方法:
res/drawable
目錄下創(chuàng)建一個新的XML文件,例如progress_drawable.xml
。在這個文件中,定義不同狀態(tài)的進(jìn)度條樣式。例如:<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="4dp" />
<gradient
android:startColor="#80FFFFFF"
android:centerColor="#80FFFFFF"
android:centerY="0.75"
android:endColor="#00FFFFFF"
android:angle="270" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="4dp" />
<gradient
android:startColor="#FFFFFF"
android:centerColor="#FFFFFF"
android:centerY="0.75"
android:endColor="#00FFFFFF"
android:angle="270" />
</shape>
</clip>
</item>
</layer-list>
在這個例子中,我們定義了兩個狀態(tài):secondaryProgress
和progress
。secondaryProgress
表示次要進(jìn)度,而progress
表示主要進(jìn)度。
ProgressBar
,并將其android:indeterminate
屬性設(shè)置為false
。然后,將android:progressDrawable
屬性設(shè)置為你剛剛創(chuàng)建的progress_drawable.xml
文件:<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:progressDrawable="@drawable/progress_drawable" />
ProgressBar
的setSecondaryProgress()
和setProgress()
方法來改變次要進(jìn)度和主要進(jìn)度的值:ProgressBar progressBar = findViewById(R.id.progressBar);
// 設(shè)置主要進(jìn)度
progressBar.setProgress(50);
// 設(shè)置次要進(jìn)度
progressBar.setSecondaryProgress(75);
現(xiàn)在,你應(yīng)該可以看到一個具有多狀態(tài)顯示的進(jìn)度條,可以根據(jù)需要設(shè)置不同的進(jìn)度值。