2024年安卓最全Android 中的 Lottie 动画入门_android lottie动画(1),面试阿里 职级会变吗

最后

答应大伙的备战金三银四,大厂面试真题来啦!

这份资料我从春招开始,就会将各博客、论坛。网站上等优质的Android开发中高级面试题收集起来,然后全网寻找最优的解答方案。每一道面试题都是百分百的大厂面经真题+最优解答。包知识脉络 + 诸多细节。
节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。

《960全网最全Android开发笔记》

《379页Android开发面试宝典》

包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

腾讯、字节跳动、阿里、百度等BAT大厂 2020-2021面试真题解析

资料收集不易,如果大家喜欢这篇文章,或者对你有帮助不妨多多点赞转发关注哦。文章会持续更新的。绝对干货!!!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

        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,其中包含


* 作为标题的文本视图
* 通过动画描述文本视图内容的 LottieAnimationView
* 用于导航的左右按钮。


我们可以从 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
    }

}

}


### 理解示例中的逻辑


* 此示例显示了在 Covid-19 隔离期间需要遵循的基本步骤。
* 默认情况下(在初始启动时),左箭头视图可见性设置为 GONE,因为用户尚未开始导航
* 我们在 MainActivity.kt 文件中维护一个名为“count”的变量,初始化为零。
* 我们正在通过处理左右箭头的点击来更新 count 的值、左右按钮的可见性、文本视图和 LottieAnimation 视图的内容更改



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)
}


* 使用更新的计数参数调用showStep方法。此方法在内部调用 setStepContent 和 setFooter 方法来更新 UI



private fun showStep(count: Int)


* setStepContent方法有助于设置标题(文本视图)的值并更新 Lottie 动画视图



private fun setStepContent(header: String, lottieAnimationFile:String)


* setFooter方法有助于处理左右箭头



private fun setFooter(isLeftVisible: Boolean,isRightVisible:Boolean)


我们现在都准备好了代码。让我们在任何设备上运行这个应用程序,看看 Lottie Animation 是如何工作的!


### LottieAnimationViews 属性


LottieAnimation 视图有很多属性,我们可以通过这些属性控制视图的动画。项目中使用的一些是


* “lottie\_autoPlay” 布尔值,用于控制自动播放功能



app:lottie_autoPlay=“true”


* “lottie\_loop” 布尔值,用于控制动画的循环



app:lottie_loop=“false”


* “lottie\_speed” 浮动控制动画的速度



app:lottie_speed=“1”


### 接下来是什么?


您可以克隆此项目并尝试以下操作:


* 涉及到一些业务逻辑。所以你可以为这个项目定义一个架构
* 您可以在 Covid-19 隔离期间添加更多要遵循的步骤
* 您可以即兴创作 UI
* 您可以探索 LottieAnimationViews 的不同属性并学习以编程方式设置它们,以保持应用程序动态
* 还有很多…


### 最后


如果想要成为架构师或想突破20~30K薪资范畴,那就不要局限在编码,业务,要会选型、扩展,提升编程思维。此外,良好的职业规划也很重要,学习的习惯很重要,但是最重要的还是要能持之以恒,任何不能坚持落实的计划都是空谈。


如果你没有方向,这里给大家分享一套由阿里高级架构师编写的《Android八大模块进阶笔记》,帮大家将杂乱、零散、碎片化的知识进行体系化的整理,让大家系统而高效地掌握Android开发的各个知识点。  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/06e41b3932164f0db07014d54e6e5626.png)  
 相对于我们平时看的碎片化内容,这份笔记的知识点更系统化,更容易理解和记忆,是严格按照知识体系编排的。


#### 一、架构师筑基必备技能


1、深入理解Java泛型  
 2、注解深入浅出  
 3、并发编程  
 4、数据传输与序列化  
 5、Java虚拟机原理  
 6、高效IO  
 ……


![在这里插入图片描述](https://img-blog.csdnimg.cn/079bc2315e7e4f73b8fe703c3c51ae8d.png)


#### 二、Android百大框架源码解析


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 源码分析——图片加载流程


![在这里插入图片描述](https://img-blog.csdnimg.cn/2206daa6ec0b4bdfb0ea7a908d1249e4.png)


#### 三、Android性能优化实战解析


* 腾讯Bugly:对字符串匹配算法的一点理解
* 爱奇艺:安卓APP崩溃捕获方案——xCrash
* 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
* 百度APP技术:Android H5首屏优化实践
* 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
* 携程:从智行 Android 项目看组件化架构实践
* 网易新闻构建优化:如何让你的构建速度“势如闪电”?
* …


![在这里插入图片描述](https://img-blog.csdnimg.cn/2139f00c8fc74031b9fd38257c96c22e.png)


#### 四、高级kotlin强化实战


1、Kotlin入门教程  
 2、Kotlin 实战避坑指南  


## **最后**

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

下面分享的腾讯、头条、阿里、美团、字节跳动等公司2019-2021年的高频面试题全套解析,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,下面只是以图片的形式给大家展示一部分。

![image](https://img-blog.csdnimg.cn/img_convert/85b0881c7abf3e701a0a86d1d6f2b0e6.webp?x-oss-process=image/format,png)

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

![image](https://img-blog.csdnimg.cn/img_convert/171886d2f3fa6d3db191dd439b0b9636.webp?x-oss-process=image/format,png)



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**



[外链图片转存中...(img-RKfdQLXk-1714990988389)]

知识不体系?这里还有整理出来的Android进阶学习的思维脑图,给大家参考一个方向。

[外链图片转存中...(img-ZY17Uus4-1714990988389)]



**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android,可以使用Lottie库来加载和播放Lottie动画。以下是一些常见的控制Lottie动画的方法: 1. 播放和停止动画 可以使用`playAnimation()`方法来播放动画,使用`cancelAnimation()`方法来停止动画。 ```java LottieAnimationView animationView = findViewById(R.id.animation_view); animationView.playAnimation(); // 播放动画 animationView.cancelAnimation(); // 停止动画 ``` 2. 循环播放动画 可以使用`setRepeatCount()`方法来设置动画的循环次数,使用`setRepeatMode()`方法来设置动画的循环模式。 ```java LottieAnimationView animationView = findViewById(R.id.animation_view); animationView.setRepeatCount(LottieDrawable.INFINITE); // 设置无限循环 animationView.setRepeatMode(LottieDrawable.RESTART); // 设置循环模式为重新开始 ``` 3. 动态改变动画速度 可以使用`setSpeed()`方法来设置动画的速度。默认速度为1.0,可以设置为小于1.0的值来减慢速度,或者大于1.0的值来加快速度。 ```java LottieAnimationView animationView = findViewById(R.id.animation_view); animationView.setSpeed(0.5f); // 设置动画速度为原速度的一半 ``` 4. 动画监听器 可以使用`addAnimatorListener()`方法来添加动画监听器,监听动画的各种事件,例如动画开始、结束、重复等。 ```java LottieAnimationView animationView = findViewById(R.id.animation_view); animationView.addAnimatorListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { // 动画开始时执行的操作 } @Override public void onAnimationEnd(Animator animation) { // 动画结束时执行的操作 } @Override public void onAnimationCancel(Animator animation) { // 动画被取消时执行的操作 } @Override public void onAnimationRepeat(Animator animation) { // 动画重复时执行的操作 } }); ``` 这些方法可以帮助你在Android控制Lottie动画,让你的应用更加生动有趣。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值