বিজ্ঞপ্তি অগ্রগতি বারে রঙ পরিবর্তন করবেন কীভাবে?


147

আমি অ্যান্ড্রয়েডে বিজ্ঞপ্তি অগ্রগতি বারটি ব্যবহার করছি। আমি এর রঙ পরিবর্তন করতে ইচ্ছুক। আমি ব্যাবহার করছি

"?android:attr/progressBarStyleLargeInverse" 

শৈলী। প্রগতি বারের রঙ কীভাবে পরিবর্তন করবেন।

কিভাবে স্টাইল কাস্টম করবেন? তদুপরি, শৈলীর সংজ্ঞা কী?

উত্তর:


163

পুনরায় স্থান / অঙ্কনযোগ্য ফোল্ডারে এটি রাখুন:

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
এটি একটি সবুজ রিং আকার তৈরি করে তবে প্রকৃত প্রগতিবারের স্পিনারটি এখনও দৃশ্যমান।
এমডিপলস

স্পিনিংয়ের রংগুলি কেবল এক দিকে চালিত করার কোনও উপায় আছে?
thepoosh

48
"অ্যান্ড্রয়েড: ব্যাকগ্রাউন্ড" দিয়ে ব্যাকগ্রাউন্ড সেট করার পরিবর্তে "অ্যান্ড্রয়েড: অনির্দিষ্ট
ড্রায়েবল

1
অ্যান্ড্রয়েড ব্যবহার করুন: স্টার্টকালার = "# 447a29" অ্যান্ড্রয়েড: এন্ডকালার = "# 227a29" আলাদা আলাদা মান দেয় যাতে এটি কোনও স্ট্যাটিক সার্কেল তৈরি করে না।
অভিষেক সেনগুপ্ত

137

21 এবং উচ্চতর API এর জন্য। অনির্দিষ্ট টিন্ট সম্পত্তিটি কেবল সেট করুন। ভালো লেগেছে:

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

যদি আমার কাছে রঙের অ্যারে থাকে এবং আমি প্রতিটি অগ্রগতি বারে একটি রঙিন অ্যারেতে রঙ সেট করতে চাই
প্রিন্স

এটি কেবলমাত্র অগ্রগতি
বারের

APIs এর দিকটি গুরুত্ব দেওয়ার জন্য আপনাকে ধন্যবাদ
জ্যামিসনম্যান 111

যদি আমি এই রঙটি রাখি তবে এটি স্পিনিং কাটা রিংটিকে রঙ করে তবে এটি সমস্তই, তাই এটি একটি পুরো রিংয়ে রূপান্তরিত হয় যাতে আপনি এটিকে চলন্ত দেখতে না পান
লুকাশ জ্যানেেলা

135

1. প্রথমটি সম্পদের অধীনে অঙ্কনযোগ্য ফোল্ডারে একটি এক্সএমএল ফাইল তৈরি করুন

নাম "প্রগতি.এক্সএমএল"

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

২. ফোলিং স্নিপেট ব্যবহার করে একটি অগ্রগতি বার করুন

<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% এ পৌঁছানোর পরে, আমি এটি আবার শুরু করতে চাই, কেবলমাত্র এবারই এর রঙ লাল হতে হবে। তবে, আমি তা করতে পারিনি .. যদি সম্ভব হয় তবে আমাকে সাহায্য করুন
harikrishnan

1
ধন্যবাদ। এটি 100% কাজ করে। প্রগতি.এক্সএমএল অ্যান্ড্রয়েডে সেট করুন: অনির্দিষ্ট ড্রায়েবল
লিও এনগুইন

আমি যখন এটি চেষ্টা করেছি, এটি বৃত্তের ঘন সীমানা তৈরি করেছে। কোনও ধারণা কীভাবে সীমানা হ্রাস করবেন?
তেজাস

হাই তেজস, এই লাইনটি অ্যান্ড্রয়েড পরিবর্তন করার চেষ্টা করুন: পুরুত্বের অনুপাত = "8" অগ্রগতির ভিতরে.এক্সএমএল। আপনি বিভিন্ন মান চেষ্টা করতে পারেন। আশা করি এটি কার্যকর হবে।
মুহাম্মদ রিয়াস এম

