Ich verwende einen kreisförmigen Fortschrittsbalken unter Android. Ich möchte die Farbe ändern. ich benutze
"?android:attr/progressBarStyleLargeInverse"
stil. So ändern Sie die Farbe des Fortschrittsbalkens.
Wie kann der Stil angepasst werden? Wie ist der Stil definiert?
Geben Sie im res/drawable-Ordner Folgendes ein:
progress.xml
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:pivotX="50%"
Android:pivotY="50%"
Android:fromDegrees="0"
Android:toDegrees="360">
<shape
Android:shape="ring"
Android:innerRadiusRatio="3"
Android:thicknessRatio="8"
Android:useLevel="false">
<size
Android:width="76dip"
Android:height="76dip" />
<gradient
Android:type="sweep"
Android:useLevel="false"
Android:startColor="#447a29"
Android:endColor="#00ffffff"
Android:angle="0"/>
</shape>
</rotate>
Stellen Sie startColor
und endColor
nach Ihrer Wahl ein.
Setzen Sie nun diesen progress.xml
in ProgressBar
s Hintergrund.
<ProgressBar
Android:id="@+id/ProgressBar01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:indeterminateDrawable="@drawable/progress"
/>
1.Erstellen Sie eine XML-Datei in einem Zeichnungsordner unter Ressource
benannt "progress.xml"
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromDegrees="0"
Android:pivotX="50%"
Android:pivotY="50%"
Android:toDegrees="360" >
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="8"
Android:useLevel="false" >
<size
Android:height="76dip"
Android:width="76dip" />
<gradient
Android:angle="0"
Android:endColor="color/pink"
Android:startColor="@Android:color/transparent"
Android:type="sweep"
Android:useLevel="false" />
</shape>
</rotate>
2. Dann machen Sie einen Fortschrittsbalken mit dem folgenden Snippet
<ProgressBar
style="?android:attr/progressBarStyleLarge"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_above="@+id/relativeLayout1"
Android:layout_centerHorizontal="true"
Android:layout_marginBottom="20dp"
Android:indeterminate="true"
Android:indeterminateDrawable="@drawable/progress" />
Für API 21 und höher. Legen Sie einfach die indeterminateTint-Eigenschaft fest. Mögen:
Android:indeterminateTint="@Android:color/holo_orange_dark"
So unterstützen Sie Pre-API 21-Geräte:
mProgressSpin.getIndeterminateDrawable()
.setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN );
Sie können die Farbe programmgesteuert ändern, indem Sie diesen Code verwenden:
ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
Android.graphics.PorterDuff.Mode.MULTIPLY);
Wenn Sie die Fortschrittsbalkenfarbe von ProgressDialog ändern möchten, können Sie Folgendes verwenden:
mDilog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface dialog) {
ProgressBar v = (ProgressBar)mDilog.findViewById(Android.R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
Android.graphics.PorterDuff.Mode.MULTIPLY);
}
});
Um Datos Antwort hinzuzufügen, finde ich, dass SRC_ATOP ein bevorzugter Filter für die Multiplikation ist, da er den Alphakanal besser unterstützt.
ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, Android.graphics.PorterDuff.Mode.SRC_ATOP);
Android: indeterminateTint = "@ color/progressbar"
Um die zirkuläre ProgressBar anzupassen, müssen Sie eine indeterminateDrawable erstellen, um eine benutzerdefinierte Fortschrittsleiste anzuzeigen
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fromDegrees="0"
Android:pivotX="50%"
Android:pivotY="50%"
Android:duration="1">
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="8"
Android:useLevel="false">
<size
Android:height="48dip"
Android:width="48dip" />
<gradient
Android:centerColor="#f96047"
Android:centerY="0.50"
Android:endColor="#fb9c8d"
Android:startColor="#f72d0c"
Android:type="sweep"
Android:useLevel="false" />
</shape>
</rotate>
Wir müssen drawable in der Fortschrittsleiste wie folgt einfügen:
<ProgressBar
Android:layout_width="wrap_content"
Android:layout_centerInParent="true"
style="?android:attr/progressBarStyleLarge"
Android:visibility="visible"
Android:progressDrawable="@drawable/widget_progressbar"
Android:indeterminateDrawable="@drawable/widget_progressbar"
Android:layout_height="wrap_content" />
styles.xml
<style name="CircularProgress" parent="Theme.AppCompat.Light">
<item name="colorAccent">@color/yellow</item>
</style>
<ProgressBar
Android:layout_width="@dimen/d_40"
Android:layout_height="@dimen/d_40"
Android:indeterminate="true"
style="@style/Widget.AppCompat.ProgressBar"
Android:theme="@style/CircularProgress"/>
Das ist Arbeit für mich.
<ProgressBar
Android:id="@+id/ProgressBar01"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:indeterminateTint="@color/black"/>
für mich arbeitete das Thema nicht mit accentColor. Aber es hat mit colorControlActivated funktioniert
<style name="Progressbar.White" parent="AppTheme">
<item name="colorControlActivated">@color/white</item>
</style>
<ProgressBar
Android:layout_width="@dimen/d_40"
Android:layout_height="@dimen/d_40"
Android:indeterminate="true"
Android:theme="@style/Progressbar.White"/>
Fügen Sie Ihrem Aktivitätsthema item colorControlActivated hinzu, beispielsweise:
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="colorControlActivated">@color/rocket_black</item>
...
</style>
Wenden Sie diesen Stil auf Ihre Aktivität im Manifest an:
<activity
Android:name=".packege.YourActivity"
Android:theme="@style/AppTheme.NoActionBar"/>
Android:indeterminateTint="@color/yellow"
Dies ist für mich eine Arbeit, fügen Sie diese Zeile einfach in Ihren progressBar-XML-Code ein
Sie können dies ganz einfach mit einem benutzerdefinierten Dialogfeld tun, indem Sie die XML-Datei von anderen Antworten verwenden:
<?xml version="1.0" encoding="utf-8"?>
<shape
Android:innerRadiusRatio="3"
Android:shape="ring"
Android:thicknessRatio="8"
Android:useLevel="false" >
<size
Android:height="76dip"
Android:width="76dip" />
<gradient
Android:angle="0"
Android:endColor="@color/oceanBlue"
Android:startColor="@Android:color/transparent"
Android:type="sweep"
Android:useLevel="false" />
</shape>
Mach einfach das:
public static class ModifiedProgressDialog extends ProgressDialog {
public ModifiedProgressDialog(Context context) {
super(context);
}
@Override
public void show() {
super.show();
setIndeterminateDrawable(getContext().getResources().getDrawable(R.drawable.blue_progress));
}
}
Sie können einen Stil zum Ändern der Fortschrittsfarbe verwenden (siehe unten)
<style name="AppTheme.anyName">
<item name="colorAccent">YOUR_COLOR</item>
</style>
und verwenden Sie es in der Fortschrittsleiste wie unten
<ProgressBar
style="?android:attr/progressBarStyle"
Android:theme="@style/AppTheme.WhiteAccent"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginBottom="@dimen/dimen_30"
/>
Ich hoffe es hilft.
Zur Ergänzung Muhamed Riyas Ms Top-gewählte Antwort:
Schnellere Rotation
Android:toDegrees="1080"
Dünnerer Ring
Android:thicknessRatio="16"
Hellweiß
Android:endColor="#80ffffff"
check this antworte out:
für mich mussten diese beiden Zeilen vorhanden sein, damit sie funktionieren und die Farbe ändern:
Android:indeterminateTint="@color/yourColor"
Android:indeterminateTintMode="src_in"
PS: aber es ist nur verfügbar von Android 21
Für alle, die sich fragen, wie sie die Geschwindigkeit beim benutzerdefinierten Fortschritt steigern können
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:pivotX="50%" Android:pivotY="50%" Android:fromDegrees="0"
Android:toDegrees="1080"><!--HERE YOU COULD INCREASE SPEED BY SETTING TODEGRESS(1080 is 3 loops instead of 1 in same amt of time)-->
<shape Android:shape="ring" Android:innerRadiusRatio="3"
Android:thicknessRatio="8" Android:useLevel="false">
<size Android:width="76dip" Android:height="76dip" />
<gradient Android:type="sweep" Android:useLevel="false"
Android:startColor="#447a29"
Android:endColor="#447a29"
Android:angle="0"
/>
</shape>