0
我嘗試創建這樣的繪製創建透明
我寫的代碼,幾乎正常工作
public class GetsugaDrawable extends Drawable {
private final Context context;
private final float radiusScale = 1.2f;
private final float yOffset = 0.3f;
private final int colorLower = Color.RED;
private final int colorUpper = Color.BLACK;
private final Paint upperPaint = new Paint();
public GetsugaDrawable(Context c) {
context = c;
upperPaint.setColor(colorUpper);
upperPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
}
@Override
public void draw(@NonNull Canvas canvas) {
final Rect bounds = new Rect(getBounds());
canvas.drawColor(colorLower, PorterDuff.Mode.SRC);
final float radius = radiusScale * bounds.height();
final int x = bounds.centerX();
final float y = (bounds.centerY() - bounds.height() * yOffset) - radius;
canvas.drawCircle(x, y, radius, upperPaint);
}
@Override
public void setAlpha(int alpha) {
// ignored TODO impl.
}
@Override
public void setColorFilter(@Nullable ColorFilter colorFilter) {
// ignored TODO impl.
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
這裏半圈背景繪製的是我的結果
我試圖改變
private final int colorUpper = Color.BLACK;
與
private final int colorUpper = Color.TRANSPARENT;
但是當我透明色再次運行我的應用程序,結果是這樣的
我在做什麼錯? 謝謝
正確的解決方法是使用形狀,不拉絲手動:https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape –
在你的代碼的問題,那你繪製透明圈在紅色背景。當然,沒有什麼會改變。您應該繪製像素並且不要繪製透明區域。 –
你在哪裏使用這個GetsugaDrawable? – Ankita