Hello Developers, welcome to Techpass Master, In this post, you will learn how to Load Images from URLs with Shimmer Effect in Jetpack Compose with Kotlin in Android Studio, this post will help you to load an image with Shimmer in a simple way. So without any further discussion let’s get started!
Page Contents
Load Image from URL with Shimmer Effect in Jetpack Compose
-Demo-
Implement Library
implementation "com.github.skydoves:landscapist-glide:1.3.6"
Add Internet Permission
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Use GlideImage to load the Image with the shimmer effect.
GlideImage( imageModel = imageUrl, contentScale = ContentScale.Crop, circularReveal = CircularReveal(duration = 100), alignment = Alignment.Center, shimmerParams = ShimmerParams( baseColor = MaterialTheme.colors.background, highlightColor = Color.Gray, durationMillis = 500, dropOff = 0.55f, tilt = 20f ) )
-Complete Code-
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.techpassmaster.jetpackcomposecourse"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.JetpackComposeCourse"> <activity android:name="com.techpassmaster.jetpackcomposecourse.MainActivity" android:exported="false" android:label="@string/title_activity_image_with_shimmer" android:theme="@style/Theme.JetpackComposeCourse" /> <activity android:name="com.techpassmaster.jetpackcomposecourse.LoadImageShimmerActivity" android:exported="true" android:label="@string/app_name" android:theme="@style/Theme.JetpackComposeCourse"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
build.gradle (Module)
plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' } android { compileSdk 32 defaultConfig { applicationId "com.taiyabali.jetpackcomposecourse" minSdk 21 targetSdk 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary true } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } buildFeatures { compose true } composeOptions { kotlinCompilerExtensionVersion compose_version } packagingOptions { resources { excludes += '/META-INF/{AL2.0,LGPL2.1}' } } } dependencies { implementation 'androidx.core:core-ktx:1.8.0' implementation "androidx.compose.ui:ui:$compose_version" implementation "androidx.compose.material:material:$compose_version" implementation "androidx.compose.ui:ui-tooling-preview:$compose_version" implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.3.1' implementation 'androidx.activity:activity-compose:1.3.1' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version" debugImplementation "androidx.compose.ui:ui-tooling:$compose_version" debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version" // Glide with Shimmer Effect implementation "com.github.skydoves:landscapist-glide:1.3.6" }
LoadImageShimmerActivity.kt
package com.techpassmaster.jetpackcomposecourse import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.MaterialTheme import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import com.skydoves.landscapist.CircularReveal import com.skydoves.landscapist.ShimmerParams import com.skydoves.landscapist.glide.GlideImage import com.techpassmaster.jetpackcomposecourse.ui.theme.JetpackComposeCourseTheme class LoadImageShimmerActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { JetpackComposeCourseTheme { // A surface container using the 'background' color from the theme Surface(modifier = Modifier.fillMaxSize(), color = MaterialTheme.colors.background) { GetImageWithShimmerEffect() } } } } } @Composable private fun GetImageWithShimmerEffect() { val imageUrl = "https://techpassmaster.com/wp-content/uploads/2021/11/Get-Current-Location-in-Android-Studio-using-Kotlin-Thumblain-768x512.png" Surface(modifier = Modifier .fillMaxWidth() .padding( start = 4.dp, end = 4.dp, top = 16.dp ), shape = RoundedCornerShape(corner = CornerSize(15.dp))) { Text( text = "Load Image from URL with Shimmer Effect in Jetpack Compose", style = MaterialTheme.typography.h5, color = MaterialTheme.colors.primaryVariant, textAlign = TextAlign.Center, ) Surface(Modifier .wrapContentWidth() .wrapContentHeight()) { Column(modifier = Modifier.height(300.dp), verticalArrangement = Arrangement.Top, horizontalAlignment = Alignment.CenterHorizontally) { Surface(modifier = Modifier .fillMaxWidth() .padding(5.dp), shape = RoundedCornerShape(corner = CornerSize(15.dp))) { GlideImage( imageModel = imageUrl, contentScale = ContentScale.Crop, circularReveal = CircularReveal(duration = 100), alignment = Alignment.Center, shimmerParams = ShimmerParams( baseColor = MaterialTheme.colors.background, highlightColor = Color.Gray, durationMillis = 500, dropOff = 0.55f, tilt = 20f ) ) } } } } }
Congratulations, all steps are done, now run and test the application.
You May Also Like:
- Kotlin tutorial for beginners.
- How To Make An Android App For Beginners
- Android Interview Questions For Fresher.
- Install & Setup Android Studio Java JDK & SDK.
- Shimmer Effect Android Using Kotlin.
- Top 5 Things To Avoid While Developing Android Apps.
- 5 Best GitHub Repositories For Android Developer.
- 15 Best Useful Sites For Online Learning.
I hope you liked the post. If you have any questions regarding this post. Feel free to comment and share the post with other developers.
Happy Learning 🙂