Blueprint UI¶
The Blueprint UI provides a number of convenient Kotlin extensions and widgets for working with the Android UI toolkit.
Dependency¶
implementation "io.github.reactivecircus.blueprint:blueprint-ui:${blueprint_version}"
Note that the library uses androidx.appcompat:appcompat transitively.
Extensions¶
Kotlin extensions on Activity:
/**
 * Shows status bar on the activity.
 */
fun Activity.showStatusBar()
/**
 * Hides status bar from the activity.
 */
fun Activity.hideStatusBar()
/**
 * Sets status bar color on the activity and optionally draws the status bar system ui in light or dark mode.
 */
fun Activity.setStatusBarColor(@ColorRes colorRes: Int, lightBackground: Boolean = false)
/**
 * Returns screen size of the activity.
 */
val Activity.screenSize: DisplayMetrics
Kotlin extensions on Context:
/**
 * Apply tinting to a vector drawable.
 */
fun Context.tintVectorDrawable(
    theme: Resources.Theme,
    @DrawableRes resId: Int,
    @ColorInt tint: Int
): Drawable
/**
 * Whether animation is turned on on the device.
 */
val Context.isAnimationOn: Boolean
Kotlin extensions on AppCompat:
/**
 * Sets the precomputed text future on the [AppCompatTextView].
 *
 * @param charSequence the text to be displayed
 * @param executor the executor to be used for processing the text layout.
 *  Default single threaded pool will be used if null is passed in.
 */
fun AppCompatTextView.setPrecomputedTextFuture(charSequence: CharSequence, executor: Executor? = null)
Kotlin extensions on Window:
/**
 * Programmatically shows the soft keyboard.
 */
fun Window.showSoftKeyboard()
/**
 * Programmatically hides the soft keyboard.
 */
fun Window.hideSoftKeyboard()
Intent.kt has extensions on Activity and Context for launching new activity. 
For example to launch a new Activity from an Activity:
launchActivity<NoteActivity> {
    putExtra(EXTRA_ENTER_NOTE_ID, 1)
}
To launch a new Activity, passing in a request code:
launchActivity<ScanQrCodeActivity>(requestCode = SCAN_QR_CODE_REQUEST)
This internally launches the activity with Activity.startActivityForResult(...).