9

尝试为 Android Ring Shape 设置动画以产生与所示图像序列类似的效果。

预期动画

我找到了 Shape Drawable 类型的 Ring。

<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:innerRadius="75dp"
android:thickness="25dp"
android:useLevel="false">

与 ArcShape(startAngle, sweepAngle) 方法一起使用。

ShapeDrawable shape = new ShapeDrawable(new ArcShape(0, 360));     
shape.setIntrinsicHeight(100);
shape.setIntrinsicWidth(100);
shape.getPaint().setColor(Color.BLACK);

但是,问题来自无法找到可绘制形状的扫描角属性或无法为 ArcShape 创建内半径。

我正在尝试制作流畅的动画。

4

3 回答 3

5

旧线程,但我认为它仍然有用。

我设法使用上面的代码获得了类似的行为:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <size
                android:height="56dp"
                android:width="56dp"/>
            <stroke
                android:width="6dp"
                android:color="#FFFFFF"/>
        </shape>
    </item>
    <item>
        <shape android:shape="oval">
            <size
                android:height="50dp"
                android:width="50dp"/>
            <stroke
                android:width="6dp"
                android:dashGap="140dp"
                android:dashWidth="16dp"
                android:color="#FF0000"/>
        </shape>
    </item>
</layer-list>

这里的关键是使用 dashGap 和 dashWidth 值,直到获得所需的图像。

于 2014-11-05T20:10:48.347 回答
1

有用的材料:Android:寻找具有内外半径的 drawArc() 方法

使用 PorterDuff Clear 模式可以“移除”内部,留下甜甜圈形状。然后,您可以通过扩展 Animation 类重新绘制来使用 Arc 的扫描角度。

于 2013-06-21T16:13:54.017 回答
0

你画一个弧形起始角和扫角以不同的方式..你以这种方式绘制不同的弧##

查看图片

ShapeDrawable shapeDrawable=new ShapeDrawable(new ArcShape(220,320));
        shapeDrawable.setIntrinsicHeight(100);
        shapeDrawable.setIntrinsicWidth(100);
        shapeDrawable.getPaint().setColor(Color.RED);
        I1=(ImageView)findViewById(R.id.imageView2);
        I1.setImageDrawable(shapeDrawable);
于 2016-03-02T16:51:45.577 回答