How to Customize a Progress Bar In Android

前端 未结 9 2302
鱼传尺愫
鱼传尺愫 2020-11-22 16:07

I am working on an app in which I want to show a ProgressBar, but I want to replace the default Android ProgressBar.

So how can I customize

相关标签:
9条回答
  • 2020-11-22 16:34

    Customizing a ProgressBar requires defining the attribute or properties for the background and progress of your progress bar.

    Create an XML file named customprogressbar.xml in your res->drawable folder:

    custom_progressbar.xml

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
        <!-- Define the background properties like color etc -->
        <item android:id="@android:id/background">
        <shape>
            <gradient
                    android:startColor="#000001"
                    android:centerColor="#0b131e"
                    android:centerY="1.0"
                    android:endColor="#0d1522"
                    android:angle="270"
            />
        </shape>
       </item>
    
      <!-- Define the progress properties like start color, end color etc -->
      <item android:id="@android:id/progress">
        <clip>
            <shape>
                <gradient
                    android:startColor="#007A00"
                    android:centerColor="#007A00"
                    android:centerY="1.0"
                    android:endColor="#06101d"
                    android:angle="270"
                />
            </shape>
        </clip>
        </item>
    </layer-list> 
    

    Now you need to set the progressDrawable property in customprogressbar.xml (drawable)

    You can do this in the XML file or in the Activity (at run time).

    Do the following in your XML:

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleHorizontal"
        android:progressDrawable="@drawable/custom_progressbar"         
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    

    At run time do the following

    // Get the Drawable custom_progressbar                     
        Drawable draw=res.getDrawable(R.drawable.custom_progressbar);
    // set the drawable as progress drawable
        progressBar.setProgressDrawable(draw);
    

    Edit: corrected xml layout

    0 讨论(0)
  • 2020-11-22 16:36

    If you want to do this in code, here is a sample:

    pd = new ProgressDialog(MainActivity.this);
    pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    pd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    pd.getWindow().setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
    TextView tv = new TextView(this);
    tv.setTextColor(Color.WHITE);
    tv.setTextSize(20);
    tv.setText("Waiting...");
    pd.setCustomTitle(tv);
    pd.setIndeterminate(true);
    pd.show();
    

    Using TextView gives you an option to change color, size, and font of your text. Otherwise you can just call setMessage(), as usual.

    0 讨论(0)
  • 2020-11-22 16:38

    There are two types of progress bars called determinate progress bar (fixed duration) and indeterminate progress bar (unknown duration).

    Drawables for both of types of progress bar can be customized by defining drawable as xml resource. You can find more information about progress bar styles and customization at http://www.zoftino.com/android-progressbar-and-custom-progressbar-examples.

    Customizing fixed or horizontal progress bar :

    Below xml is a drawable resource for horizontal progress bar customization.

     <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@android:id/background"
            android:gravity="center_vertical|fill_horizontal">
            <shape android:shape="rectangle"
                android:tint="?attr/colorControlNormal">
                <corners android:radius="8dp"/>
                <size android:height="20dp" />
                <solid android:color="#90caf9" />
            </shape>
        </item>
        <item android:id="@android:id/progress"
            android:gravity="center_vertical|fill_horizontal">
            <scale android:scaleWidth="100%">
                <shape android:shape="rectangle"
                    android:tint="?attr/colorControlActivated">
                    <corners android:radius="8dp"/>
                    <size android:height="20dp" />
                    <solid android:color="#b9f6ca" />
                </shape>
            </scale>
        </item>
    </layer-list>
    

    Customizing indeterminate progress bar

    Below xml is a drawable resource for circular progress bar customization.

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:id="@android:id/progress"
            android:top="16dp"
            android:bottom="16dp">
                    <rotate
                        android:fromDegrees="45"
                        android:pivotX="50%"
                        android:pivotY="50%"
                        android:toDegrees="315">
                        <shape android:shape="rectangle">
                            <size
                                android:width="80dp"
                                android:height="80dp" />
                            <stroke
                                android:width="6dp"
                                android:color="#b71c1c" />
                        </shape>
                    </rotate>           
        </item>
    </layer-list>
    
    0 讨论(0)
提交回复
热议问题