Skip to content

Instantly share code, notes, and snippets.

View ElianFabian's full-sized avatar

Elián Fabián ElianFabian

View GitHub Profile
package yourpackage
import android.annotation.SuppressLint
import android.app.Activity
import android.app.Application
import android.content.Context
import android.content.SharedPreferences
import android.content.pm.PackageManager
import android.content.res.Configuration
import android.content.res.Resources
@ElianFabian
ElianFabian / ExtendedCardView.kt
Last active September 22, 2024 20:32
A CardView that allows setting the corner radius as a percentage. It also fix the issue of the corner radius exceeding the 50% limit on API 22 and below which causes the card to look weird.
package yourpackage
import android.content.Context
import android.os.Build
import android.util.AttributeSet
import android.view.View
import androidx.cardview.widget.CardView
import yourpackage.R
/**
@ElianFabian
ElianFabian / LanguageContextWrapper.kt
Last active September 20, 2024 17:03
ContextWrapper to propperly update the locale of your application. The default implementation takes the first supported locale, otherwise takes the default locale.. Gist to generate the supported and default locale: Gist to generate the supported locales: https://gist.github.com/ElianFabian/e94071f348998c24bedaa959ddb8df40
import android.annotation.SuppressLint
import android.app.Application
import android.content.ComponentCallbacks
import android.content.Context
import android.content.ContextWrapper
import android.content.res.Configuration
import android.content.res.Resources
import android.os.Build
import android.os.LocaleList
import androidx.core.os.ConfigurationCompat
using System;
// From the Kotlin standard library
public class XorWowRandom
{
private int x, y, z, w, v, addend;
private XorWowRandom() { }
public static XorWowRandom FromSeed(int seed)
@ElianFabian
ElianFabian / PariGp.ps1
Created July 11, 2024 19:17
Example of how to use PARI/GP inside PowerShell
function Get-PrimeNumber([ulong] $position) {
return [System.UInt128] ("prime($position)" | gp.exe -q)
}
import android.content.Context
import android.graphics.Color
import android.util.AttributeSet
import android.view.ViewGroup
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.annotation.DimenRes
import androidx.annotation.Dimension
import androidx.annotation.Px
import androidx.core.content.ContextCompat
@ElianFabian
ElianFabian / AsyncResource.kt
Last active September 30, 2024 19:26
Network utilities for Android.
import kotlinx.coroutines.*
import kotlinx.coroutines.flow.*
import kotlinx.coroutines.sync.*
interface AsyncResource<out T> {
sealed interface State<out T> {
data object NotStarted : State<Nothing>
data class Loading<out T>(val currentResource: Completed<T>?) : State<T>
sealed interface Completed<out T> : State<T> {
@ElianFabian
ElianFabian / ScrollViewExt.kt
Last active August 28, 2024 13:30
TextView extension functions to easily implement reactivity.
import android.view.View
import android.widget.ScrollView
fun ScrollView.smoothScrollToViewBottom(view: View) {
val scrollViewHeight = height
val outViewPosition = IntArray(2)
view.getLocationOnScreen(outViewPosition)
val viewY = outViewPosition[1]
import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer
@ElianFabian
ElianFabian / build.gradle.kts
Created April 1, 2024 20:34
How to read a property from local.properties file.
android {
namespace = ""
compileSdk = 34
defaultConfig {
applicationId = ""
minSdk = 21
targetSdk = 34
versionCode = 1
versionName = "1.0"