Android 带有图像的自定义进度条或带有clipdrawable的图像视图
我一直在寻找关于自定义进度条的教程,我发现95%的内容是如何使用颜色和渐变来自定义,而不是使用图像(基本上是一个带有图像的空条图像或顶部是完整条图像)。当我尝试将图像用于进度条时,尺寸是错误的(包裹内容无法正常工作,并且被截断了一半) 我能够使用带有clipdrawble和级别设置的图像实现一个成功的图像栏Android 带有图像的自定义进度条或带有clipdrawable的图像视图,android,android-progressbar,Android,Android Progressbar,我一直在寻找关于自定义进度条的教程,我发现95%的内容是如何使用颜色和渐变来自定义,而不是使用图像(基本上是一个带有图像的空条图像或顶部是完整条图像)。当我尝试将图像用于进度条时,尺寸是错误的(包裹内容无法正常工作,并且被截断了一半) 我能够使用带有clipdrawble和级别设置的图像实现一个成功的图像栏 那么,是否不赞成将带有图像的ProgressBar用作其背景/进度,而我应该使用imageview?关键是要确保ProgressBar考虑到自定义绘图表的尺寸。一种方法是覆盖测量上的。下面是
那么,是否不赞成将带有图像的ProgressBar用作其背景/进度,而我应该使用imageview?关键是要确保
ProgressBar
考虑到自定义绘图表的尺寸。一种方法是覆盖测量上的
。下面是自定义类的onMeasure
实现的大致草图(将其与ProgressBar
的实现进行比较,您会注意到细微的变化):
然后,您可以将空条设置为自定义ProgressBar
的背景,就像您通常对视图所做的那样-android:background=“@drawable/empty\u bar”
下一部分是设置progressDrawable
,您必须使用
,因为我们希望与进度条的可绘制结构紧密匹配()。以下是一个示例:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/background">
<shape>
<solid android:color="#00000000"/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip
android:clipOrientation="vertical"
android:gravity="bottom"
android:drawable="@drawable/full_bar">
</clip>
</item>
</layer-list>
我不认为这是不赞成的。事实上,
ProgressBar
固有地使用可绘制的剪辑来实现动画效果。所以,我看你没有理由不使用它。但正如您所指出的,唯一的问题是视图如何测量自身。因此,您必须覆盖测量上的,
,以确保您的绘图功能不会被切断。谢谢,有任何链接或示例可以帮助您实现这一点吗?非常感谢。我不需要用动画师,对吗?我只能做“设置进度”或“设置秒进度”对吗?@Snake是的,没错ObjectAnimator
只是通过反射隐式地实现了这一点
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/background">
<shape>
<solid android:color="#00000000"/>
</shape>
</item>
<item android:id="@android:id/progress">
<clip
android:clipOrientation="vertical"
android:gravity="bottom"
android:drawable="@drawable/full_bar">
</clip>
</item>
</layer-list>
final ObjectAnimator animator = ObjectAnimator
.ofInt(progressBar, "progress", 0, 100)
.setDuration(2000);
animator.start();