Percentuale del tempo impiegato per misurare e creare il layout del testo
// UI thread val params: PrecomputedText.Params = textView.getTextMetricsParams() val ref = WeakReference(textView) executor.execute { // background thread val text = PrecomputedText.create("Hello", params) val textView = ref.get() textView?.post { // UI thread val textViewRef = ref.get() textViewRef?.text = text } }
Ingrandimento del testo in Android P Desideravamo che gli utenti avessero la stessa esperienza su tutte le app, sia nei widget personalizzati che durante il rendering di testo personalizzato, quindi abbiamo creato il widget Magnifier che può essere applicato a qualsiasi visualizzazione collegata a una finestra. Questo widget può fornire una versione ingrandita di qualsiasi visualizzazione o superficie, non solo del testo. Utilizza 3 metodi principali: mostrare, aggiornare e chiudere. Ad esempio, puoi richiamare questi metodi durante l'implementazione della gestione di toTouchEvent per la tua visualizzazione personalizzata e ciò farà sì che il Magnifier segua il dito dell'utente sullo schermo.
Magnifier
fun onTouchEvent(event: MotionEvent): Boolean { when (event.actionMasked) { MotionEvent.ACTION_DOWN -> magnifier.show(event.x, event.y) MotionEvent.ACTION_MOVE -> magnifier.show(event.x, event.y) MotionEvent.ACTION_UP -> magnifier.dismiss() } }
Smart Linkify in Android P Per migliorare le prestazioni dell'app, ti consigliamo di spostare il lavoro di generazione e applicazione dei link a un thread di background.
// UI thread val text: Spannable = ... val request = TextLinks.Request.Builder(text) val ref = WeakReference(textView) executor.execute { // background thread TextClassifier.generateLinks(request).apply(text) val textView = ref.get() textView?.post { // UI thread val textViewRef = ref.get() textViewRef?.text = text } }
lineSpacingExtra
lineSpacingMultiplier
lineHeight
Dimensioni dell'altezza della riga e del carattere
<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Lorem ipsum dolor sit amet" app:lineHeight="50sp"/> // or in code TextView.setLineHeight(@Px int)
firstBaselineToTopHeight
lastBaselineToBottomHeight
Distanze tra la prima baseline verso l'alto e l'ultima baseline verso il basso
<TextView android:layout_height="wrap_content" android:layout_width="match_parent" android:text="Lorem ipsum dolor sit amet" app:firstBaselineToTopHeight="28sp" app:lastBaselineToBottomHeight="20sp"/> // or in code TextView.setFirstBaselineToTopHeight(@Px int) TextView.setLastBaselineToBottomHeight(@Px int)