自定义圆形ProgressBar遇到的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了自定义圆形ProgressBar遇到的问题相关的知识,希望对你有一定的参考价值。
最近在做自定义progressbar中,遇到了某些问题,求高手指点,先谢了~!~!
可以先做一个正方形的progressbar,然后progressbar有个setRegion()的方法可以用来设置区域,定义一个新的Region变量,声明时使用add方法添加一个画圆的函数就好了,画圆函数如下:static int[] circle(int r, int offsetX, int offsetY)
int[] polygon = new int[8 * r + 4];
for (int i = 0; i < 2 * r + 1; i++)
int x = i - r;
int y = (int) Math.sqrt(r * r - x * x);
polygon[2 * i] = offsetX + x;
polygon[2 * i + 1] = offsetY + y;
polygon[8 * r - 2 * i - 2] = offsetX + x;
polygon[8 * r - 2 * i - 1] = offsetY - y;
return polygon;
希望采纳! 参考技术A 这个不会,真的
Android自定义圆形ProgressBar方向
【中文标题】Android自定义圆形ProgressBar方向【英文标题】:Android custom circular ProgressBar direction 【发布时间】:2017-12-06 15:33:45 【问题描述】:我有一个自定义的循环进度条。这是我必须确定的可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/secondaryProgress">
<shape
android:innerRadiusRatio="6"
android:shape="ring"
android:thicknessRatio="20.0"
android:useLevel="true">
<gradient
android:centerColor="#999999"
android:endColor="#999999"
android:startColor="#999999"
android:type="sweep" />
</shape>
</item>
<item android:id="@android:id/progress">
<rotate
android:fromDegrees="270"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="270">
<shape
android:innerRadiusRatio="6"
android:shape="ring"
android:thicknessRatio="20.0"
android:useLevel="true">
<rotate
android:fromDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="0" />
<gradient
android:centerColor="?attr/colorAccent"
android:endColor="?attr/colorAccent"
android:startColor="?attr/colorAccent"
android:type="sweep" />
</shape>
</rotate>
</item>
</layer-list>
我希望它以顺时针方向显示进度,但现在它显示逆时针方向。
如何更改?
【问题讨论】:
你是如何增加进度的?我有一个圆形进度条,使用你的drawable,它顺时针旋转 【参考方案1】:通过使用最新版本的material design library,您可以实现:
在具有此属性的布局中app:indicatorDirectionCircular
或以编程方式使用此方法
setIndicatorDirection()
更多信息请参考here。
【讨论】:
【参考方案2】:我猜你使用的是 rtl 语言?您可以通过在ProgressBar
上设置layoutDirection
属性来强制进度条为 ltr 或顺时针方向。
<ProgressBar
...
android:layoutDirection="ltr" />
【讨论】:
【参考方案3】:我不确定它是否会起作用,但请尝试像这样设置android:toDegrees="-360"
:
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="-360" />
【讨论】:
【参考方案4】:改变这个
<rotate
android:fromDegrees="360"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="0" />
到
<rotate
android:fromDegrees="0"
android:pivotX="50%"
android:pivotY="50%"
android:toDegrees="360" />
【讨论】:
不起作用。一开始是这样的,我试着改变它。以上是关于自定义圆形ProgressBar遇到的问题的主要内容,如果未能解决你的问题,请参考以下文章
Android踩坑日记:自定义水平和圆形ProgressBar样式