Skip to content

Instantly share code, notes, and snippets.

fun <A, B, R> zipMergeLiveData(a: LiveData<A>, b: LiveData<B>, zipper: (A, B) -> R): LiveData<R> {
return MediatorLiveData<R>().apply {
var lastA: A? = null
var lastB: B? = null
fun update() {
val localLastA = lastA
val localLastB = lastB
if (localLastA != null && localLastB != null) {
val foo = zipper.invoke(localLastA, localLastB)
@npike
npike / CircularProgressDrawable.java
Last active February 23, 2022 02:17 — forked from castorflex/CircularProgressDrawable.java
An indeterminate progress bar implementation that looks like the Android 5.0 indeterminate progress bar.
import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Animatable;