如何解决可以在自定义Progressbar progressDrawable中进行圆角处理吗?
| 我有一个进度栏,看起来像所附的图片: 而且我已经走了很长一段路。我非常接近,唯一不起作用的部分是progressDrawable的圆角。这是我的样子。 (请注意,用红色圆圈圈出,白色轮廓内的填充没有圆角): 因此,当进度条以形状,渐变或颜色上色时,我发现了两种方法可以完成这项工作。但是,我无法将其与图像作为progressDrawable获取。 这是我的类,扩展了ProgressBarpublic class RoundedProgressBar extends ProgressBar{
private Paint paint;
public RoundedProgressBar(Context context) {
super(context);
setup();
}
public RoundedProgressBar(Context context,AttributeSet attrs) {
super(context,attrs);
setup();
}
public RoundedProgressBar(Context context,AttributeSet attrs,int defStyle) {
super(context,attrs,defStyle);
setup(); ;
}
protected void setup()
{
paint = new Paint();
}
@Override
protected synchronized void onDraw(Canvas canvas) {
// First draw the regular progress bar,then custom draw our text
super.onDraw(canvas);
paint.setColor(Color.WHITE);
paint.setStyle(Paint.Style.STROKE);
RectF r = new RectF(0,getWidth()-1,getHeight()-1);
canvas.drawRoundRect(r,getHeight()/2,paint);
}
}
这是我的选择器:
<layer-list
xmlns:android=\"http://schemas.android.com/apk/res/android\"
>
<item
android:id=\"@android:id/background\"
android:drawable=\"@drawable/slider_track\" />
<item
android:id=\"@android:id/secondaryProgress\"
android:drawable=\"@drawable/slider_track\" />
<item
android:id=\"@android:id/progress\"
android:drawable=\"@drawable/slider_track_progress\" />
</layer-list>
以下是选择器中使用的图像:
slide_track->
slide_track_progress->
这是我将进度栏嵌入到活动布局中的位置
<com.android.component.RoundedProgressBar
android:id=\"@+id/player_hp_bar\"
android:layout_width=\"fill_parent\"
android:layout_height=\"36dip\"
android:layout_marginLeft=\"30dip\"
android:layout_marginRight=\"30dip\"
android:max=\"100\"
style=\"?android:attr/progressBarStyleHorizontal\"
android:progressDrawable=\"@drawable/slider_layer_list\"
android:progress=\"20\"
android:maxHeight=\"12dip\"
android:minHeight=\"12dip\"
/>
有人知道如何进行这项工作吗?
解决方法
不知道您是否真的可以通过API修整边缘,但是可以非常轻松地在白色轮廓和实际进度对象之间添加新层吗?该层可能是白色轮廓的精确切口,因此进度条不会显示在轮廓之外。
,尝试此操作,通过修改拇指和xml中的搜索栏的颜色,宽度和高度,您也许可以执行所需的操作。
你可以在这里看到图片
这是我能做到的唯一方法。
希望有帮助
这是我的seekbar:
<SeekBar
android:id=\"@+id/simpleProgressBar\"
android:layout_width=\"fill_parent\"
android:layout_height=\"12dp\"
android:max=\"100\"
android:progress=\"0\"
android:background=\"@null\"
android:shape=\"oval\"
android:splitTrack=\"false\"
android:progressDrawable=\"@drawable/progress_background\"
android:secondaryProgress=\"0\"
android:thumbOffset=\"10dp\"
android:thumb=\"@drawable/oval_seekbar_thumb\" />
这是(progress_background.xml):
<item android:id=\"@android:id/background\">
<shape android:shape=\"rectangle\">
<corners android:radius=\"5dp\" />
<gradient
android:angle=\"270\"
android:endColor=\"@color/grey_line\"
android:startColor=\"@color/grey_line\" />
</shape>
</item>
<item android:id=\"@android:id/secondaryProgress\">
<clip>
<shape android:shape=\"oval\">
<corners android:radius=\"5dp\" />
<gradient
android:angle=\"270\"
android:endColor=\"@color/blue\"
android:startColor=\"@color/blue\" />
</shape>
</clip>
</item>
<item android:id=\"@android:id/progress\">
<clip>
<shape android:shape=\"rectangle\">
<corners android:radius=\"90dp\" />
<gradient
android:angle=\"90\"
android:endColor=\"@color/colorPrimaryDark\"
android:startColor=\"@color/colorPrimary\" />
</shape>
</clip>
</item>
这是拇指(oval_seekbar_thumb.xml):
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<selector xmlns:android=\"http://schemas.android.com/apk/res/android\">
<item>
<shape android:shape=\"oval\">
<solid android:color=\"#ffffff\" />
<stroke android:color=\"@color/colorPrimaryDark\" android:width=\"3dp\"/>
<size android:height=\"12dp\" android:width=\"12dp\"/>
</shape>
</item>
</selector>
拇指的高度应与搜寻杆的高度相同,以便正确显示。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。