私はこのような形をカスタムビューのonDrawメソッドで描画しようとしています。キャンバスに「穴」を描く
残念ながら、(Color.Transparentで円を描くことによって)キャンバス上の透明円を「切り取る」ことはできません。
シェイプを別のビットマップに描画してから、onDrawで提供されるキャンバスに描画する必要がありますか?それとももっと簡単な方法ですか?
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setColor(Color.TRANSPARENT);
mPaint.setStrokeWidth(4);
mPaint.setStyle(Style.STROKE);
canvas.drawColor(getResources().getColor(R.color.black_overlay));
canvas.drawCircle(-3*(this.getBottom()-this.getTop())/4, (this.getTop()+this.getBottom())/2, this.getBottom()-this.getTop(), mPaint);
PS:ここ

解決策
@Override
public void onDraw(Canvas canvas)
{
mBitmap = Bitmap.createBitmap(getWidth(), getHeight(), Bitmap.Config.ARGB_8888);
mCanvas = new Canvas(mBitmap);
mCanvas.drawColor(getResources().getColor(R.color.black_overlay));
mCanvas.drawCircle(-3*(getHeight())/4, (getHeight())/2, getHeight(), mPaint);
canvas.drawBitmap(mBitmap, 0, 0, null);
}
with
mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
mPaint.setStrokeWidth(4);
mPaint.setStyle(Style.STROKE);
mPaint.setXfermode(new PorterDuffXfermode(Mode.CLEAR));
注:createBitampと新しいキャンバスをonDrawメソッドから移動する必要があります。
は、手動ではあまりにも複雑であることを見れば画像を使用して、うまく –
ColorTransparentとは何ですか?あなたが試したことのいくつかのコードを投稿してみませんか?これが役立つかどうかをご覧ください - http://stackoverflow.com/questions/9988671/android-r-color-transparent-notfully-transparent – Sundeep
Color.TRANSPARENTはアンドロイド定数です。 – Tryum