How to change Progress bar image in android

后端 未结 2 1705
遇见更好的自我
遇见更好的自我 2020-12-24 15:45

I would like to change the progress bar to a custom drawable. How do I change the image of the progress bar?

相关标签:
2条回答
  • Here my answer, i use my image in android progress bar..

     <ProgressBar
            android:layout_width="60dp"
            android:layout_height="50dp"
            android:layout_centerInParent="true"
            android:indeterminate="true"
            android:indeterminateDrawable="@drawable/my_progress_indeterminate" />
    

    my_progress_indeterminate.xml:

      <?xml version="1.0" encoding="utf-8"?>
        <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" 
            android:drawable="@drawable/animation" 
            android:pivotX="50%"
            android:pivotY="50%"/>
    

    animation.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <animation-list xmlns:android="http://schemas.android.com/apk/res/android"
        android:oneshot="false">
    
        <item android:drawable="@drawable/load" android:duration="50" />
        <item android:drawable="@drawable/load" android:duration="50" />
        <item android:drawable="@drawable/load" android:duration="50" />
         <rotate 
             xmlns:android="http://schemas.android.com/apk/res/android" 
             android:drawable="@drawable/load" 
             android:pivotX="50%" 
             android:pivotY="50%" 
             android:fromDegrees="330" 
             android:toDegrees="360" 
             android:repeatCount="1" />     
    
    </animation-list>
    
    0 讨论(0)
  • 2020-12-24 16:27

    You can create a class by extending ImageView and use it like following in a similar way to ProgressBar with a rotation animation.

    class CustomProgressBar : AppCompatImageView {
    
    constructor(context: Context) : super(context)
    
    constructor(context: Context, attributeSet: AttributeSet) : super(context, attributeSet)
    
    constructor(context: Context, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
    
    private var anim: RotateAnimation? = null
    
    init {
        setImageResource(R.drawable.your_custom_drawable)
        anim = RotateAnimation(
            0f, 350f, Animation.RELATIVE_TO_SELF, 0.5f,
            Animation.RELATIVE_TO_SELF, 0.5f
        )
        anim!!.interpolator = LinearInterpolator()
        anim!!.repeatCount = Animation.INFINITE
        anim!!.duration = 1000
        startAnimation(anim)
    }
    
    fun getRotateAnimation(): RotateAnimation? {
        return anim
    }}
    

    And in your layout.xml just use this class as your ProgressBar

                <com.example.CustomProgressBar
                android:id="@+id/customProgressBar"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal" />
    

    And in your fragment or activity show or hide it like following:

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        customProgressBar = findViewById(R.id.customProgressBar)
    }
    
    fun showCustomProgressBar() {
        customProgressBar.visibility = VISIBLE
        customProgressBar.startAnimation(customProgressBar.getRotateAnimation())
    }
    
    fun hideCustomProgressBar() {
        customProgressBar.visibility = GONE
        customProgressBar.clearAnimation()
    }
    
    0 讨论(0)
提交回复
热议问题