Ändern Sie die Fortschrittsbalkenfarbe durch CODE ONLY in Android

Ich habe hier viele Themen gelesen, aber ich kann meine Antwort nicht finden. Ich habe eine progressBar mit der ProgressBar Klasse.

Tu das gerade an:

  • Scrolling-Effekt mit mehreren Viewpagers
  • Android-Set bearbeiten Textstil weltweit im Thema funktioniert nicht
  • Einen neuen Kontrollpunkt finden, wenn die Endpunktänderung in der kubischen Bezierkurve erfolgt
  • Wie bekomme ich einen Hinweis auf eine Schaltfläche, die in einem benutzerdefinierten Dialog erstellt wurde, mit einem XML-Layout?
  • Android Studio: Wie generiere ich signierte Apk mit Gradle?
  • App-Dateigrößenunterschiede in Android und iOS
  • progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal); 

    Ich muss die Farbe von diesem ändern, mit Eingabewert wie so:

     int color = "red in RGB value".progressBar.setColor(color) 

    oder etwas ähnliches…

    Ich kann kein XML-Layout verwenden, da der Fortschrittsbalken für Benutzer anpassbar ist. Ich wäre sehr dankbar, wenn du mir helfen kannst.

    Danke für deine Zeit,

  • Android: Überprüfen Sie, ob der Dienst läuft. BindService
  • Aktualisieren auf Android Studio 3.0 Canary 2 geben Build-Fehler
  • Android Fragment Lebenszyklus über Orientierung ändert sich
  • ... haben Sie diese Aktivität in Ihrem AndroidManifest.xml deklariert
  • Wie blockiere ich Anrufe in Android
  • Ändere den xcrun-Entwicklerpfad für Android Studio
  • 9 Solutions collect form web for “Ändern Sie die Fortschrittsbalkenfarbe durch CODE ONLY in Android”

    Dies wird viel helfen, keine Notwendigkeit, so viel Kodierung zu tun 🙂

     ProgressBar spinner = new android.widget.ProgressBar( context, null, android.R.attr.progressBarStyle); spinner.getIndeterminateDrawable().setColorFilter(0xFFFF0000,android.graphics.PorterDuff.Mode.MULTIPLY); 

    Wie ich bei einem Thema hier geholfen habe, aber mich nicht an den Link erinnern kann, schicke ich meine komplette Lösung, die für meine Bedürfnisse gut funktioniert:

      // Draw a simple progressBar from xml progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal); // Convert the color (Decimal value) to HEX value: (eg: #4b96a0) String color = colorDecToHex(75, 150, 160); // Define a shape with rounded corners final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 }; ShapeDrawable pgDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null, null)); // Sets the progressBar color pgDrawable.getPaint().setColor(Color.parseColor(color)); // Adds the drawable to your progressBar ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL); progressBar.setProgressDrawable(progress); // Sets a background to have the 3D effect progressBar.setBackgroundDrawable(Utils.getActivity().getResources() .getDrawable(android.R.drawable.progress_horizontal)); // Adds your progressBar to your layout contentLayout.addView(progressBar); 

    Und hier ist der Code, um DECIMAL Farbwerte in HEXADECIMAL umzuwandeln:

     public static String colorDecToHex(int p_red, int p_green, int p_blue) { String red = Integer.toHexString(p_red); String green = Integer.toHexString(p_green); String blue = Integer.toHexString(p_blue); if (red.length() == 1) { red = "0" + red; } if (green.length() == 1) { green = "0" + green; } if (blue.length() == 1) { blue = "0" + blue; } String colorHex = "#" + red + green + blue; return colorHex; } 

    Ich denke, die letzte Methode ist nicht so sauber, aber es funktioniert gut.

    Hoffe, diese gut helfen, zu viel Zeit verschwendet auf dieser Fortschrittsbar.

    Es ist möglich, die Fortschrittsleiste zu färben, indem man den Farbfilter auf den Fortschrittsbalken festlegt:

     Drawable drawable = progressBar.getProgressDrawable(); drawable.setColorFilter(new LightingColorFilter(0xFF000000, customColorInt)); 

    Aktualisieren

    In neueren Versionen von Android (21 Werke) können Sie die Farbe einer Fortschrittsanzeige programmgesteuert ändern, indem Sie nur setProgressTintList .

    Um es rot zu setzen, verwenden Sie:

     //bar is a ProgressBar bar.setProgressTintList(ColorStateList.valueOf(Color.RED)); 

    Das funktioniert bei AppCompat: DrawableCompat.setTint (progressBar.getProgressDrawable (), tintColor);

    In dem Fall, dass Sie den Hintergrund und den Fortschrittsbalken in verschiedenen Farben färben müssen.

    Progress_drawable.xml

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape android:shape="rectangle" > <solid android:color="@color/white" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <solid android:color="@color/green" /> </shape> </clip> </item> </layer-list> 

    Es ist möglich, programmgesteuert, um seine Layer-Listen-Elemente zu dekompilieren und sie separat zu färben:

     LayerDrawable progressBarDrawable = (LayerDrawable) progressBar.getProgressDrawable(); Drawable backgroundDrawable = progressBarDrawable.getDrawable(0); Drawable progressDrawable = progressBarDrawable.getDrawable(1); backgroundDrawable.setColorFilter(ContextCompat.getColor(this.getContext(), R.color.white), PorterDuff.Mode.SRC_IN); progressDrawable.setColorFilter(ContextCompat.getColor(this.getContext(), R.color.red), PorterDuff.Mode.SRC_IN); 

    Ich habe Standardfarbe in xml durch ziehbar gegeben .

    Ich habe es programmatisch geändert.

    Activity_splasg.xml :

     <ProgressBar android:id="@+id/splashProgressBar" android:progressDrawable="@drawable/splash_progress_drawable" android:layout_width="match_parent" android:layout_height="wrap_content" android:max="100" android:progress="50" style="?android:attr/progressBarStyleHorizontal" android:layout_alignParentBottom="true" /> 

    Splash_progress_drawable.xml :

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <solid android:color="@android:color/transparent" /> </shape> </item> <item android:id="@android:id/progress"> <clip> <shape> <solid android:color="#e5c771" /> </shape> </clip> </item> </layer-list> 

    Jetzt wie man ProgressDrawable Farbe programmatisch ändert.

     ProgressBar splashProgressBar = (ProgressBar)findViewById(R.id.splashProgressBar); Drawable bgDrawable = splashProgressBar.getProgressDrawable(); bgDrawable.setColorFilter(Color.BLUE, android.graphics.PorterDuff.Mode.MULTIPLY); splashProgressBar.setProgressDrawable(bgDrawable); 

    Hoffe das wird dir helfen

    Dieser Beitrag ist, was du suchst: Wie kann man die Fortschrittsfarbe der Fortschrittsbalken in Android ändern

    Wenn Sie möchten, dass der Benutzer seine eigenen Farben wählt, machen Sie einfach mehrere zerlegbare XML-Dateien für jede Farbe, und wählen Sie sie basierend auf der Wahl des Benutzers.

    progressbar.setIndeterminateTintList(ColorStateList.valueOf(Color.RED));

    Es funktioniert nur über API 21

    Das Android ist ein Google Android Fan-Website, Alles über Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.