Android-Notes|BottomNavigationView-爱上-Lottie,android高级开发面试题

2023-11-13

}
复制代码

封装个 BasicData,存放 App 内置的一些基本数据,这里主要针对 Lottie 文件:

val mNavigationAnimationList = arrayListOf(
LottieAnimation.HOME,
LottieAnimation.SUBSCRIBE,
LottieAnimation.DISCOVERY,
LottieAnimation.ACCOUNT
)

val mNavigationAnimationNightList = arrayListOf(
LottieAnimation.HOME_NIGHT,
LottieAnimation.SUBSCRIBE_NIGHT,
LottieAnimation.DISCOVERY_NIGHT,
LottieAnimation.ACCOUNT_NIGHT
)
复制代码

Step 3:导入对应依赖,新增 Lottie Utils

api ‘com.google.android.material:material:1.2.0’
api ‘com.airbnb.android:lottie:3.4.1’
复制代码

工具类方法:

/**

  • 获取 Lottie Drawable
    */
    fun getLottieDrawable(
    animation: LottieAnimation,
    bottomNavigationView: BottomNavigationView
    ): LottieDrawable {
    return LottieDrawable().apply {
    val result = LottieCompositionFactory.fromAssetSync(
    bottomNavigationView.context.applicationContext, animation.value
    )
    callback = bottomNavigationView
    composition = result.value
    }
    }

/**

  • 获取不同模式下 Lottie json 文件
    */
    fun getLottieAnimationList(context: Context): ArrayList {
    return if (isDarkTheme(context)) {
    mNavigationAnimationNightList
    } else {
    mNavigationAnimationList
    }
    }
    复制代码

判断是否深色模式我单独提取了一个工具类,Lottie-android 中也有对深色模式的兼容方法:

/**

  • 验证当前是否为深色模式
    */
    fun isDarkTheme(context: Context): Boolean {
    val flag = context.resources.configuration.uiMode and Configuration.UI_MODE_NIGHT_MASK
    return flag == Configuration.UI_MODE_NIGHT_YES
    }
    复制代码

Step 4:设置布局

先添加个 tab 字体选中和非选中的字体颜色 selecor:

<?xml version="1.0" encoding="utf-8"?> 复制代码

整一波布局文件:

<?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”
android:background="@color/colorBackground"
tools:context=".module.home.activity.HomeActivity">

<com.google.android.material.bottomnavigation.BottomNavigationView
android:id="@+id/nav_bottom_bar"
android:layout_width="

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android-Notes|BottomNavigationView-爱上-Lottie,android高级开发面试题 的相关文章

