Skip to content

Instantly share code, notes, and snippets.

View ryanw-mobile's full-sized avatar

Ryan W ryanw-mobile

View GitHub Profile
@ryanw-mobile
ryanw-mobile / EnergyProductsQuery.kt
Created August 23, 2024 00:20
Apollo Kotlin generated class
//
// AUTO-GENERATED FILE. DO NOT MODIFY.
//
// This class was automatically generated by Apollo GraphQL version '4.0.0'.
//
package com.rwmobi.kunigami.graphql
import com.apollographql.apollo.annotations.ApolloAdaptableWith
import com.apollographql.apollo.api.Adapter
import com.apollographql.apollo.api.CompiledField
@ryanw-mobile
ryanw-mobile / colors.xml
Created August 4, 2024 18:05
Splash Screen color
<resources>
<color name="splash_background">#d8e2e8</color>
</resources>
@ryanw-mobile
ryanw-mobile / themes.xml
Created August 4, 2024 18:03
Splash Screen XML
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.Kunigami" parent="android:Theme.Material.NoActionBar">
<item name="android:windowBackground">@color/splash_background</item>
<item name="android:statusBarColor" tools:targetApi="l">@color/splash_background</item>
</style>
<style name="Theme.Kunigami.Starting" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">@color/splash_background</item>
<item name="windowSplashScreenIconBackgroundColor">@color/splash_background</item>
@ryanw-mobile
ryanw-mobile / AnimatedEndlessViewPager.kt
Created August 1, 2024 20:31
Endless Pager - After
@OptIn(ExperimentalFoundationApi::class)
@Composable
internal fun AnimatedViewPager(
modifier: Modifier = Modifier,
pageSize: Dp,
@DrawableRes drawables: List<Int>,
) {
val endlessPagerMultiplier = 1000
val pageCount = endlessPagerMultiplier * drawables.size
val initialPage = pageCount / 2
@ryanw-mobile
ryanw-mobile / AnimatedViewPager.kt
Created August 1, 2024 20:30
Endless Pager - Before
@OptIn(ExperimentalFoundationApi::class)
@Composable
internal fun AnimatedViewPager(
modifier: Modifier = Modifier,
pageSize: Dp,
@DrawableRes drawables: List<Int>,
) {
val pagerState = rememberPagerState(
initialPage = 0,
initialPageOffsetFraction = 0f,
@ryanw-mobile
ryanw-mobile / App.kt
Created June 11, 2024 03:08
App.kt for DVD Multiplatform
import androidx.compose.foundation.Image
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.material.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
@ryanw-mobile
ryanw-mobile / dvd_logo.xml
Created June 11, 2024 02:55
DVD Logo Vector Drawable
<!--Icons8 Flat Color Icons-->
<!--https://github.com/icons8/flat-Color-icons-->
<!--MIT License-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="64dp"
android:height="64dp"
android:viewportWidth="48"
android:viewportHeight="48">
<path
@ryanw-mobile
ryanw-mobile / PreferencesDataStore.kt
Last active April 17, 2024 10:40
PreferencesDataStore code snippet
private val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "preferences")
private val prefKeyString: Preferences.Key<String> = stringPreferencesKey("some-key-name")
// ... some other keys
init {
externalCoroutineScope.launch(dispatcher) {
dataStore.data.catch { exception ->
_preferenceErrors.emit(exception)
}.collect { prefs ->
// We are not being told which key-pair has changed
@ryanw-mobile
ryanw-mobile / SharedPreferences.kt
Created March 21, 2024 20:26
SharedPreferences code snippet
private val sharedPref = context.getSharedPreferences(SHARED_PREF_NAME, Context.MODE_PRIVATE)
// If we want to make it reactive
private val onPreferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { sharedPref, key ->
when (key) {
prefKeyString -> {
_stringPreference.value = sharedPref.getString(prefKeyString, null) ?: stringPreferenceDefault
}
prefKeyBoolean -> {
_booleanPreference.value = sharedPref.getBoolean(prefKeyBoolean, booleanPreferenceDefault)
@ryanw-mobile
ryanw-mobile / setComponentEnabledSetting.kt
Last active August 14, 2023 22:14
PackageManager.COMPONENT_ENABLED_STATE_DISABLED
val packageManager = context.packageManager
val components = listOf(
"com.rwmobi.xlaunchericons.MainActivityA",
"com.rwmobi.xlaunchericons.MainActivityB",
"com.rwmobi.xlaunchericons.MainActivityC"
)
components.forEach() {
packageManager.setComponentEnabledSetting(