गोलाकार प्रगति पट्टी में रंग कैसे बदलें?


147

मैं Android पर परिपत्र प्रगति पट्टी का उपयोग कर रहा हूं। मैं इसका रंग बदलना चाहता हूं। मै इस्तेमाल कर रहा हूँ

"?android:attr/progressBarStyleLargeInverse" 

अंदाज। तो प्रगति पट्टी का रंग कैसे बदलना है।

शैली को कस्टम कैसे करें? इसके अलावा, शैली की परिभाषा क्या है?

जवाबों:


163

Res / drawable फ़ोल्डर में, इसे डालें:

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> 

सेट startColorऔर endColorअपनी पसंद के अनुसार।

अब सेट है कि progress.xmlमें ProgressBarकी backgound।

ऐशे ही

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

1
जब मैं कस्टम दृश्य सूची हेडर के रूप में कस्टम संवाद का उपयोग कर रहा हूं तो यह काम नहीं कर रहा है। क्या दूसरे दृष्टिकोण की आवश्यकता है?
पंकज कुमार

22
यह एक हरे रंग की अंगूठी का आकार बनाता है, लेकिन वास्तविक प्रोग्रेसबार का स्पिनर अभी भी दिखाई देता है।
mdupls

क्या केवल एक ही दिशा में घूमते हुए रंग बनाने का एक तरीका है?
Theoshosh

48
"एंड्रॉइड: बैकग्राउंड" के साथ बैकग्राउंड सेट करने के बजाय, "android: indeterminateDrawable =" @ drawable / प्रगति "का उपयोग करें, जैसा कि एक अन्य उत्तर द्वारा हाइलाइट किया गया है
baekacaek

1
Android का उपयोग करें: startColor = "# 447a29" android: endColor = "# 227a29" मान अलग-अलग हैं ताकि यह एक स्थिर सर्कल न बना सके।
अभिषेक सेनगुप्ता

137

एपीआई 21 और उच्चतर के लिए। बस अनिश्चितकालीन संपत्ति सेट करें। पसंद:

android:indeterminateTint="@android:color/holo_orange_dark"

प्री-एपीआई 21 उपकरणों का समर्थन करने के लिए:

mProgressSpin.getIndeterminateDrawable()
                .setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN );

2
साथ style="?android:attr/progressBarStyle"काम नहीं करता
user25

यदि मेरे पास रंगों की एक सरणी है और मैं प्रत्येक प्रगति पट्टी पर रंग सरणी में रंग सेट करना चाहता हूं
राजकुमार

यह मेरे लिए ठीक काम किया, बस प्रगति की अंगूठी का रंग बदलने के लिए :)
गैस्टोन सेलेन

एपीआई के पहलू पर जोर देने के लिए धन्यवाद
JamisonMan111

अगर मैं यह रंग डालती हूँ तो यह कताई की हुई रिंग को रंग देती है, लेकिन यह सब एक पूर्ण रिंग में बदल जाता है, इसलिए आप इसे हिलते हुए नहीं देखें
लुकास ज़नेला

135

1.First संसाधन के तहत drawable फ़ोल्डर में एक xml फ़ाइल बनाएँ

नाम "प्रगति। 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. फिर फोलोइंग स्निपेट का उपयोग करके एक प्रगति बार बनायें

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

हाय मुहम्मद, मैं कस्टम प्रगति पहिया का उपयोग कर रहा हूं, मैंने रनटाइम में प्रगति पहिया में रंग बदलने की कोशिश की। मैं कोशिश कर रहा हूं, एक बार जब मैं एक बटन पर क्लिक करता हूं, तो प्रगति शुरू होती है। मैंने हरे रंग को निर्धारित किया है। प्रगति 100% तक पहुंचने के बाद, मैं चाहता हूं कि यह फिर से शुरू हो, केवल इस बार इसका रंग लाल होना चाहिए। लेकिन, मैं ऐसा करने के लिए .. यदि संभव हो तो कृपया मेरी मदद में सक्षम नहीं किया जा सका
हरिकृष्णन

1
धन्यवाद। यह 100% काम करता है। एंड्रॉइड के लिए प्रगति। xml सेट करें: अनिश्चित काल के लिए
लियो गुयेन

जब मैंने यह कोशिश की, तो इसने घेरे की एक मोटी सीमा बनाई। कोई विचार कैसे सीमा को कम करने के लिए?
तेजस

हाय तेजस, इस लाइन को बदलने की कोशिश करें android: मोटाई। अनुपात = "8" प्रगति के अंदर। xml। आप विभिन्न मूल्यों की कोशिश कर सकते हैं। आशा है कि यह काम करेगा।
मुहम्मद रियास M

यह काम करता है लेकिन दो रिंगों के बजाय एक दूसरे के खिलाफ घूमने से मुझे सिर्फ एक रिंग मिलती है। इसके लिए कोई फिक्स?
AX

66

आप इस कोड का उपयोग करके रंग बदल सकते हैं:

ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
                        android.graphics.PorterDuff.Mode.MULTIPLY);

यदि आप ProgressDialog का प्रगति रंग बदलना चाहते हैं, तो आप इसका उपयोग कर सकते हैं:

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

        }
    });

अरे मैं ProgressDialog के Progress Bar को Progress.xml से कैसे जोड़ूंगा ??
मेघल अग्रवाल

यदि मेरे पास रंगों की एक सरणी है और मैं प्रत्येक प्रगति पट्टी पर रंग सरणी में रंग सेट करना चाहता हूं
राजकुमार

36

डाटो के उत्तर में जोड़ने के लिए, मैं SRC_ATOP को एक बेहतर फिल्टर के रूप में खोजना चाहता हूं क्योंकि यह अल्फा चैनल का बेहतर समर्थन करता है।

ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.SRC_ATOP);