随机推荐

  • 构建跨平台桌面应用程序:入门 Tauri 开发指南

    什么是 Tauri 简介和背景 Tauri 是一个用于构建跨平台桌面应用程序的工具包 它允许开发人员使用 Web 技术 如 HTML CSS 和 JavaScript 来构建原生应用程序 同时提供了访问底层系统 API 和外部命令的能力 T
  • 1032. 挖掘机技术哪家强(20)

    为了用事实说明挖掘机技术到底哪家强 PAT组织了一场挖掘机技能大赛 现请你根据比赛结果统计出技术最强的那个学校 输入格式 输入在第1行给出不超过105的正整数N 即参赛人数 随后N行 每行给出一位参赛者的信息和成绩 包括其所代表的学校的编号
  • android刘海屏之终极适配

    前言 作为安卓开发 也得承认苹果设计一直在引领潮流 所以自从 iPhone X 发布之后 刘海屏 就一直被热议 作为我自己必须先吐槽一下 真没觉得刘海屏好看 但是作为苦逼的开发者 还是要必须去适配刘海屏的 自然而然的在吐槽完毕以后还是有了这
  • Python爬虫技巧:使用代理IP和User-Agent应对反爬虫机制

    在当今的网络环境中 反爬虫机制广泛应用于各个网站 为爬虫程序增加了困难 然而 作为一名Python爬虫开发者 我们可以利用一些技巧应对这些反爬虫措施 本文将分享一个重要的爬虫技巧 使用代理IP和User Agent来应对反爬虫机制 帮助您更
  • JAVA中的异常和错误

    异常 Exception 异常可分为两类 运行期异常 RuntimeException 和受检异常 CheckedException 运行期异常 定义 RuntimeException及其子类都被称为运行时异常 特点 Java编译器不会检查
  • cocos命令编译Android平台,sdk版本错误解决方案

    cocos compile p android运行以后出现the android platform should be equal larger than 10的解决方案 可以使用以下命令 解决此问题 cocos compile p and
  • 【论文翻译】【剪枝】Pruning filters for efficient convnets修剪滤波以实现高效卷积网络

    摘要 神经网络在各种应用中的成功伴随着计算和参数存储成本的显著增加 最近为减少这些开销所做的努力包括在不损害原始精度的情况下修剪和压缩各个层的权重 然而 基于大小的权重修剪减少了来自全连接层的大量参数 并且由于修剪后的网络中的不规则稀疏性
  • 关于vue轮播vue-seamless-scroll自动滚动插件复制出来的数据点击事件无效

    关于vue轮播vue seamless scroll自动滚动插件复制出来的数据点击事件无效 关于vue seamless scroll 我的问题 然后又又又有新的问题了 改变插件 使用 vue j scroll总结 关于vue seamle
  • 100道Python基础入门练习题(附答案)

    我们都知道实践是检验真理的唯一标准 想知道自己学会了多少 不妨来做题检验一下吧 今天给大家分享的100道Python基础练习题 因为篇幅有限 先给大家准备了前10道例题 需要全部习题 这些知识部分习题 篇幅还是比较多的 这份完整版的Pyth
  • Linux下ffmpeg的卸载与安装

    ubuntu下比较容易安装会自动安装依赖 sudo add apt repository ppa kirillshkrogalev ffmpeg next sudo apt get update sudo apt get install f
  • FFmpeg av_interleaved_write_frame错误

    av interleaved write frame 1 av interleaved write frame 崩溃 检查 传入的AVPacket中的pts和dts AVFormatContext中的AVStream中的time base
  • 3分钟学会在C ++中以编程方式合并Excel工作表中的单元格

    合并和取消合并单元格是Microsoft Excel的一项简单且常用功能 合并单元格可能会在某些情况下很有用 例如 当工作表中有多个列共享相同的标题时 可以合并列上方的单元格以使其具有共同的标题 如果不再需要合并的单元格 则可以轻松地取消合
  • (五十一)时间序列分析二:平稳时间序列分析(ARMA)

    平稳时间序列 平稳时间序列分为严平稳时间序列与宽平稳时间序列 如果在一个时间序列中 各期数据的联合概零分布与时间 t 无关 则该序列为严平稳时间序列 实际中讨论的平稳时间序列是宽平稳时间序列 指对任意时间下 序列的均值 方差存在并为常数 且
  • 超声波模块详细介绍(stm32循迹小车中超声波的介绍)

    超声波模块详细介绍 stm32循迹小车中超声波的介绍 超声波模块是非常重要的一个模块 今天给大家全面介绍一下超声波模块的原理以及用法 代码的编写 1 超声波模块的认识 首先 市面上的常见超声波模块主要分为以下几种 HC SR04超音波模块
  • 你一无所有,你拥有一切

    你一无所有 你拥有一切 当看到这一篇文章标题的时候 会引起你怎样的共鸣呢 人总是需要从别处获得力量的 我想与更多的人分享 以此勉励我们自己 一 嘴上说说的人生 那年我在离家的时候一个劲地往自己的硬盘里塞 灌篮高手 我妈一副嗤之以鼻的表情看着
  • VMware16安装步骤与初步使用避免踩坑的安装教程

    VMware16安装步骤与初步使用避免踩坑的安装教程 一 软件介绍 VMware Workstation 中文名 威睿工作站 是一款功能强大的桌面虚拟计算机软件 提供用户可在单一的桌面上同时运行不同的操作系统 和进行开发 测试 部署新的应用
  • Fisco Bcos区块链三(WeBASE中间件平台一键部署)

    文章目录 区块链开荒 技术文档 https webasedoc readthedocs io zh CN latest index html 二 WeBASE一键部署 1 前提条件 1 检查环境 1 平台要求 2 检查Java 3 检查my
  • EfficientNet详解

    EfficientNets EfficientNets NAS neural architecture search Single Scaling Compound Scaling EfficientNet Rethinking Model
  • TheDAO被攻击事件考察报告

    作者 ChinaLedge联盟 段玺 Andy Dan 简介 北京时间2016年6月17日发生了在区块链历史上留下沉重一笔的攻击事件 由于 其编写的智能合约存在着重大缺陷 区块链业界最大的众筹项目TheDAO 被攻击前 拥有1亿美元左右资产
  • Android-Notes|BottomNavigationView-爱上-Lottie,android高级开发面试题

    复制代码 封装个 BasicData 存放 App 内置的一些基本数据 这里主要针对 Lottie 文件 val mNavigationAnimationList arrayListOf LottieAnimation HOME Lotti