Skip to content

Instantly share code, notes, and snippets.

View IMoHaMeDHaMdYI's full-sized avatar
💻

Mohamed Hamdy IMoHaMeDHaMdYI

💻
  • N26
View GitHub Profile
@IMoHaMeDHaMdYI
IMoHaMeDHaMdYI / PathArcTo.kt
Last active August 25, 2019 15:34
learn how to use arcTo
val path = Path()
val paint = Paint()
paint.apply {
strokeWidth = 20f
style = Paint.Style.FILL
}
path.apply {
moveTo(xCenter, yCenter)
@IMoHaMeDHaMdYI
IMoHaMeDHaMdYI / OnDraw.kt
Created August 25, 2019 16:46
The final on draw I'm using
override fun onDraw(canvas: Canvas) {
super.onDraw(canvas)
val path = Path()
path.apply {
moveTo(shadowSize + cornerRadius, shadowSize + cornerRadius)
arcTo(0f, 0f, shadowSize * 2 + 2 * cornerRadius, shadowSize * 2 + 2 * cornerRadius, 180f, 90f, false)
moveTo(shadowSize + cornerRadius, shadowSize + cornerRadius)
arcTo(shadowSize, shadowSize, shadowSize + 2 * cornerRadius, shadowSize + 2 * cornerRadius, 270f, -90f, false)
}
canvas.drawPath(path, radialGradientPaint)
@IMoHaMeDHaMdYI
IMoHaMeDHaMdYI / CardView.kt
Created August 25, 2019 16:51
Basic CardView
class CardView(context: Context, attributeSet: AttributeSet) : View(context, attributeSet) {
private var outerWidth = 0f
private var outerHeight = 0f
private var xCenter = 0f
private var yCenter = 0f
private var cornerRadius = 10f
private var shadowSize = 50f
private val shadowStartColor = 0x20000000
private val shadowEndColor = 0x00000000
@IMoHaMeDHaMdYI
IMoHaMeDHaMdYI / debounce.kt
Created April 13, 2020 09:43 — forked from mirmilad/debounce.kt
Simple debounce extension for LiveData by using Coroutines
import androidx.lifecycle.LiveData
import androidx.lifecycle.MediatorLiveData
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
fun <T> LiveData<T>.debounce(duration: Long = 1000L, coroutineScope: CoroutineScope) = MediatorLiveData<T>().also { mld ->
val source = this