1
2.3.x पर यह आपको एक ठोस भरा चक्र देता है जहाँ MULTIPLY पारदर्शिता को बनाए रखता है।
अज़देव

यदि मेरे पास रंगों की एक सरणी है और मैं प्रत्येक प्रगति पट्टी पर रंग सरणी में रंग सेट करना चाहता हूं
राजकुमार

28

एंड्रॉयड: indeterminateTint = "@ रंग / प्रगति बार"


प्रगति पट्टी में ऊपर की विशेषता का उपयोग करें: indeterminateTint = आपका रंग
भूपिंदर सिंह

सर्वश्रेष्ठ उत्तर और यह सभी संस्करणों के लिए भी समर्थन करेगा
पंकज कुमार

यह आप सभी की जरूरत है, इन पागल जवाब नहीं। हालांकि अन्य लोगों को पूर्ण कोड ब्लॉक से लाभ होगा।
StarWind0

7
indeterminateTint API 21 या उच्चतर के लिए उपलब्ध है। अगर वह तुम्हारे लिए काम करता है, भयानक!
एंडी वाइंस्टीन

15

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


14
android:indeterminateTint="@color/yellow"

यह मेरे लिए काम कर रहा है, बस इस लाइन को अपने प्रोग्रेसबार xml कोड में जोड़ें


12

मेरे लिए यही काम है।

<ProgressBar
android:id="@+id/ProgressBar01" 
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateTint="@color/black"/>

4
एपीआई स्तर 21 से उपलब्ध
viplezer

11

परिपत्र प्रगति को अनुकूलित करने के लिए हमें कस्टम प्रगति बार दिखाने के लिए एक अनिश्चित बनाने योग्य बनाने की आवश्यकता है

<?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>

हमें नीचे के रूप में प्रोग्रेसबार में शामिल करने योग्य बनाने की आवश्यकता है:

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

rotateटैग पहले गायब है shape। इसके बिना, तरक्की स्थिर होगी
रेन बांदेइरा

@ रेननबांडिरा आप उत्तर को सुधार सकते हैं यदि इसके सही होने पर
अक्षय मुकदम

9

मेरे लिए विषय लहजे के साथ काम नहीं कर रहा था। लेकिन इसने colorControlActivated के साथ काम किया

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


4

इस उत्तर की जाँच करें :

मेरे लिए, काम करने और रंग बदलने के लिए इन दो पंक्तियों का होना आवश्यक था:

android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"

पुनश्च: लेकिन यह केवल Android 21 से उपलब्ध है


4

एक शैली का उपयोग करने का प्रयास करें और colorControlActivated भी वांछित ProgressBar रंग सेट करें।

<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
    <item name="colorControlActivated">@color/COLOR</item>
</style>

फिर प्रोग्रेसबार की थीम को नए अंदाज में सेट करें।

<ProgressBar
    android:id="@+id/progress_bar"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:theme="@style/progressColor"
 />

3

अपनी गतिविधि थीम में जोड़ें , उदाहरण के लिए आइटम colorControlActivated :

    <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            ...
            <item name="colorControlActivated">@color/rocket_black</item>
            ...
    </style>

अपनी शैली को अपनी गतिविधि में प्रकट करें:

<activity
    android:name=".packege.YourActivity"
    android:theme="@style/AppTheme.NoActionBar"/>

2

आप ऐसा कर सकते हैं एक कस्टम संवाद के साथ बहुत आसानी से, अन्य उत्तरों से xml का पुन: उपयोग:

<?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>

बस यह करें:

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

2

आप नीचे की तरह प्रगति के रंग को बदलने के लिए एक शैली का उपयोग कर सकते हैं

 <style name="AppTheme.anyName">
        <item name="colorAccent">YOUR_COLOR</item>
    </style>

और नीचे की तरह प्रोग्रेसबार में इसका उपयोग करें

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

आशा करता हूँ की ये काम करेगा।


1

उन सभी के लिए जो सोच रहे हैं कि कस्टम प्रगति की गति कैसे बढ़ाई जाए

  <?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

यह आपके Res / Values ​​/ Colors.xml से रंग मूल्य लेता है -> colorAccent यदि आप इसे बदलते हैं, तो आपका प्रगतिबार रंग aswell बदल जाता है।


0

सेट android:indeterminateDrawable="@drawable/progress_custom_rotate"

कस्टम सर्कुलर रिंग प्रोग्रेस बार के लिए कोड का उपयोग करें

नीचे दिए गए कोड को कॉपी करें और ड्रा करने योग्य फ़ोल्डर में "प्रगति_ कस्टम_ क्रिएट.एक्सएमएल" बनाएं

<?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">

    <shape android:shape="ring" android:innerRadiusRatio="3"
        android:thicknessRatio="8" android:useLevel="false">

        <size android:width="48dip" android:height="48dip" />

        <gradient android:type="sweep" android:useLevel="false"
            android:startColor="#4c737373" android:centerColor="#4c737373"
            android:centerY="0.50" android:endColor="#ffffd300" />

    </shape>

</rotate>

0
<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
    <item name="colorControlActivated">@color/colorPrimary</item>
</style>


<ProgressBar
    android:id="@+id/progressBar"
    android:layout_width="250dp"
    android:theme="@style/progressColor"
    android:layout_height="250dp"
    android:layout_centerInParent="true" />

-1

आप नीचे दिए गए कोड का उपयोग करके अपना प्रगति रंग बदल सकते हैं:

progressBar.getProgressDrawable().setColorFilter(
    getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);

अगर मेरे पास रंग की एक सरणी है तो?
राजकुमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.