Sto provando a disegnare una forma come questa nel metodo onDraw di una vista personalizzata.Disegno di "buchi" in una tela
Purtroppo, non riesco a "tagliare" il cerchio trasparente sulla tela (disegnando un cerchio con Color.Transparent).
Dovrei prima disegnare la forma in un'altra bitmap e disegnarla sulla tela fornita da onDraw? O è un modo migliore (più semplice) per farlo?
Ecco il codice che ho provato (funziona con Color.White):
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: ho avuto la forma esatta che volevo durante l'utilizzo Color.White:
Soluzione
@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));
Nota: il createBitamp e il nuovo canvas devono essere spostati dal metodo onDraw.
bene, immagine uso, se si vede che è manualmente troppo complicato –
Che cos'è ColorTransparent? Perché non pubblicare un codice di ciò che hai provato? Vedi se questo aiuta - http://stackoverflow.com/questions/9988671/android-r-color-transparent-not-fully-transparent – Sundeep
Color.TRANSPARENT è una costante di Android. – Tryum