安卓可绘制圆形带扫描弧线

4
我正在尝试绘制类似于进度条的东西。然而,在我的情况下,进度条是一个圆形,有一个不同颜色的扫描弧线,如下所示(图2显示了设计的快照,黄色表示一些进度)。一旦工作完成,整个圆将变为黄色。

enter image description here

我想制作一个圆形,可以使用xml布局来创建。以下是创建圆形的代码:
在res/drawable/circle.xml文件中:

<solid android:color="@color/red" />

<size
    android:height="200dp"
    android:width="200dp" />

<padding
    android:bottom="10dp"
    android:left="10dp"
    android:right="10dp"
    android:top="10dp" />

在我的主布局中,我将这个设置为FrameLayout的背景...
   <FrameLayout
       android:id="@+id/frameLayout"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@drawable/circle" >

   </FrameLayout>

</LinearLayout>

我知道如何使用Android演示代码中提供的示例来绘制弧线http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/graphics/Arcs.html
但是,我在如何将这两者结合起来创建扫描动画方面遇到了一些困难。我知道我们必须创建一个线程并创建一个像演示中的onDraw一样的方法,但是如何将扫描弧线的中心设置为绘制圆形的中心?Java代码会是什么样子(在活动中)?谢谢!

我认为你可能需要创建一个自定义视图来处理动画。另一方面,这并不太难。 - ahodder
我明白了,根据演示我知道如何做。我希望能够在xml中创建整个布局,然后在代码中添加“扫过”的弧形部分。如果我们可以将自定义视图放入已定义的布局中,这将是可能的。 - serverman
你可以查看http://developer.android.com/guide/topics/ui/custom-components.html#modifying。 - ahodder
只需重写onDraw(Canvas)方法,在画布上绘制一个红色的圆,然后根据给定的加载百分比在圆上方绘制一个弧形。所有视图可以“重叠”其他视图,但这里不需要。你只需使用view的onDraw方法即可。 - ahodder
我建议不要使用XML来绘制圆形,而是使用drawCircle方法。当您创建RectF对象时,请使用基本数学知识找到中心点。将矩形设置为正方形。然后,您可以使用正方形宽度的1/2作为半径绘制圆形,接着使用RectF绘制弧线。 - Reed
显示剩余2条评论
2个回答

3

2

我决定采用之前提到的演示中给出的解决方案。我创建了一个自定义视图来表示扫描弧形。我在代码中放置它,如下所示(仅显示相关代码)

    <LinearLayout
       ...>

        <com.example.SweepingArcView
            android:id="@+id/sweepingArc"
            android:layout_width="210dp"
            android:layout_height="210dp"
            android:layout_marginTop="20dp"
            android:layout_weight="1" />

       ...
    </LinearLayout>

然后我按照演示代码中给出的方式绘制了一个扫描弧形。感谢所有回复我的人!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接