webentwicklung-frage-antwort-db.com.de

Wie kann ich die Farbe in der kreisförmigen Fortschrittsleiste ändern?

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?

118
mooongcle

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 ProgressBars Hintergrund.

So was

<ProgressBar
  Android:id="@+id/ProgressBar01" 
 Android:layout_width="wrap_content"
 Android:layout_height="wrap_content"
 Android:indeterminateDrawable="@drawable/progress"
 />
130
Chirag

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" />
125
Muhamed Riyas M

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 );
92
Student222

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);

        }
    });
64
Dadroid

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);
35
aikmanr

Android: indeterminateTint = "@ color/progressbar"

19
Bhupinder Singh

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" />
11
Akshay Mukadam

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"/>
11
Hardik Vasani

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"/>
9
Kaloglu

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"/>
7
S.Javed

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"/>
3
Vladislav
Android:indeterminateTint="@color/yellow"

Dies ist für mich eine Arbeit, fügen Sie diese Zeile einfach in Ihren progressBar-XML-Code ein 

3
Yıldırım

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. 

1
Rahul

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"
0
Suragch

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

0

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>

0
Behl