Анимация заполнителя контента с использованием Shimmer в Android с RecyclerView
Мы видели реализацию Content Placeholder Animation с использованием Shimmer в Android для простого просмотра. В этой статье мы рассмотрим реализацию Content Placeholder Animation с помощью Shimmer в Android с RecyclerView.
Что мы собираемся построить в этой статье?
Мы создадим простое приложение, в котором мы будем просто отображать данные в нашем Android RecyclerView из нашего API. Для загрузки данных мы будем отображать заполнитель контента для загрузки. Пример видео приведен ниже, чтобы получить представление о том, что мы собираемся делать в этой статье. Обратите внимание, что мы собираемся реализовать этот проект на языке Java .
Пошаговая реализация
Шаг 1: Создайте новый проект
Чтобы создать новый проект в Android Studio, обратитесь к разделу «Как создать/запустить новый проект в Android Studio». Обратите внимание, что в качестве языка программирования выберите Java .
Шаг 2: Добавление зависимости для использования макета Facebook Shimmer
Перейдите к приложению > Gradle Scripts > файлу build.gradle и добавьте к нему приведенную ниже зависимость.
// below line is used for volley library
implementation ‘com.android.volley:volley:1.1.1’
// below line is used for image loading library
implementation ‘com.squareup.picasso:picasso:2.71828’
// depenancy for using facebook shimmer layout.
implementation ‘com.facebook.shimmer:shimmer:0.5.0’
Теперь синхронизируйте свой проект и перейдите к файлу XML.
Шаг 3: Добавление разрешений для Интернета в Android
Перейдите к приложению > AndroidManifest.xml и добавьте к нему разрешения для Интернета, поскольку мы загружаем данные из Интернета.
XML
< uses-permission android:name = "android.permission.INTERNET" /> |
Шаг 4: Создание модального класса для хранения наших данных
Перейдите к приложению> java> имя пакета вашего приложения> щелкните его правой кнопкой мыши> Создать> класс Java и назовите его как CourseModal и добавьте к нему приведенный ниже код.
Java
public class CourseModal { // variables for our course // name and description. private String courseName; private String courseimg; private String courseMode; private String courseTracks; public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this .courseName = courseName; } public String getCourseimg() { return courseimg; } public void setCourseimg(String courseimg) { this .courseimg = courseimg; } public String getCourseMode() { return courseMode; } public void setCourseMode(String courseMode) { this .courseMode = courseMode; } public String getCourseTracks() { return courseTracks; } public void setCourseTracks(String courseTracks) { this .courseTracks = courseTracks; } public CourseModal(String courseName, String courseimg, String courseMode, String courseTracks) { this .courseName = courseName; this .courseimg = courseimg; this .courseMode = courseMode; this .courseTracks = courseTracks; } } |
Шаг 5: Создание файла макета для элемента нашего RecyclerView в Android
Перейдите к приложению> res> layout> щелкните его правой кнопкой мыши> New> файл ресурсов макета и назовите его как course_rv_item и добавьте к нему приведенный ниже код.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.cardview.widget.CardView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "8dp" android:elevation = "8dp" app:cardCornerRadius = "8dp" > < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" > <!--ImageView to display our course image--> < ImageView android:id = "@+id/idIVCourse" android:layout_width = "match_parent" android:layout_height = "300dp" android:layout_margin = "5dp" /> <!--text view for our course name--> < TextView android:id = "@+id/idTVCourseName" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "5dp" android:padding = "5dp" android:text = "Course Name " android:textColor = "@color/black" android:textSize = "18sp" android:textStyle = "bold" /> < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "5dp" android:orientation = "horizontal" android:weightSum = "2" > <!--text view for our batch name--> < TextView android:id = "@+id/idTVBatch" android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_weight = "1" android:padding = "5dp" android:text = "Batch" android:textColor = "@color/black" /> <!--text view to display course tracks--> < TextView android:id = "@+id/idTVTracks" android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_weight = "1" android:padding = "5dp" android:text = "Tracks" android:textColor = "@color/black" /> </ LinearLayout > </ LinearLayout > </ androidx.cardview.widget.CardView > |
Шаг 6: Создание файла макета для нашего мерцающего макета
Перейдите к приложению> res> layout> щелкните его правой кнопкой мыши> New> файл ресурсов макета и назовите его как shimmer_layout и добавьте к нему приведенный ниже код.
XML
<? xml version = "1.0" encoding = "utf-8" ?> < androidx.cardview.widget.CardView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "10dp" android:elevation = "10dp" android:visibility = "visible" app:cardCornerRadius = "8dp" > < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:orientation = "vertical" > <!--Image view for displaying our image--> < ImageView android:layout_width = "match_parent" android:layout_height = "300dp" android:layout_margin = "5dp" android:background = "#B3B3B3" /> <!--Text view for displaying our course name--> < TextView android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "5dp" android:background = "#B3B3B3" android:padding = "5dp" android:textColor = "@color/black" android:textSize = "18sp" android:textStyle = "bold" /> < LinearLayout android:layout_width = "match_parent" android:layout_height = "wrap_content" android:layout_margin = "5dp" android:orientation = "horizontal" android:weightSum = "2" > <!--Text view for displaying our batch--> < TextView android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_margin = "2dp" android:layout_weight = "1" android:background = "#B3B3B3" android:padding = "5dp" android:textColor = "@color/black" /> <!--Text view for displaying our tracks.--> < TextView android:layout_width = "0dp" android:layout_height = "wrap_content" android:layout_margin = "2dp" android:layout_weight = "1" android:background = "#B3B3B3" android:padding = "5dp" android:textColor = "@color/black" /> </ LinearLayout > </ LinearLayout > </ androidx.cardview.widget.CardView > |
Шаг 7: Работа с файлом activity_main.xml
Перейдите к приложению > res > layout > activity_main.xml и добавьте приведенный ниже код в этот файл. Ниже приведен код файла activity_main.xml .
XML
<? xml version = "1.0" encoding = "utf-8" ?> < RelativeLayout android:layout_width = "match_parent" android:layout_height = "match_parent" tools:context = ".MainActivity" > <!--recycler view to display our data--> < androidx.recyclerview.widget.RecyclerView android:id = "@+id/idRVCourses" android:layout_width = "match_parent" android:layout_height = "match_parent" android:visibility = "gone" /> <!--below is the view for our shimmer--> < com.facebook.shimmer.ShimmerFrameLayout android:id = "@+id/shimmerLayout" android:layout_width = "match_parent" android:layout_height = "wrap_content" android:animateLayoutChanges = "true" android:animationCache = "true" app:shimmer_repeat_mode = "restart" app:shimmer_shape = "radial" > <!--For shimmer we are creating a same layout but setting its background as a gray colour and not providing any view inside it--> < LinearLayout android:layout_width = "match_parent" android:layout_height = "match_parent" android:orientation = "vertical" > <!--below we are displaying multiple shimmer layouts using include to show them in list format--> < include layout = "@layout/shimmer_layout" /> < include layout = "@layout/shimmer_layout" /> < include layout = "@layout/shimmer_layout" /> < include layout = "@layout/shimmer_layout" /> < include layout = "@layout/shimmer_layout" /> </ LinearLayout > </ com.facebook.shimmer.ShimmerFrameLayout > </ RelativeLayout > |
Шаг 8: Создание класса адаптера для установки данных в наш элемент RecyclerView
Перейдите к приложению> java> имя пакета вашего приложения> Щелкните его правой кнопкой мыши> Создать> Класс Java