Skip to content

Instantly share code, notes, and snippets.

View iprashantpanwar's full-sized avatar
🦮

Prashant Panwar iprashantpanwar

🦮
View GitHub Profile
@iprashantpanwar
iprashantpanwar / ContinuousRipple.kt
Created October 11, 2025 16:58
A Continues Ripple animation using Jetpack Compose
@Composable
fun ContinuousRipple(
modifier: Modifier = Modifier,
backgroundColor: Color = Color(0xFFF0F0F3),
rings: Int = 3,
durationMillis: Int = 10000
) {
val infinite = rememberInfiniteTransition()
val clock = infinite.animateFloat(
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.core.*
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
import androidx.compose.ui.ExperimentalComposeUiApi
@iprashantpanwar
iprashantpanwar / Ticket.kt
Last active September 16, 2025 20:28
Draw a Ticket Shape in Jetpack Compose
@Composable
fun TicketView() {
Box(
modifier = Modifier
.size(400.dp)
.padding(horizontal = 16.dp)
.background(
color = Color.White,
shape = TicketShapeVertically(cornerRadius = 12.dp, cutoutRadius = 8.dp)
)
@iprashantpanwar
iprashantpanwar / MySdk.kt
Created September 6, 2025 21:53
How to depend on interfaces rather than concrete implementations and optionally modularize features
// BAD: Direct dependency on Glide
class ImageLoader {
private val glide = Glide.with(context)
fun load(url: String, imageView: ImageView) {
glide.load(url).into(imageView)
}
}
// GOOD: Depend on an abstraction
@iprashantpanwar
iprashantpanwar / BouncyHeart.kt
Last active October 17, 2025 17:42
Bouncy, pulsating heart animation in Jetpack Compose — inspired by https://dribbble.com/shots/2419184-Heart-Rate-Monitor-Animation
@Composable
fun HeartBeatScreen(
modifier: Modifier = Modifier
) {
Box(
modifier = modifier
.fillMaxSize(),
contentAlignment = Alignment.Center
) {
AnimatedLayeredHearts(modifier)
/**
* Encapsulates the visual styling of a morphing blob.
*/
data class BlobStyle(
val effect: BlobEffect = BlobEffect(),
val shader: BlobShader = BlobShader.Radial(),
val shape: BlobShape = BlobShape.Fill
) {
companion object {
fun default(): BlobStyle = BlobStyle()