Skip to content

Instantly share code, notes, and snippets.

View bmc08gt's full-sized avatar
:shipit:
Building Flipcash and Sharpen (McGraw Hill)

Brandon McAnsh bmc08gt

:shipit:
Building Flipcash and Sharpen (McGraw Hill)
View GitHub Profile
@bmc08gt
bmc08gt / build.gradle.kts
Created August 5, 2021 17:53
Shared KMM gradle script for generating a FAT swift package supporting physical devices and simulators
import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
plugins {
kotlin("multiplatform")
id("com.android.library")
kotlin("plugin.parcelize")
id("com.apollographql.apollo3") version "3.0.0-dev13"
id("com.chromaticnoise.multiplatform-swiftpackage") version "2.0.3"
}
@bmc08gt
bmc08gt / LoremText.kt
Created August 5, 2021 11:16
Lorem Ipsum paragraph generator in Jetpack Compose
import androidx.compose.material.LocalTextStyle
import androidx.compose.material.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.TextLayoutResult
import androidx.compose.ui.text.TextStyle
import androidx.compose.ui.text.font.FontFamily
import androidx.compose.ui.text.font.FontStyle
@bmc08gt
bmc08gt / monkey.gradle
Created July 20, 2021 19:40
Gradle task to piggyback off install task allowing CLI opening of the app.
android.applicationVariants.all { variant ->
task "open${variant.name.capitalize()}" {
dependsOn "install${variant.name.capitalize()}"
doLast {
exec {
commandLine "adb shell monkey -p ${variant.applicationId} -c android.intent.category.LAUNCHER 1".split(" ")
}
}
}
@bmc08gt
bmc08gt / content.kt
Created June 22, 2021 13:58
Jetpack Compose Calendar Usage
@Composable
internal fun Content(
viewState: OnSiteScheduleViewState,
actioner: (OnSiteScheduleAction) -> Unit,
) {
MonthCalendar(
modifier = Modifier
.fillMaxWidth()
.padding(horizontal = 8.dp),
onMonthChanged = { day -> actioner(OnSiteScheduleAction.OnMonthChanged(day)) }
@bmc08gt
bmc08gt / Calendar.kt
Last active December 15, 2023 03:38
Jetpack Compose Calendar Implementation
interface CalendarScope {
var changeMonthAnimation: FiniteAnimationSpec<Float>
var changeMonthSwipeTriggerVelocity: Int
var header: @Composable (day: CalendarDay, actioner: (CalendarAction) -> Unit) -> Unit
var dayLabel: @Composable (dayOfWeek: DayOfWeek, labelWidth: Dp) -> Unit
var day: @Composable BoxScope.(padding: PaddingValues, day: CalendarDay, today: CalendarDay) -> Unit
var inDates: @Composable BoxScope.(padding: PaddingValues, day: CalendarDay) -> Unit
var outDates: @Composable BoxScope.(padding: PaddingValues, dayDate: CalendarDay) -> Unit
}
@bmc08gt
bmc08gt / StaggeredVerticalGrid.kt
Last active March 13, 2023 04:42
A StaggeredVerticalGrid with support for lazyPagingItems in Jetpack Compose
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.PaddingValues
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.GridCells
import androidx.compose.foundation.lazy.LazyColumn
@bmc08gt
bmc08gt / Chips.kt
Last active December 15, 2023 03:39
Jetpack Compose Chips
package com.planoly.ui.compose.components
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Icon
import androidx.compose.material.IconButton
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Surface
import androidx.compose.material.Text
interface AppComponent : Component {
val appContext: Context
}
class AppConfig(
override val appContext: Context,
) : AppComponent
@bmc08gt
bmc08gt / AndroidResourceHelper.kt
Last active January 21, 2021 20:33
MVI resource helper
class AndroidResourceHelper(private val context: Context) : ResourceHelper {
override fun getString(@StringRes resourceId: Int, default: String): String {
return try {
context.getString(resourceId)
} catch (e: Exception) {
e.printStackTrace()
default
}
}
import androidx.compose.animation.*
import androidx.compose.animation.core.tween
import androidx.compose.material.*
import androidx.compose.runtime.Composable
import androidx.compose.runtime.onCommit
import androidx.compose.ui.Modifier
@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class)
@Composable
fun <T> AnimatedSwipeDismiss(