我有自定义进度条形状......我想要背景(用灰色填充)来制作描边,iner和外部笔划,它们之间有9dp的间隙...... 似乎我无法让它发挥作用。
这是进度条内圈的原始XML。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@android:id/progress">
<shape
android:innerRadius="60dp"
android:shape="ring"
android:thickness="9dp"
android:useLevel="true">
<gradient
android:startColor="@color/light_gray"
android:endColor="@color/light_gray"
android:type="sweep" />
</shape>
</item>
</layer-list>
还有一个问题(我不想再打开另一个问题): - 我可以将这个橙色的末端变成椭圆形(圆形)吗?就像大多数进度条一样? XML与顶级XML相同,只是颜色不同。
编辑:这可能会有所帮助,我使用自定义背景的进度条组件。
EDIT2 :我通过在60和thicknesson 1dp上设置圆半径,并创建另一个具有69半径和1dp厚度的背景的ProgressBar组件来完成。
我在设计中得到了我需要的东西,这不是好方法。我可以在第二个问题上获得帮助吗?
答案 0 :(得分:0)
请参阅以下代码以创建进度条
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
android:toDegrees="360">
<shape android:shape="ring" android:innerRadiusRatio="3"
android:thicknessRatio="8" android:useLevel="false">
<size android:width="76dip" android:height="76dip" />
<gradient android:type="sweep" android:useLevel="false"
android:startColor="@android:color/transparent"
android:endColor="#00FF00"
android:angle="0"
/>
</shape>
</rotate>
并且有外观和感觉,请参阅https://pankajchunchun.wordpress.com/2011/09/10/customization-of-spinner-progress/
答案 1 :(得分:0)
我认为最好的方法是使用自定义视图。使用这种方法,您可以绘制圆形帽环:
int border = 4; // This value is in PX!
RectF rect = new RectF();
Paint paint = new Paint();
int radius = getMeasuredWidth() - border/2;
rect.set(border/2, border/2, radius, radius);
paint.setStrokeWidth(border);
paint.setAntiAlias(true);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.Orange);
canvas.drawArc(rect, -90, 360, true, paint);
然后你可以在里面画另一个圆圈或另一个圆圈作为背景。希望它有所帮助!