Le API Brush ti forniscono gli strumenti per definire lo stile visivo dei tratti. Puoi creare pennelli con colori, dimensioni e famiglie diversi per ottenere una varietà di aspetti.
Competenze Android
Visualizza su GitHubCrea pennelli Ink personalizzati
ink-custom-brush-builder per progettare stili BrushFamily personalizzati in Jetpack Compose con punte personalizzate, comportamenti dinamici, texture e strati.android skills add ink-custom-brush-builderCrea un pennello
Per creare un pennello, utilizza i metodi companion di Compose Brush con argomenti denominati come Brush.Companion.createWithComposeColor.
Questa classe consente di impostare le seguenti proprietà:
family: lo stile del pennello, analogo a un carattere tipografico o a un carattere nel testo. ConsultaStockBrushesper i valoriBrushFamilydisponibili.color: il colore del pennello. Puoi impostare il colore utilizzando unColorLong.size: lo spessore complessivo dei tratti creati con il pennello.epsilon: la distanza minima per cui due punti devono essere considerati visivamente distinti ai fini della geometria di generazione del tratto. Il rapporto tra epsilon e punti del tratto controlla quanto è possibile aumentare lo zoom su un tratto senza artefatti, a scapito della memoria. Un buon punto di partenza per le unità di tratto è 1 px, mentre per epsilon è 0,1. Valori di epsilon più elevati utilizzano meno memoria, ma consentono uno zoom inferiore prima che vengano visualizzati gli artefatti triangolari. Sperimenta per trovare il valore giusto per il tuo caso d'uso.
val brush = Brush.createWithComposeColor( family = StockBrushes.pressurePen(), color = Color.Black, size = 5F, epsilon = 0.1F )
Modifica le proprietà del pennello
Puoi creare una copia di un pennello esistente utilizzando il metodo copyWithComposeColor(), che ti consente di modificare qualsiasi proprietà del pennello.
val redBrush = Brush.createWithComposeColor( family = StockBrushes.pressurePen(), color = Color.Red, size = 5F, epsilon = 0.1F ) val blueBrush = redBrush.copyWithComposeColor(color = Color.Blue)
Pennelli personalizzati
Sebbene StockBrushes fornisca un set versatile di pennelli comuni, l'API Ink offre anche un percorso avanzato per creare comportamenti dei pennelli completamente nuovi per effetti artistici unici o per replicare pennelli esistenti specifici per la compatibilità con le versioni precedenti.
Un BrushFamily personalizzato viene caricato dal suo formato serializzato. Il formato richiesto è la codifica binaria con compressione gzip del buffer di protocollo BrushFamily. In questo modo puoi caricare e utilizzare i file dei pennelli personalizzati oggi stesso. Una volta deserializzato, il BrushFamily personalizzato può essere utilizzato per creare un nuovo Brush con un colore e una dimensione specifici, proprio come qualsiasi famiglia StockBrushes.
class CustomBrushes(val context: Context) { companion object { private const val TAG = "CustomBrushes" } val brushes by lazy { loadCustomBrushes() } @OptIn(ExperimentalInkCustomBrushApi::class) private fun loadCustomBrushes(): List<CustomBrush> { val brushFiles = mapOf( "Calligraphy" to (R.raw.calligraphy to R.drawable.draw_24px), "Flag Banner" to (R.raw.flag_banner to R.drawable.flag_24px), "Graffiti" to (R.raw.graffiti to R.drawable.format_paint_24px), // ... ) val loadedBrushes = brushFiles.mapNotNull { (name, pair) -> val (resourceId, icon) = pair val brushFamily = context.resources.openRawResource(resourceId).use { inputStream -> BrushFamily.decode(inputStream) } CustomBrush(name, icon, brushFamily) } return loadedBrushes } } data class CustomBrush( val name: String, val icon: Int, val brushFamily: BrushFamily )