operazioni composite in Android Tela
-
23-09-2019 - |
Domanda
Sto iniziando con lo sviluppo Android e vengo da JavaScript mondo / HTML in modo Attualmente sto indagando le possibilità del SDK di Android.
La tela HTML 5 supporta le operazioni composite (Vedi qui ).
Questo è possibile in una tela di Android? Ho scansionato le API della classe Canvas, ma non ho trovato nulla di utile. Ho bisogno di almeno composito operazione "source-in" o (se questo non è possibile) "source-cima".
Soluzione
composizione è gestita da disegnare su un Canvas
con un Paint
che utilizza un PorterDuffXfermode
.
Paint p=new Paint();
p.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DARKEN));
canvas.drawBitmap(bitmap, 0, 0, p);
qui per maggiori informazioni. Sono anche riuscito a scavalcare onPaint
in modo da poter applicare questa composizione di elementi che attirano themeselves.
Altri suggerimenti
Non ho guardato a fare questo tipo di operazioni, prima, ma penso che ci sia un modo per farlo utilizzando la Rect forma. È possibile definire rettangoli di tracciare quali aree dovrebbero essere coinvolti in tela, o che togliere dell'immagine sorgente, e la classe Rect
ha alcune caratteristiche di confronto incorporato. Ad esempio, per imitare una fonte-in, è possibile utilizzare setIntersect(Rect boundingBoxOfSource, Rect boundingBoxOfDestination)
per rendere il vostro nuovo rettangolo avere solo l'area di intersezione delle due immagini. Quindi è possibile utilizzare quel rettangolo come argomento in uno dei comandi di tiraggio del Canvas, dicendogli di prendere solo i pixel dell'immagine di origine che si trovano all'interno di quel rettangolo. È quindi controllare il disegno nella Z-asse per l'ordine in cui vengono eseguiti i comandi draw.
Trovato io stesso. Il PorterDuffXfermode implementa tutte queste modalità composite.