+ Core KTX - androidx.core.graphics val color = Color.CYAN val a = (color shr 24) and 0xff val r = (color shr 16) and 0xff val g = (color shr 8) and 0xff val b = color and 0xff val color = Color.CYAN val a = color.alpha val r = color.red val g = color.green val b = color.blue
+ Core KTX - androidx.core.os TraceCompat.beginSection("my_trace_tag") // some stuff to benchmark TraceCompat.endSection() trace("my_trace_tag") { // some stuff to benchmark }
+ Core KTX - androidx.core.os val bundle = Bundle() bundle.putInt("key1", 42) bundle.putString("key2", "my string") val bundle = bundleOf( "key1" to 42, "key2" to "my string") Performance warning
+ Core KTX - androidx.core.os (bundleOf) fun bundleOf(vararg pairs: Pair) = Bundle(pairs.size).apply { for ((key, value) in pairs) { when (value) { null -> putString(key, null) // Any nullable type will suffice. // Scalars is Boolean -> putBoolean(key, value) is Byte -> putByte(key, value) is Char -> putChar(key, value) is Double -> putDouble(key, value) is Float -> putFloat(key, value) ...
+ Core KTX - androidx.core.text val sb = SpannableString("Red fox jumped over the lazy dog") sb.setSpan(ForegroundColorSpan(Color.RED), 0, 3, 0) sb.setSpan(StyleSpan(Typeface.ITALIC), 8, 14, 0) sb.setSpan(StyleSpan(Typeface.BOLD), 24, 28, 0) Red fox jumped over the lazy dog Bad
+ Core KTX - androidx.core.text fun SpannableStringBuilder.append(text: CharSequence, span: Any) = apply { val len1 = length append(text) val len2 = length setSpan(span, len1, len2, 0) } Red fox jumped over the lazy dog Better
+ Core KTX - androidx.core.text val sb = SpannableStringBuilder() .append("Red", ForegroundColorSpan(Color.RED)) .append(" fox ") .append("jumped", StyleSpan(Typeface.ITALIC)) .append(" over the ") .append("lazy", StyleSpan(Typeface.BOLD)) .append(" dog") Red fox jumped over the lazy dog Better
+ Core KTX - androidx.core.text buildSpannedString { color(Color.RED) { append("Red") } append(" fox ") italic { append("jumped") } append(" over the ") bold { append("lazy") } append("dog") } Red fox jumped over the lazy dog Good
+ Activity KTX activity.onBackPressedDispatcher.addCallback(lifecycleOwner) { // do something on back press isEnabled = false } class MyActivity : AppCompatActivity() { private val viewModel1 by viewModels() }
+ Fragment KTX fragmentManager.commit(allowStateLoss = true) { add(MyFragment(), "my_tag") } class MyFragment : Fragment() { private val viewModel1 by viewModels() private val viewModel2 by activityViewModels() }