赞
踩
增强应用程序的用户体验是任何开发人员的首要任务之一。与图像和文本描述相比,为某些描述提供动画总是可以增强应用程序的用户体验!
Lottie是用于移动应用程序的库之一,有助于以更简单的方式提供动画。如何开始在 Android 中使用 Lottie 动画?让我们深入阅读这篇文章并理解这一点。
今天,我们将学习并构建它。
与往常一样,我们将在示例项目的帮助下快速理解这一点。
创建项目
让我们在应用级别的 build.gradle 文件中添加所需的 Lottie 动画依赖项:
//Lottie Animation
implementation 'com.airbnb.android:lottie:3.4.0'
在继续项目之前,我们必须从https://lottiefiles.com/中选择所需的动画。我们可以在搜索栏中输入类别,选择相应的动画,然后下载文件的 JSON 版本。
现在在我们的项目中创建一个资产文件夹。
项目结构中的assets目录应该放在src目录下。
将所有必需的下载 JSON文件添加到此资产文件夹。
现在,一旦我们创建了项目,我们就知道我们有两个文件 MainActivity.kt 和 activity_main.kt。
让我们从我们的activity_main.kt文件开始:
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_headline" app:layout_constraintBottom_toTopOf="@+id/lav_main" android:layout_marginTop="16dp" android:text="Steps to follow during this CoronaVirus Quarantine!" android:textSize="24sp" android:textStyle="bold" android:gravity="center" android:textColor="@android:color/black" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent"/> <com.airbnb.lottie.LottieAnimationView android:id="@+id/lav_main" android:layout_width="match_parent" android:layout_height="300dp" app:lottie_autoPlay="true" app:lottie_fileName="fight_coronavirus.json" app:lottie_loop="false" app:lottie_speed="1" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toTopOf="@+id/layout_click" app:layout_constraintTop_toBottomOf="@id/tv_headline" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/layout_click" android:orientation="horizontal" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/lav_main"> <com.airbnb.lottie.LottieAnimationView android:id="@+id/lav_click_left" android:layout_width="0dp" android:layout_height="100dp" android:layout_weight="1" app:lottie_autoPlay="true" android:visibility="gone" app:lottie_fileName="left_arrow.json" app:lottie_loop="true" app:lottie_speed="1" /> <com.airbnb.lottie.LottieAnimationView android:id="@+id/lav_click_right" android:layout_width="0dp" android:layout_weight="1" android:layout_height="100dp" app:lottie_autoPlay="true" app:lottie_fileName="right_arrow.json" app:lottie_loop="true" app:lottie_speed="1" /> </LinearLayout> </androidx.constraintlayout.widget.ConstraintLayout>
在此示例中,我们有一个基本 UI,其中包含
我们可以从 activity_main.xml 中看到,需要添加到 Lottie Animation 视图中的文件是通过属性完成的:
//The json file added to the assets directory
app:lottie_fileName="filename.json"
现在,让我们更新MainActivity.kt文件:
package com.mindorks.lottieanimation import android.os.Bundle import android.view.View import androidx.appcompat.app.AppCompatActivity import kotlinx.android.synthetic.main.activity_main.lav_click_left import kotlinx.android.synthetic.main.activity_main.lav_click_right import kotlinx.android.synthetic.main.activity_main.lav_main import kotlinx.android.synthetic.main.activity_main.tv_headline class MainActivity : AppCompatActivity() { private var count: Int = 0 override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) initListeners() } private fun initListeners() { lav_click_right.setOnClickListener { count++ showStep(count = if (count > 4 ) 4 else count) } lav_click_left.setOnClickListener { count-- showStep(count = if (count < 0 ) 0 else count) } } private fun showStep(count: Int) { when (count) { 0 -> { setFooter( isLeftVisible = false, isRightVisible = true ) setStepContent( header = "Steps to follow during this CoronaVirus Quarantine!", lottieAnimationFile = "fight_coronavirus.json" ) } 1 -> { setFooter( isLeftVisible = true, isRightVisible = true ) setStepContent(header = "1\. Maintain Social Distancing!", lottieAnimationFile = "social_distancing.json") } 2 -> { setFooter( isLeftVisible = true, isRightVisible = true ) setStepContent(header = "2\. Stay Home, Stay Safe!", lottieAnimationFile = "stay_safe.json") } 3 -> { setFooter( isLeftVisible = true, isRightVisible = true ) setStepContent(header = "3\. Wash/Sanatize your hands!", lottieAnimationFile = "sanatize.json") } 4 -> { setFooter( isLeftVisible = true, isRightVisible = false ) setStepContent(header = "4\. Learn/Upgrade your skill set!", lottieAnimationFile = "learn.json") } } } private fun setStepContent(header: String, lottieAnimationFile: String) { tv_headline.text = header lav_main?.apply { setAnimation(lottieAnimationFile) repeatCount = 5 playAnimation() } } private fun setFooter( isLeftVisible: Boolean, isRightVisible: Boolean ) { lav_click_left?.apply { visibility = if (isLeftVisible) View.VISIBLE else View.GONE } lav_click_right?.apply { visibility = if (isRightVisible) View.VISIBLE else View.GONE } } }
lav_click_right.setOnClickListener {
count++
showStep(count = if (count > 4 ) 4 else count)
}
lav_click_left.setOnClickListener {
count--
showStep(count = if (count < 0 ) 0 else count)
}
private fun showStep(count: Int)
private fun setStepContent(header: String, lottieAnimationFile:String)
private fun setFooter(isLeftVisible: Boolean,isRightVisible:Boolean)
我们现在都准备好了代码。让我们在任何设备上运行这个应用程序,看看 Lottie Animation 是如何工作的!
LottieAnimation 视图有很多属性,我们可以通过这些属性控制视图的动画。项目中使用的一些是
app:lottie_autoPlay="true"
app:lottie_loop="false"
app:lottie_speed="1"
您可以克隆此项目并尝试以下操作:
如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。
如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。
相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
……
1.Retrofit 2.0源码解析
2.Okhttp3源码解析
3.ButterKnife源码解析
4.MPAndroidChart 源码解析
5.Glide源码解析
6.Leakcanary 源码解析
7.Universal-lmage-Loader源码解析
8.EventBus 3.0源码解析
9.zxing源码分析
10.Picasso源码解析
11.LottieAndroid使用详解及源码解析
12.Fresco 源码分析——图片加载流程
1、Kotlin入门教程
2、Kotlin 实战避坑指南
3、项目实战《Kotlin Jetpack 实战》
从一个膜拜大神的 Demo 开始
Kotlin 写 Gradle 脚本是一种什么体验?
Kotlin 编程的三重境界
Kotlin 高阶函数
Kotlin 泛型
Kotlin 扩展
Kotlin 委托
协程“不为人知”的调试技巧
图解协程:suspend
1.SmartRefreshLayout的使用
2.Android之PullToRefresh控件源码解析
3.Android-PullToRefresh下拉刷新库基本用法
4.LoadSir-高效易用的加载反馈页管理框架
5.Android通用LoadingView加载框架详解
6.MPAndroidChart实现LineChart(折线图)
7.hellocharts-android使用指南
8.SmartTable使用指南
9.开源项目android-uitableview介绍
10.ExcelPanel 使用指南
11.Android开源项目SlidingMenu深切解析
12.MaterialDrawer使用指南
1、NDK 模块开发
2、JNI 模块
3、Native 开发工具
4、Linux 编程
5、底层图片处理
6、音视频开发
7、机器学习
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter开发环境搭建和调试
5、Dart语法篇之基础语法(一)
6、Dart语法篇之集合的使用与源码解析(二)
7、Dart语法篇之集合操作符函数与源码分析(三)
…
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战……
一、面试合集
二、源码解析合集
三、开源框架合集
欢迎大家一键三连支持,若需要文中资料,直接点击文末CSDN官方认证微信卡片免费领取【保证100%免费】↓↓↓
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。