android - 如何在圆圈中绘制矩形

时间:2017-06-27 09:44:40

标签: android android-view

我需要一个如下视图: enter image description here

蓝色高度将根据声音更新。

我知道使用可以绘制圆形矩形

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">

    <solid android:color="@color/bg_send_text" />
    <corners android:radius="100dip" />
</shape>

然后我写了一个VoiceDrawable扩展GradientDrawable,并使用这段代码:

public void setVoice(int voice) {
    level = (float) 1.0 * voice / 100;
}

@Override
public void draw(Canvas canvas) {
    super.draw(canvas);

    rect = getBounds();
    canvas.drawRect(rect.left, rect.top + (rect.bottom - rect.top) * 
        (1 - level), rect.right, rect.bottom, paint);
}

但结果是:enter image description here

虽然我使用:

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));

那么我该如何实现这个视图呢?我能做什么?

2 个答案:

答案 0 :(得分:1)

您应该更改您的PorterDuff模式:enter image description here

答案 1 :(得分:0)

所有

我已实施此观点:

Duration

主要思想是使用着色器。 我从https://github.com/gelitenight/WaveView

得到了想法