我想将进度条更改为自定义可绘制对象。如何更改进度条的图像?
问问题
26494 次
2 回答
44
这是我的答案,我在 android 进度条中使用我的图像..
<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%"/>
动画.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>
于 2013-02-01T10:23:10.847 回答
0
您可以通过扩展创建一个类,ImageView
并像使用ProgressBar
旋转动画一样使用它。
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
}}
在你的 layout.xml 中,只需使用这个类作为你的 ProgressBar
<com.example.CustomProgressBar
android:id="@+id/customProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal" />
并在您的片段或活动中显示或隐藏它,如下所示:
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()
}
于 2020-09-01T15:06:02.407 回答