Un modo semplice per ottenere questo effetto è quello di utilizzare Canvas.drawCircle()
e un BitmapShader
:
BitmapShader s = new BitmapShader(myPhoto, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
Paint p = new Paint();
p.setShader(s);
myCanvas.drawCircle(centerX, centerY, radius, p);
Per fare l'ombra, è sufficiente chiamare Paint.setShadowLayer()
sulla vernice (questo funziona solo se si disegna l'effetto in un fuori campo Bitmap
o se il vostro View
utilizza uno strato software - set chiamando View.setLayerType()
-).
Il bordo può essere disegnato disegnando un altro cerchio sulla parte superiore, utilizzando lo stile Paint.Style.STROKE
(che è possibile impostare chiamando Paint.setStyle()
).
Infine puoi disegnare il lucido disegnando un cerchio, un ovale o Path
sopra la tua primissima cerchia. Avrete bisogno di usare uno shader LinearGradient
sulla vernice e avrete anche bisogno per ritagliare la brillantezza. È possibile farlo in due modi:
- Se si sta disegnando l'intero effetto in un
Bitmap
, che è quello che mi sento di raccomandare, è sufficiente impostare la vernice Xfermode
ad un new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)
.
- Se si sta disegnando l'effetto direttamente sullo schermo si può semplicemente utilizzare
Canvas.clipPath()
per impostare una clip circolare. Si noti che questo funzionerà con l'accelerazione hardware solo a partire da Android 4.3.
fonte
2013-09-05 17:46:14
vi posto un'implementazione angolo rotondo, spero che ti aiutano, http://stackoverflow.com/a/19858771/1294681 – VinceStyling