এটি কাজ করে তবে একে অপরের বিরুদ্ধে দুটি রিং ঘোরানোর পরিবর্তে আমি কেবল একটি একক আংটি পাই। এটার জন্য কোন ফিক্স?
এএক্স

66

আপনি এই কোডটি ব্যবহার করে প্রোগ্রামিয়ালি রঙ পরিবর্তন করতে পারেন:

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

আপনি যদি অগ্রগতি ডায়ালগের অগ্রগতি বারটি পরিবর্তন করতে চান তবে আপনি এটি ব্যবহার করতে পারেন:

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

        }
    });

আরে আমি কীভাবে প্রগতি ডায়ালগের অগ্রগতি বারটিকে প্রগ্রেস.এক্সএমএল এর সাথে সংযুক্ত করব?
মেঘল অগ্রওয়াল

যদি আমার কাছে রঙের অ্যারে থাকে এবং আমি প্রতিটি অগ্রগতি বারে একটি রঙিন অ্যারেতে রঙ সেট করতে চাই
প্রিন্স

36

ডেটোর উত্তরে যুক্ত করতে, আমি এসআরসি_এটিওপিটিকে গুণের জন্য একটি ভাল ফিল্টার হিসাবে দেখতে পাই কারণ এটি আলফা চ্যানেলটিকে আরও ভাল সমর্থন করে।

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

1
২.৩.x এ এটি আপনাকে একটি শক্ত ভরাট চেনাশোনা দেয় যেখানে বহুগুণ স্বচ্ছতা সংরক্ষণ করে।
আজদেব

যদি আমার কাছে রঙের অ্যারে থাকে এবং আমি প্রতিটি অগ্রগতি বারে একটি রঙিন অ্যারেতে রঙ সেট করতে চাই
প্রিন্স

28

অ্যান্ড্রয়েড indeterminateTint = "@ রং / progressbar"


কেবল অগ্রগতি বারে উপরের বৈশিষ্ট্যটি ব্যবহার করুন: অনির্দিষ্ট টিন্ট = আপনার রঙ
ভূপিন্দর সিং

সেরা উত্তর এবং এটি সমস্ত সংস্করণেও সমর্থন করবে
পঙ্কজ কুমার

এইগুলি আপনার প্রয়োজন কেবল এই পাগল উত্তর নয়। যদিও অন্যরা সম্পূর্ণ কোড ব্লক থেকে উপকৃত হবে।
স্টারউইন্ড0

7
অনির্দিষ্ট টিনিট 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"

এটি আমার পক্ষে কাজ, কেবল আপনার প্রগতি বার এক্সএমএল কোডটিতে এই লাইনটি যুক্ত করুন


12

এটা আমার জন্য কাজ।

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

4
21 এপিআই স্তর থেকে উপলব্ধ
ভাইপ্লেজার

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

আমার জন্য থিমটি অ্যাকসেন্টার কালারের সাথে কাজ করছিল না। তবে এটি কালার কন্ট্রোল অ্যাক্টিভেটেড দিয়ে কাজ করেছে

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

PS: তবে এটি কেবল অ্যান্ড্রয়েড 21 থেকে উপলব্ধ


4

একটি স্টাইল ব্যবহার করে চেষ্টা করুন এবং রঙ সেট করুনআন্ট্রাক্টেড খুব পছন্দসই প্রগ্রেসবার রঙটি সেট করুন।

<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

আপনার ক্রিয়াকলাপের থিমে আইটেমের রঙ যোগ করুন নিয়ন্ত্রণ করুন , উদাহরণস্বরূপ:

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

যারা কাস্টম অগ্রগতির গতি বাড়াতে ভাবছেন তাদের জন্য all

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

এটি আপনার রেস / মান / রঙ / এক্স.এম.এল -> রঙএক্সেন্টের থেকে রঙের মান লাগে যদি আপনি এটি পরিবর্তন করেন তবে আপনার অগ্রগতির বারের রঙও পরিবর্তন হয়।


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>


-1

আপনি নীচের কোডটি ব্যবহার করে আপনার প্রগতিবারের রঙটি পরিবর্তন করতে পারেন:

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

আমারও যদি রঙের অ্যারে থাকে তবে?
প্রিন্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.