mirror of
https://github.com/topjohnwu/Magisk.git
synced 2026-01-06 09:44:57 -08:00
Precompute TextView in I/O thread for performance
This commit is contained in:
@@ -1,9 +1,14 @@
|
||||
package com.topjohnwu.magisk.databinding
|
||||
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.core.text.PrecomputedTextCompat
|
||||
import androidx.core.view.isGone
|
||||
import androidx.core.view.isInvisible
|
||||
import androidx.core.widget.TextViewCompat
|
||||
import androidx.databinding.BindingAdapter
|
||||
import com.topjohnwu.magisk.extensions.subscribeK
|
||||
import io.reactivex.Single
|
||||
|
||||
@BindingAdapter("gone")
|
||||
fun setGone(view: View, gone: Boolean) {
|
||||
@@ -24,3 +29,12 @@ fun setGoneUnless(view: View, goneUnless: Boolean) {
|
||||
fun setInvisibleUnless(view: View, invisibleUnless: Boolean) {
|
||||
setInvisible(view, invisibleUnless.not())
|
||||
}
|
||||
|
||||
@BindingAdapter("precomputedText")
|
||||
fun setPrecomputedText(tv: TextView, text: CharSequence) {
|
||||
Single.fromCallable {
|
||||
PrecomputedTextCompat.create(text, TextViewCompat.getTextMetricsParams(tv))
|
||||
}.subscribeK {
|
||||
TextViewCompat.setPrecomputedText(tv, it);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user