android jetpack

2024/4/11 20:25:25

安卓技术栈归纳

1、开发语言 kotlin java (Harmony os) 2、UI开发 xml jetpackCompose Material Design 3、四大组件 Activity Service Broadcast Receiver Content Provider 4、常用组件库Navigation Hilt ViewModel Android KTX LiveData WorkM…

如何在Jetpack Compose中显示PDF?

当读取和显示 PDF 的组件缺失时该怎么办? 声明式编程可以拯救你. Jetpack Compose已经存在好几年了, 但_在某些方面它的使用仍然面临挑战_. 例如, 缺少用于查看PDF的官方组件, 而为数不多的第三方库通常也是有代价的. 在我们的应用中, 我们会遇到在许多场景中显示 PDF 的需求…

Android Jetpack架构开发,从入门到实战,看这一篇就够了

2018年,Goole在I/O大会上推出了的Android Jetpack,应用开发的规范性与应用质量参差不齐的问题得以解决。 Jetpack并不是一个框架或者组件,它是一套库、工具和指南的集合。Jetpack Compose 则是一个用于构建原生Android UI 的现代化工具包&…

Flutter PK jetpack compose区别和选择

Flutter诞生于Chrome团队,是一帮做Web的开发做的跨平台框架,从最开始的设计初衷,就是指向了跨平台这条路,而Compose,则是诞生于Android团队,是为了解决当前View的架构体系不能再继续适应申明式编程的范式而…

【Rxjava详解】(四)线程切换

lift()变换原理 这些变换虽然功能各有不同&#xff0c;但实质上都是针对事件序列的处理和再发送。而在RxJava的内部&#xff0c;它们是基于同一个基础的变换方法&#xff1a;lift()。 首先看一下lift() 的内部实现&#xff08;仅显示了部分主要逻辑代码): public <R> …

Koin在KMM与Android Jetpack Compose中的应用

Koin在KMM与Android Jetpack Compose中的应用 在koin的快速开始文档模块中&#xff0c;加入了koin应用于kmm与Jetpack compose&#xff0c;方便我们在实际开发中快速接入使用。 快速入门教程列表&#xff0c;可帮助您了解如何针对给定的技术用例启动 Koin。 Android快速入门…

最新Android面试题集—答案+解析,助你直通大厂

前言 接触Android已经3年&#xff0c;在工作中遇到疑难问题总是在网上搜索答案&#xff0c;各位大牛大神总是把自己的经验分享出来&#xff0c;帮助我们这些需要帮助的人&#xff0c;由此表示衷心感谢&#xff01;然而现在自己细想了一下&#xff0c;自己也是时候把遇到的问题…

Android Jetpack系列--1.Lifecycle使用及源码解析

Jetpack简介 定义 Jetpack 是一个由多个库组成的套件&#xff1b;主要包括架构&#xff08;Architecture&#xff09;、基础&#xff08;Foundation&#xff09;、行为&#xff08;Behavior&#xff09; 、界面&#xff08;UI&#xff09;四个方面&#xff1b; 特点 提高开…

2023 Android开发者路线-第一部分

2023 Android开发者路线-第一部分 Android 生态系统处于不断发展的状态&#xff1a;每天都会引入新的库和资料&#xff0c;旨在加快开发速度并让我们作为开发人员的生活更轻松。 在这个由多个部分组成的系列中&#xff0c;您将按照我们的2023 年 Android 开发者路线图了解有关…

Android Jetpack Compose之状态持久化与恢复

目录 1.概述2.实例解析4. Compose提供的MapSaver和ListSaver4.1 mapServer4.2 ListSaver 1.概述 在之前的文章中&#xff0c;我们提到了remember&#xff0c;我们都知道remember可以缓存创建状态&#xff0c;避免因为重组而丢失。使用remember缓存的状态虽然可以跨越重组&…

Jetpack Compose 教程

一、简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 在本教程中&#xff0c;您将使用声明性的函数构建一个简单的界面组件。您无需修改任何 XML 布局&am…

Android--Jetpack--数据库Room详解二

本是青灯不归客&#xff0c;却因浊酒恋红尘 一&#xff0c;基本使用 关于Room数据库的基本使用&#xff0c;请参考文章Android--Jetpack--数据库Room详解一-CSDN博客 二&#xff0c;Room与ViewModle,LiveData的结合使用 LiveData与ViewModle的使用&#xff0c;请参考文章Andr…

Android Jetpack Compose之底部导航栏的实现

目录 1.概述2. 效果展示3. 代码实现3.1 定义底部导航栏的tab项3.2 整体页面架构搭建3.3 底部导航栏的实现3.4 所有代码 4.总结 1.概述 写过一段Android jetpack compose 界面的小伙伴应该都用过Compose的脚手架Scaffold&#xff0c;利用它我们可以很快的实现一个现代APP的主流…

Android笔记(二十一):Room组件实现Android应用的持久化处理

一、Room组件概述 Room是Android JetPack架构组件之一&#xff0c;是一个持久处理的库。Room提供了在SQLite数据库上提供抽象层&#xff0c;使之实现数据访问。 &#xff08;1&#xff09;实体类&#xff08;Entity&#xff09;&#xff1a;映射并封装了数据库对应的数据表中…

Android Jetpack Compose 沉浸式状态栏的实现

目录 概述效果展示代码实现总结 概述 说到沉浸式状态栏&#xff0c;很多小伙伴可能不太熟悉&#xff0c;其实让Android的状态栏的颜色和APP的主题颜色相同&#xff0c;给人感觉状态栏和APP就是一体的。沉浸式的状态栏让页面看起来更舒服&#xff0c;实现沉浸式状态栏也很简单&…

Android--Jetpack--Navigation详解

须知少日拏云志&#xff0c;曾许人间第一流 一&#xff0c;定义 Navigation 翻译成中文就是导航的意思。它是谷歌推出的Jetpack的一员&#xff0c;其目的主要就是来管理页面的切换和导航。 Activity 嵌套多个 Fragment 的 UI 架构模式已经非常普遍&#xff0c;但是对 Fragmen…

Android Kotlin Viewbinding封装

目录 Viewbinding配置 Activity封装 Activity使用 Fragment封装 Fragment使用 Dialog封装 Dialog使用 Viewbinding配置 android { viewBinding { enabled true } } Activity封装 import android.os.Bundle import android.view.LayoutInflater import androidx.ap…

Android Room数据库LiveData与ViewModel结合使用详解

Android Room是Android开发中的一个持久性库处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的使用场景是缓存相关的数据&#xff0c;这样一来&#xff0c;当设备无法访问网络时&#xff0c;用户仍然可以在离线状态下浏览该内容。 Room 持久性库在 SQLite …

从Matrix-ResourceCanary看内存快照生成-ForkAnalyseProcessor(2)

不同于LeakCanary,在Matrix中,主要是通过Resource Canary来监控内存泄漏问题的,且监听的泄漏对象只支持Activity,官方说明如下: 结合分析LeakCanary的经验可知,要实现Activity内存泄漏监听,总体上应该要实现两大功能: Activity生命周期监控查找泄漏对象并得到GC Root P…

Clean 架构下的现代 Android 架构指南

Clean 架构下的现代 Android 架构指南 Clean 架构是 Uncle Bob 提出的一种软件架构&#xff0c;Bob 大叔同时也是 SOLID 原则的命名者。 Clean 架构图如下&#xff1a; 这张图描述的是整个软件系统的架构&#xff0c;而不是单体软件&#xff0c;其中至少包括服务端以及客户端…

【Android Jetpack】Navigation的使用

引入 单个Activity嵌套多个Fragment的UI架构模式&#xff0c;非常非常普遍。但是&#xff0c;对Fragment的管理一直是一件比较麻烦的事情。工程师需要通过FragmentManager和FragmentTransaction来管理Fragment之间的切换。页面的切换通常还包括对应用程序App bar的管理、Fragme…

【AndroidStudio】2022.3Giraffe连接超时,更换下载源,使用本地gradle,版本对应问题

记录了使用AndroidStudio2022.3 Giraffe版本在搭建环境时遇到的问题&#xff0c;包括连接超时&#xff0c;gradle无法读取等。 如果只看如何正确的配置&#xff0c;直接跳转第3节 配置汇总 1 连接超时 项目一开始会自动下载gardle文件来加载项目 1.1 Connect timed out 基…

【Android Jetpack】Lifecycle 感知生命周期

文章目录 背景示例LifeCycle的原理LifecycleOwner自定义LifecycleOwnerLifecycleObserver 示例改进使用LifecycleService解耦Service与组件整个应用进程的生命周期ProcessLifecycleOwner 背景 在Android应用程序开发中&#xff0c;解耦很大程度上表现为系统组件的生命周期与普…

Compose Navigation用于Android多module项目最佳实践

Compose Navigation用于Android多module项目最佳实践 在本文中&#xff0c;我们将采取同一个项目并扩展它以实现最佳实践。该项目具有文章、设置和关于屏幕的抽屉导航。项目的输出如下所示&#xff1a; 当你有一个多屏幕的项目时&#xff0c;每个屏幕至少必须有自己单独的模…

Android Jetpack的组件介绍,常见组件解析

jetpack组件有哪些 Android Jetpack是一个集成Android应用程序组件的一站式解决方案。它使开发人员能够专注于他们的应用程序的真正创新部分&#xff0c;而不会受到Android平台特定的限制。Jetpack组件可分为四个类别&#xff1a; 架构组件&#xff08;Architecture Componen…

Kotlin + 协程 + Room 结合使用

文章目录 前言集成Room结合协程的使用总结 一、前言, 现在kotlin 是趋势&#xff0c;那必然就要用到协程&#xff0c;还有就是随着jetpack 的发力&#xff0c;带来了很多好用的库&#xff0c;比如今天提到Room&#xff0c;是一个类似greenDao的数据库。它不但支持kotlin协程…

Android Jetpack组件架构:ViewModel的原理

Android Jetpack组件架构&#xff1a;ViewModel的原理 导言 本篇文章是关于介绍ViewModel的&#xff0c;由于ViewModel的使用还是挺简单的&#xff0c;这里就不再介绍其的基本应用&#xff0c;我们主要来分析ViewModel的原理。 ViewModel的生命周期 众所周知&#xff0c;一般…

Jetpack Compose —— ProgressBar

Jetpack Compose的ProgressBar是一种用户界面组件&#xff0c;用于向用户展示长时间操作的当前进度。ProgressBar可以有两种形式&#xff1a;线性和环形&#xff0c;这两种形式都可以通过Jetpack Compose轻松实现。 注意&#xff1a;从Jetpack Compose 1.0版本开始&#xff0c…

Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(一)

五一期间,我们来一起学习总结一下Jetpack的ViewModel组件,从使用、源码、经验来总结分析。 Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(一) Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(二) Android Jetpack 从使用到源码深耕【ViewM…

Android笔记(七)Android JetPack Compose组件搭建Scaffold脚手架

在去年2022年曾发布一篇关于脚手架的文章&#xff1a;“Android JetPack Compose组件中Scaffold的应用” 。但是Android的版本从12变更到13及以上版本&#xff0c;导致一些细节的实现存在不同。在本文中&#xff0c;将从头开始介绍整个脚手架的搭建过程。 一、新建项目模块 在…

关于Jetpack DataStore(Proto)的六点疑问

前言 上篇分析了DataStore(Preferences)的使用与原理&#xff0c;本篇接着阐述DataStore的另一种实现形式&#xff1a;DataStore(Proto)。 通过本篇文章&#xff0c;你将了解到&#xff1a; 1. 为什么需要Proto&#xff1f; DataStore(Preferences)对标SharedPreferences&a…

Android Jetpack之用Room+ViewModel+LiveData实现增删改查数据(createFromAsset())

文章目录 一、Room简介二、用RoomViewModelLiveData增删改查数据三、下载源码 一、Room简介 Room是Google推出的数据库框架&#xff0c;是一个 ORM (Object Relational Mapping)对象关系映射数据库、其底层还是对SQLite的封装。 Room包含三个主要组件&#xff1a; 数据库类&…

Android Jetpack 从使用到源码深耕【生命周期感知组件Lifecycle从实践到原理 】(二)

上文,我们首先一个简单的实际代码例子入手,开始说明lifecycle被引入的背景,进而我们使用lifecycle实现了简单的需求,本文,我们一起对Lifecycle的自我实现以及源码进行深入探索。 1.自我实现Lifecycle框架 还是三板斧,知道了怎么去用?那么用我们自己的知识体系,不妨先猜…

【Jetpack Compose】BOM是什么?

前言 本篇旨在帮助小伙伴们了解和使用Compose中BOM相关的知识&#xff0c;在Compose的开发过程中更加便捷、统一的管理相关依赖信息。 BOM基础知识 Compose推出的BOM为物料清单的意思&#xff0c;BOM全称为Bill Of Materials&#xff0c;Compose推出BOM的意义旨在通过指定的…

玩转安卓运行速度优化

原文链接 玩转安卓运行速度优化 早在许多年以前写过一篇安卓性能优化文章&#xff0c;时过境迁&#xff0c;很多事情都有了变化&#xff0c;所以再专门针对程序运行速度和渲染的优化&#xff0c;这两方面非常直接的影响应用程序的操作流畅度&#xff0c;也可以称作流畅度优化方…

Android Jetpack Compose之确定重组范围并优化重组

目录 1.概述2.确定Composable重组的范围3.优化重组的性能3.1 Composable 位置索引3.2 通过Key添加索引信息3.3 使用注解Stable优化重组 1.概述 前面的文章提到Compose的重组是智能的&#xff0c;Composable函数在进行重组时会尽可能的跳过不必要的重组&#xff0c;只对需要变化…

Android Jetpack Compose —— 控件

上一篇文章已经介绍了Android Jetpack Compose&#xff0c;相信都知道了compose是以kotlin为主&#xff0c;在学习前可以先了解一些compose控件。 一、Compose控件分类 二、常用控件说明 一、Compose控件分类&#xff0c;主要分以下几个类 容器控件&#xff1a;如Box、Row、C…

使用 Jetpack Compose 构建 CircularProgressIndicator

欢迎阅读这篇关于如何使用 Jetpack Compose 构建 CircularProgressIndicator&#xff08;圆形进度指示器&#xff09;的博客。Jetpack Compose 是 Google 推出的一款现代化 UI 工具包&#xff0c;用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。 一、什么…

Android Jetpack组件之WorkManager后台任务管理的介绍与使用(一)

一、介绍 Jetpack&#xff1f; 我们经常看到&#xff0c;似乎很高端&#xff0c;其实这个就是一个名词&#xff0c;或者说是一种框架概念。 Jetpack 包含一系列 Android 库&#xff0c;它们都采用最佳做法并在 Android 应用中提供向后兼容性。 Jetpack 应用架构指南概述了构…

Android Compose——ScrollableTabRow和LazyColumn同步滑动

Android Compose——ScrollableTabRow和LazyColumn同步滑动 效果数据实现TabList列表 如何同步实现&#xff1f;监听列表滑动变化计算列表子项索引位置Tab滑动 注 效果 Demo简述&#xff1a;此Demo所实现的效果为当滑动List列表时&#xff0c;所对应的Tab相对应进行滑动切换&a…

Lifecyle的原理

1、Lifecycle是典型的观察者模式&#xff0c;被观察者的继承关系如上图所示。 2、LifeCycleRegistry是Lifecycle的子类。 3、观察者通过LifeCycle对象的addObserver注册监听生命周期的变化&#xff0c;通过removeObserver移除监听生命周期的变化。 4、Activity或Fragment的生命…

Android JetPack学习系列——Navigation

写在前面 Google在2018年就推出了Jetpack组件库&#xff0c;但是直到今天我才给重视起来&#xff0c;这真的不得不说是一件让人遗憾的事。过去几年的空闲时间里&#xff0c;我一直在尝试做一套自己的组件库&#xff0c;帮助自己快速开发&#xff0c;虽然也听说过Jetpack&#…

Jetpack Compose | State状态管理及界面刷新

我们知道Jetpack Compose&#xff08;以下简称Compose&#xff09;中的 UI 可组合项是通过Composable 声明的函数来描述的&#xff0c;如&#xff1a; Composable fun Greeting() {Text(text "init",color Color.Red,modifier Modifier.fillMaxWidth()) }上面的代…

Android Jetpack应用指南--阅读笔记

一、初始Jetpack Jetpack是谷歌官方给出的一个统一的Android架构解决方案&#xff0c;它包含四个部分&#xff0c;分别是架构、UI、基础和行为&#xff0c;每个部分都有各自的一些组件&#xff0c;像架构部分就有LiveData、ViewModel、Room、Navigation、Lifecycle、DataBindi…

Android Jetpack Compose使用及优势

什么是Jetpack Compose&#xff1f; Jetpack Compose是一组集成库&#xff0c;用于开发安卓应用程序的用户界面。它是一个强大的工具&#xff0c;提供了许多新的功能&#xff0c;旨在使应用程序更加美观、稳定和易于使用。它可以与现有的代码集成&#xff0c;并提供一个用于创…

安卓现代化开发系列——从生命周期到Lifecycle

由于安卓已经诞生快二十载&#xff0c;其最初的开发思想与现代的开发思想已经大相径庭&#xff0c;特别是Jetpack库诞生之后&#xff0c;项目中存在着新老思想混杂的情况&#xff0c;让许多的新手老手都措手不及&#xff0c;项目大步向屎山迈进。为了解决这个问题&#xff0c;开…

Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(四)

前面,经过LiveData的使用、自我编程实现LiveData框架、Jetpack LiveData源码探索几节的学习,相信大家都收益匪浅。 Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(一) Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(二) Android Jetpack 从…

Android Jetpack学习 | LiveData 事件传送

ViewModel如何将事件和数据传送到Activity中&#xff1f; 我们可以使用MutableLiveData<T>。 1. 准备数据类型 新建类MutableDemoVM public class MutableDemoVM {public int countPoint 0;public ObservableField<String> title new ObservableField<>…

一个月挺进大厂,这份Android面试真题真的牛逼

前言 年年寒冬&#xff0c;年年也挡不住一个安卓程序员追求大厂的决心。想要进入大厂&#xff0c;我们需要掌握哪些知识点呢&#xff1f; 这里&#xff0c;给大家分享一下《2022中高级 Android 面试必知百题》为即将到来的 2022 年金三银四的面试做好准备。 Activity 1、什…

Android Jetpack Compose的附带效应

Android Jetpack Compose的附带效应 Jetpack Compose 是许多开发人员的首选&#xff0c;因为它具有有趣、简单、有效和直接的特性&#xff0c;并且能够轻松地以声明方式构建自定义组件。但是&#xff0c;要充分利用其功能&#xff0c;重要的是要很好地掌握副作用和效果处理程序…

Android Jetpack组件架构 :LiveData的使用和原理

Android Jetpack组件架构&#xff1a; LiveDate的使用和原理 导言 继Lifecycle组件之后我们接下来要介绍的就是LiveDate组件&#xff0c;所谓LiveDate字面意思上就是有声明的数据&#xff0c;当数据有改动时该组件可以感知到这个操作并将该事件通知到其观察者&#xff0c;这样…

Android Jetpack 全面学习 | LifeCycle 生命周期

使用生命周期感知型组件处理生命周期。 生命周期感知型组件可执行操作来响应另一个组件&#xff08;如 Activity 和 Fragment&#xff09;的生命周期状态的变化。这些组件有助于写出更有条理且往往更精简的代码&#xff0c;这样的代码更易于维护。 一种常见的模式是在 Activi…

Android Jetpack 全面学习 | WorkManager 入门

WorkManager 提供了任务调度功能&#xff0c;我们可以对工作进行标记或命名。 1. 入门示例 gradle 引入依赖 将以下依赖项添加到应用模块的 build.gradle 文件中 dependencies {def work_version "2.5.0"// (Java only)implementation "androidx.work:work…

高级Android插件化强化实战,大厂插件化框架项目解析

一、认识插件化 插件化技术最初源于免安装运行 Apk的想法&#xff0c;这个免安装的 Apk 就可以理解为插件&#xff0c;而支持插件的 app 我们一般叫 宿主。 在 Android 系统中&#xff0c;应用是以 Apk 的形式存在的&#xff0c;应用都需要安装才能使用。但实际上 Android 系…

Jetpack Compose Accompanist最近的更新-2023年8月25日

Jetpack Compose Accompanist最近的更新-2023年8月25日 这篇文章更新了Jetpack Compose Accompanist库的情况&#xff0c;介绍了其目的和最新上传的功能&#xff0c;包括Pager、Flow Layout、Navigation Animation和Insets-UI。同时&#xff0c;提到了对一些库未来发展的讨论。…

常见单例模式详解

单例模式是23种设计模式中应用最广的模式之一&#xff0c;其定义&#xff1a;确保某一个类只有一个实例&#xff0c;而且自行实实例化并向整个系统通过这个实例。其类图如下&#xff1a; 通俗来说&#xff0c;单例模式就是用于创建那些在软件系统中独一无二的对象。在一个软件系…

DataBinding源码浅析---初始化过程

作为Google官方发布的支持库&#xff0c;DataBinding实现了UI组件和数据源的双向绑定&#xff0c;同时在Jetpack组件中&#xff0c;也将DataBinding放在了Architecture类型之中。对于DataBinding的基础使用请先翻阅前两篇文章的详细阐述。本文所用代码也是建立在之前工程基础之…

Android Jetpack Compose之列表的使用

目录 概述实例解析1.实现简单的列表2.实现可滑动的菜单列表3.实现一个可滑动并且能快速滑动到指定位置的列表 总结 概述 在Android的传统View中&#xff0c;当我们需要展示大量的数据时&#xff0c;一般都会使用ListView或者是更高级的RecyclerView。在Compose中我们可以通过C…

Android为现有的应用工程设置 Compose

点击查看&#xff1a;Compose 快速入门 点击查看&#xff1a;Jetpack Compose 与 Kotlin 的兼容性对应关系 要开始使用 Compose&#xff0c;您需要先向项目中添加一些 build 配置。将以下定义添加到应用的 build.gradle 或者build.gradle.kts 文件中&#xff1a; build.gradle…

Android Jetpack Compose中使用字段验证的方法

Android Jetpack Compose中使用字段验证的方法 数据验证是创建健壮且用户友好的Android应用程序的关键部分。随着现代UI工具包Jetpack Compose的引入&#xff0c;处理字段验证变得更加高效和直观。在这篇文章中&#xff0c;我们将探讨如何在Android应用中使用Jetpack Compose进…

androidjetpack应用指南,超通俗解析

前言 每年的3、4月份是各大企业为明年拓展业务大量吸纳人才的关键时期&#xff0c;招聘需求集中、空缺岗位多&#xff0c;用人单位也习惯在初秋进行大规模招聘。 金九银十&#xff0c;招聘旺季&#xff0c;也是一个求职旺季。 不打无准备的仗&#xff0c;在这种关键时期&…

Android Jetpack Compose之UI的重组和自动刷新

文章目录 1.概述2.Compose智能重组3.避免掉入重组的“坑”3.1 Composable函数的执行顺序不固定3.2 Composable 会并发执行3.3 Composable会反复的执行3.4.Composable的执行时“乐观”的 4 总结 1.概述 我们都知道&#xff0c;在传统的View中&#xff0c;若要改变UI&#xff0c…

Jetpack Compose : 一学就会的自定义下拉刷新加载更多

前言 一个成熟Androider的标志是自定义下拉刷新&加载更多&#x1f601; 自定义下拉刷新你会怎么做&#xff1f; 因为我这个人比较懒&#xff08;其实就是菜&#xff09;&#xff0c;所以直接拿Compose自带的下拉刷新来修改。 这里先上效果图&#xff0c;第一张是Compose…

Android Vsync原理简析

屏幕渲染原理"现代计算机之父"冯诺依曼提出了计算机的体系结构: 计算机由运算器&#xff0c;存储器&#xff0c;控制器&#xff0c;输入设备和输出设备构成&#xff0c;每部分各司其职&#xff0c;它们之间通过控制信号进行交互。计算机发展到现在&#xff0c;已经出…

Android Jetpack 从使用到源码深耕【数据库注解Room 从实践到原理 】(三)

前面两篇文章,我们一起学习了,Room引入的背景、Room的使用方式、Room的实现原理猜想验证、Room的源码原理探索总结。 本文,我们将其中牵扯到的课外知识点 or 过程中没有说到的知识点,进行一下单独的总结。 题外话:扩展知识点总结 1. 抽象工厂的设计模式应用 在源码探索…

Android Jetpack 全家桶全面学习 | 使用databinding

使用databinding 通过databinding功能&#xff0c;可以更轻松地编写可与视图交互的代码。在模块中启用 databinding 之后&#xff0c;系统会为该模块中的每个 XML 布局文件生成一个绑定类。绑定类的实例包含对在相应布局中具有 ID 的所有视图的直接引用。 在大多数情况下&…

聊聊 Jetpack Compose 的 “状态订阅自动刷新” -- mutableStateListOf

Jekpack Compose “状态订阅&自动刷新” 系列&#xff1a; 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - MutableState/mutableStateOf 】 【 聊聊 Jetpack Compose 的 “状态订阅&自动刷新” - - remember 和重组作用域 】 【 聊聊 Jetpack Compose 的 …

Jetpack系列之Paging2.0 分页加载

&#xff08;一&#xff09;概述 Paging是Jetpack中的一个数据分页加载组件&#xff0c;核心成员有 DataSource, PagedList, PagedListAdapter。 // 下拉刷新 api com.scwang.smartrefresh:SmartRefreshLayout:1.1.0 api com.scwang.smartrefresh:SmartRefreshHeader:1.1.0 …

LiveData详解(实战+源码+粘性事件解决方案)

1. 简介 LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周…

Android widget基础指南

widget的概念最早是由一名叫Rose的苹果工程师提出&#xff0c;后来经过多方面机缘巧合的发展下&#xff0c;便有了今天Android平台上的小组件widget&#xff0c;一般APP开发可能应用场景较少&#xff0c;最常见的莫过于天气APP的widget。但对于从事IOT或车载方向的同学&#xf…

面试官张口就来compose,现在都这么卷?

前言 在Android中&#xff0c;UI工具包的历史可追溯到至少10年前&#xff0c;自那时以来&#xff0c;情况发生了很大变化&#xff0c;例如我们使用的设备&#xff0c;用户的期望&#xff0c;以及开发人员对他们所使用的开发工具和语言的期望。Google 针对不同的问题做出了很多…

Android Jetpack架构组件库:Hilt

一、开发者官网关于Hilt库使用链接如下 使用 Hilt 实现依赖项注入 Hilt版本说明 二、工程目录图 请点击下面工程名称&#xff0c;跳转到代码的仓库页面&#xff0c;将工程 下载下来 Demo Code 里有详细的注释 代码&#xff1a;LearnJetpack-hilt&#xff1a;hilt版本2.48 代…

使用 Jetpack Compose 构建 Spacer

欢迎阅读本篇关于如何使用 Jetpack Compose 构建 Spacer 的博客。Jetpack Compose 是 Google 的现代 UI 工具包&#xff0c;主要用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。 一、什么是 Spacer&#xff1f; 在 UI 设计中&#xff0c;我们通常需要在不…

Android Jetpack 知识点实战系列(Navigation、Coroutines、 Retrofit、MVVM....),进阶必备

我们安卓开发者&#xff0c;经常会吐槽Android碎片化严重&#xff0c;设备繁多&#xff0c;品牌众多&#xff0c;版本各异&#xff0c;分辨率不统一&#xff0c;项目的库基本都是用什么Square全家桶&#xff0c;Glide, 各种Bus, MVP&#xff0c;MVVM等等&#xff0c;很多时候都…

Android Jetpack组件之Navigation

无论您如何构建应用界面&#xff08;使用 Fragment、Activity 还是其他组件&#xff09;&#xff0c;都要为应用设计屏幕间导航的功能。那么可以试试Naviagtion。 文章目录 基本使用创建项目观察使用代码底部导航控件fragment代码底部navigationView与顶部fragment的联动 Navi…

Compose 如何配置布局?

Compose 是一个界面工具包&#xff0c;可让您轻松实现应用的设计。您只需描述自己想要的界面外观&#xff0c;Compose 会负责在屏幕上进行绘制。 Compose布局的优势 使用Compose布局还有许多其他优势&#xff1a; 灵活性&#xff1a;Compose布局支持组合任何数量的UI元素和自…

利用ViewModel和LiveData进行数据管理

利用ViewModel和LiveData进行数据管理 1. 引言 在当今移动应用开发的世界中&#xff0c;数据管理是一个至关重要的方面。随着应用的复杂性不断增加&#xff0c;需要有效地管理和维护应用中的数据。无论是从服务器获取数据、本地数据库存储还是用户界面的状态&#xff0c;数据…

从0开始搭建一个APP:compose搬砖的一天

无论是从各个大佬的书籍还是blog,大的方向还是翻了一遍&#xff0c;个人感觉&#xff0c;compose 是UI解决方案这种定义和Android离得特别远&#xff0c;像Android 的应用端的大多数工作量还是在UI开发上&#xff0c;flutter 也差不多&#xff0c;结合Kotlin的开发经验&#xf…

继续深挖,Jetpack Compose的State快照系统

Jetpack Compose 有一种特殊的方式来表示状态和传播状态变化&#xff0c;从而驱动最终的响应式体验&#xff1a;状态快照系统&#xff08;State snapshot system&#xff09;。这种响应式模型使我们的代码更加强大和简洁&#xff0c;因为它允许组件根据它们的输入自动重组&…

Android jetpack compose 组件学习

官网地址&#xff1a;https://developer.android.com/jetpack/compose/tutorial?hlzh-cn 一、写一个 hello world 在New Project的时候选择Photo and Tablet里的Empty Compose Activity&#xff0c;如下所示&#xff1a; 打开这个project之后&#xff0c;可以看到MainActivit…

100行 python实现Android与windows局域网文件夹同步

编程解决一切烦恼 Obsidian搭建个人笔记 最近在使用Obsidian搭建个人云笔记 尽管我使用腾讯云COS图床gitee实现了云备份&#xff0c;但是在Android上使的Obsidian备份有点麻烦。还好我主要是在电脑端做笔记&#xff0c;手机只是作为阅读工具。 所以&#xff0c;我写一个局域…

Jetpack Compose干货,如何让Compose Dialog从屏幕任意方向进入

一、前言 来个效果图&#xff0c;基于Compose Dialog&#xff0c;最终要实现的库能力如下&#xff1a; 这里使用的是这个包下面的&#xff1a; androidx.compose.ui.window.Dialog androidx.compose.material3.AlertDialog它内部调用的也是androidx.compose.ui.window.Dialog …

【见微知著】Android Jetpack - Navigation的架构设计

前言&#xff1a;人总是理所当然的忘记&#xff0c;是谁风里雨里&#xff0c;一直默默的守护在原地。 前言 Navigation 作为 Android Jetpack 组件库中的一员&#xff0c;是一个通用的页面导航框架。为单 Activity 架构而生的端内路由导航&#xff0c;用来管理 Fragment 的切换…

总结安卓Preference使用过程中注意的问题

近期在做新项目中接触到了Preference&#xff0c;这是一种用户界面元素&#xff0c;用于存储和展示应用程序的各种设置和用户偏好。该控件几年前google就已经发布了只是一直没机会应用&#xff0c;其实用起来还是挺方便的&#xff0c;使用过程中遇到了几个问题在此记录下。 1、…

Jetpack Compose中适应性布局的新API

Jetpack Compose中适应性布局的新API 针对大屏幕优化的新组合件。 使用新的Material适应性布局&#xff0c;为手机、可折叠设备和平板电脑构建应用程序变得更加简单&#xff01;市场上各种不同尺寸的Android设备的存在挑战了构建应用程序时对屏幕尺寸的通常假设。开发者不应该…

Android jetpack : Navigation 导航 路由 、 单个Activity嵌套多个Fragment的UI架构方式

Android Navigation 如何动态的更换StartDestination &&保存Fragment状态 Navigation(一)基础入门 google 官网 &#xff1a; Navigation 导航 路由 讨论了两年的 Navigation 保存 Fragment 状态问题居然被关闭了 Navigation是一种导航的概念&#xff0c;即把Activ…

【JetPack】Room中的数据迁移(备份、迁移、删除)

Room 数据库的使用 Room 是一个基于 SQLite 数据库构建的数据库持久性库。Room 是在 SQLite 的基础上提供了一个更高层次的抽象&#xff0c;使得我们可以更容易地访问 SQLite 中的数据。它可以提高数据库的访问速度&#xff0c;还可以帮助我们避免 SQL 注入等问题&#xff0c;…

Jetpack Compose系列(1)-初识Jetpck

Jetpack Compose是什么 2019年的I/O大会上&#xff0c;Google宣布Kotlin成为Android开发首选语言&#xff08;这次不是第一次说了&#xff09;&#xff0c;且后续会有新的Jetpack API和功能将在Kotlin中提供&#xff0c;并同时开源Jetpack Compose。 简介 Jetpack是一套库、…

MVVM下的Jetpack核心组件

前言 Jetpack 架构组件及 “标准化开发模式” 确立&#xff0c;意味着Android 开发已步入成熟阶段&#xff0c;只有对 MVVM 确有深入理解&#xff0c;才能自然而然写出标准化、规范化代码。 本次笔者会浅入浅出的介绍以下内容&#xff0c;由于它是一个我的学习总结记录&#…

Jetpack Compose开发一个Android WiFi导航应用

在以前的一篇文章构建一个WIFI室内定位系统_wifi定位系统-CSDN博客中&#xff0c;我介绍了如何用Android来测量WiFi信号&#xff0c;上传到服务器进行分析后&#xff0c;生成室内不同地方的WiFi指纹&#xff0c;从而帮助进行室内导航。当时我是用的HTML5的技术来快速开发一个An…

从LeakCanary看如何判断对象被回收了

前面已经了解了Service&#xff0c;Fragment&#xff0c;ViewModel对象的销毁时机&#xff0c;那么在触发销毁时机后&#xff0c;我们怎么判断这些对象有没有回收呢&#xff1f; 大家都知道在Java中有强引用&#xff0c;弱引用&#xff0c;软引用&#xff0c;虚引用四种引用方…

Android App的几个核心概念

Application启动 点击桌面图标启动App(如下流程图) 针对以上流程图示&#xff1a; ActivityManagerService#startProcessLocked()Process#start()ActivityThread#main()&#xff0c;入口分析的地方ActivityThread#attach()&#xff0c;这个里面的逻辑很核心 ActivityManagerS…

Android Jetpack 从使用到源码深耕【调度任务组件WorkManager 从实践到原理 】(一)

本文,我们对Jetpack的调度任务组件WorkManager ,由使用入手,对其源码进行深入学习、总结一下。 1.问题 研究这个框架之前,我们基于自己已有的知识体系,想一些问题,给自己设定一些目标,带着目标和问题,去阅读这块的源码,相信收获会更多更深一些。 1) WorkManager 是…

使用Android Jetpack Compose构建菜单(Menu)

Android Jetpack Compose是一种现代化的声明式UI工具&#xff0c;它让构建美观且功能强大的界面变得更加简单和直观。在本文中&#xff0c;我们将介绍如何使用Jetpack Compose构建一个简单的下拉菜单。 一、什么是下拉菜单&#xff1f; 下拉菜单是一种用户界面元素&#xff0…

Jetpack Compose 与 Kotlin 的兼容性对应关系

点击查看&#xff1a;Jetpack Compose Kotlin 的兼容性 官网 声明依赖项 如需添加 Compose Compiler 的依赖项&#xff0c;您必须将 Google Maven 代码库添加到项目中。如需了解详情&#xff0c;请参阅 Google 的 Maven 代码库。 在应用或模块的 build.gradle或者build.grad…

android jetpack databinding的基本使用(java)

目录 databing的基本使用二级页面的绑定自定义BindingAdapter自定义BinddingAdapter的可选旧值双向绑定使用ObservableField来进行双向绑定 在recycleview中使用databinding databing的基本使用 开启databing android {........dataBinding{enable true} }修改布局文件 为布…

如何在Jetpack Compose中设置渐变背景

如何在Jetpack Compose中设置渐变背景 只需几步即可通过平滑渐变增强应用程序的用户界面 虽然它经常出现在网络前端的世界中&#xff0c;但渐变背景可以为您的移动应用程序增添专业和美观的触感&#xff0c;使其对您的用户更具吸引力。 第 1 步&#xff1a;创建渐变画笔 为…

Android Jetpack 全面学习 | LiveData 事件传送

ViewModel 如何将事件和数据传送到 Activity 中&#xff1f;我们可以使用 MutableLiveData<T>。 一&#xff0c;准备数据类型 新建类MutableDemoVM。 public class MutableDemoVM {public int countPoint 0;public ObservableField<String> title new Observa…

学不动了吗?Android Jetpack Compose 开发应用指南,从入门到精通,一篇就够了

Jetpack Compose 是 Google 推出的用于构建原生界面的新 Android 工具包&#xff0c;它可简化并加快 Android上的界面开发。Jetpack Compose 是一个声明式的UI框架&#xff0c;随着该框架的推出&#xff0c;标志着Android 开始全面拥抱声明式UI开发。 Jetpack Compose优点&…

对于Android开发,我们为何要学Jetpack Compose?

概述 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它可简化并加快 Android 上的界面开发&#xff0c;使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;快速让应用生动而精彩。Compose 使用全新的组件——可组合项 (Composable) 来布局界面&#xff0c…

Android Jetpack重要吧?需要学习有这么多

Jetpack简单理解 2018年谷歌I/O 发布了一系列辅助Android开发者的实用工具&#xff0c;合称Jetpack&#xff0c;以帮助开发者构建出色的 Android 应用。 官方JetPack介绍 大体上&#xff0c;JetPack是Google推出的一些库的集合。是Android基础支持库SDK以外的部分。包含了组…

如何在Jetpack Compose中将可滚动项捕捉到屏幕中心

如何在Jetpack Compose中将可滚动项捕捉到屏幕中心 从 Snapper 迁移到 SnapFlingBehavior 之前&#xff0c;我们探讨了Android应用程序开发中一个常见的用例&#xff1a;在fling手势后将可滚动项捕捉到屏幕中心。 为了在Jetpack Compose中实现这一目标&#xff0c;我们使用…

Android Jetpack Compose 中的分页与缓存展示

Android Jetpack Compose 中的分页与缓存展示 在几乎任何类型的移动项目中&#xff0c;移动开发人员在某个时候都会处理分页数据。如果数据列表太大&#xff0c;无法一次从服务器检索完毕&#xff0c;这就是必需的。因此&#xff0c;我们的后端同事为我们提供了一个端点&#…

灵魂组件Lifecycle的生命周期机制详解

作者&#xff1a;苏火火 前言 在早期 Andorid 架构中&#xff0c;生命周期的事件监听和状态查询&#xff0c;我们需要自定义一套提供侦测功能的 Activity/Fragment 基类及回调接口&#xff0c;在 Activity/Fragment 的生命周期方法中实现依赖组件的操作&#xff0c;在外部进行…

Android Jetpack:概述、优劣分析及其应用场景探索

一、引言 随着移动应用程序市场的不断发展&#xff0c;开发者面临着日益增长的竞争压力。为了提高开发效率和应用程序质量&#xff0c;谷歌推出了Android Jetpack&#xff0c;一套组件库、工具和指南&#xff0c;旨在帮助开发者更轻松地构建出色的Android应用程序。本文将对And…

Jetpack Compose 中下拉框实现

下拉菜单主要 以下三种实现&#xff1a; ExperimentalMaterialApi Composable fun ExposedDropdownMenuBox(expanded: Boolean,onExpandedChange: (Boolean) -> Unit,modifier: Modifier Modifier,content: Composable ExposedDropdownMenuBoxScope.() -> Unit )实现代…

Android Jetpack Compose中的跑马灯(Marquee)效果实现

Android Jetpack Compose中的跑马灯(Marquee)效果实现 配置 marquee 修饰符可从依赖项1.4.0的版本中获得androidx.compose.foundation:foundation。如果您使用以下任一依赖项 —androidx.compose.material3:material3或androidx.compose.material:material&#xff0c;那么您只…

Jetpack 之Glance+Compose实现一个小组件

Glance&#xff0c;官方对其解释是使用 Jetpack Compose 样式的 API 构建远程 Surface 的布局&#xff0c;通俗的讲就是使用Compose风格的API来搭建小插件布局&#xff0c;其最新版本是2022年2月23日更新的1.0.0-alpha03。众所周知&#xff0c;Compose样式的API与原生差别不小&…

android jetpack Navigation的使用(java)

简介 Navigation通过图形化的方式管理配置页面的切换。 基本使用 添加依赖 implementation androidx.navigation:navigation-fragment:2.5.3implementation androidx.navigation:navigation-ui:2.5.3创建xml文件&#xff08;添加导航图&#xff09;——nav_graph.xml nav_…

Android ViewBinding 使用

Android ViewBinding 使用 一、引言 随着 Android 开发的不断发展&#xff0c;对于视图绑定的需求也日益增长。ViewBinding 是 Android Jetpack 中的一个功能&#xff0c;它可以帮助开发者以更安全、更简洁的方式引用视图。本教程将详细介绍如何在 Android 项目中使用 ViewBi…

Jetpack Compose 中组件使用教程(比较全面)

前言 在本文中&#xff0c;我们将学习 Jetpack Compose&#xff0c;这是一个用于构建原生 UI 的现代工具包。 通过这个完整的教程&#xff0c;我们将学习如何使用 Text、TextField、Preview、Column、Row、Button、Card、AlertDialog、MaterialDesign 元素等。因此&#xff0…

Jetpack Compose 中使用分页 API 调用的无限滚动

Jetpack Compose 中使用分页 API 调用的无限滚动 最近&#xff0c;我在DashCoin 的硬币屏幕上添加了一个带有分页 API 调用的无限滚动。它使浏览硬币列表变得非常困难&#xff0c;并且确实减少了初始加载时间&#xff0c;比以前少了。如果没有正确实施&#xff0c;实施无限滚动…

使用Android Jetpack Compose渲染效果打造酷炫的动画效果

如何在Android Jetpack Compose中使用渲染效果打造令人惊艳的视觉体验 学习示例&#xff1a;如何使用渲染效果来改变UI界面 引言 Jetpack Compose提供了各种工具和组件来构建引人入胜的UI&#xff0c;而在Compose中较为鲜为人知的一个宝藏是RenderEffect。 在这篇博文中&a…

深入理解Android Jetpack Compose的Box

Box是一个提供了一种快速、简便的方式来对其子元素进行层叠布局的布局组件。 一、什么是Box? 二、如何使用Box? 三、Box中的contentAlignment属性 四、使用Modifier在Box内进行更复杂的布局 一、什么是Box? 在Compose中&#xff0c;Box是一个简单的布局组件&#xff0c…

Android Jetpack Compose 用计时器demo理解Compose UI 更新的关键-------状态管理(State)

目录 概述1.什么是状态2.什么是单向数据流3.理解Stateless和Stateful4.使用Compose实现一个计数器4.1 实现计数器4.2 增加组件复用性-----状态上提 总结 概述 我们都知道了Compose使用了声明式的开发范式&#xff0c;在这样的范式中&#xff0c;UI的职责更加的单一&#xff0c…

Android中构建多视图 RecyclerView的正确打开方式

Android中构建多视图 RecyclerView的正确打开方式 简介 漂亮的UI能极大提高用户留存率&#xff0c;相反糟糕的UI将导致App安装率下降。 UI体验对用户留存率有特别大的影响&#xff0c;较差的体验app我可能用不了2s就要卸载掉。 你需要学习内容如下&#xff1a; 使用单个R…

使用Jetpack Compose创建滑动刷新(SwipeRefreshLayout)

Compose并未像View-based系统那样内建SwipeRefreshLayout。但Compose鼓励你自行创建需要的可组合函数&#xff0c;它提供了足够的工具供你完成此任务。 在本篇博客中&#xff0c;我们将展示如何在Jetpack Compose中创建滑动刷新界面的过程。但请注意&#xff0c;以下代码相当简…

Compose 中 TextField 的有效状态管理

Compose 中 TextField 的有效状态管理 为了防止同步问题和意外行为: 避免在输入和更新TextField状态之间出现延迟/异步行为。避免使用响应式流收集StateFlow的数据来保存TextField状态&#xff0c;例如使用默认调度程序。使用Compose API&#xff0c;例如MutableState<Stri…

【Rxjava详解】(二) 操作符的妙用

文章目录 接口变化操作符mapflatmapdebouncethrottleFirst()takeconcat RxJava 是一个基于 观察者模式的异步编程库&#xff0c;它提供了丰富的操作符来处理和转换数据流。 操作符是 RxJava 的核心组成部分&#xff0c;它们提供了一种灵活、可组合的方式来处理数据流&#xf…

一次组件化与Android Jetpack的实践

前言 至今为止从事Android开发两年多了&#xff0c;17年开始实习时&#xff0c;恰逢APP刚刚立项不久&#xff0c;当时新项目沿用了旧项目古老的MVC架构。从那之后一直都是根据飘忽不定的需求&#xff0c;没有规则的垒代码。 直到18年中&#xff0c;其他项目组开发的APP要求集…

Compose基础之State状态

Compose基础之State状态 Stateless和Stateful什么是Stateless&#xff0c;让我看下面代码Stateless它有什么特点呢Stateless它是如何实现避免无效重组的呢什么是Stateful&#xff0c;让我看下面代码 Compose中的State<T>State子类之MutableState 状态的恢复与持久化remem…

【Android Jetpack】Hilt的理解与浅析

文章目录 依赖注入DaggerHiltKoin添加依赖项Hilt常用注解的含义HiltAndroidAppAndroidEntryPointInjectModuleInstallInProvidesEntryPoint Hilt组件生命周期和作用域如何使用 Hilt 进行依赖注入 本文只是进行了简单入门&#xff0c;博客仅当做笔记用。 依赖注入 依赖注入是一…

【Android Jetpack】理解ViewModel

文章目录 ViewModel实现ViewModelViewModel的生命周期在Fragments间分享数据ViewModel和SavedInstanceState对比ViewModel原理ViewModel与AndroidViewModel ViewModel Android系统提供控件&#xff0c;比如Activity和Fragment&#xff0c;这些控件都是具有生命周期方法&#x…

Jetpack Compose中的附带效应及效应处理器

Jetpack Compose中的附带效应及效应处理器 将在任何可组合函数范围之外运行的代码称为附带效应。 为什么要编写在任何可组合函数范围之外的代码&#xff1f; 这是因为可组合项的生命周期和属性&#xff08;例如不可预测的重组&#xff09;会执行可组合项的重组。 让我们通过一…

Jetpack Compose教程-水位控制小部件

Jetpack Compose教程-水位控制小部件 Apple的应用程序和小部件一直是设计的典范&#xff0c;也给我们的"复制系列&#xff1a;活动应用"和"卡片应用"提供了灵感。当他们发布了新款苹果手表Ultra时&#xff0c;它里面深度测量小部件的设计引起了我们的兴趣&…

Android Jetpack Compose 使用 ViewModel

目录 1.ViewModel为啥不可或缺2 在Compose UI中使用ViewModel 1.ViewModel为啥不可或缺 我们已经了解到了rememberSavable可以在屏幕旋转&#xff0c;当前Activity被系统回收时保存状态。ViewModel正好也是干这个活的&#xff0c;那为啥没有使用rememberSavable替换ViewModel呢…

利用Jetpack Compose进行导航(Navigation)

引言 Jetpack Compose是一个现代化的&#xff0c;声明式的UI工具包&#xff0c;它让我们可以更快、更简便地构建Android的界面。今天&#xff0c;我们要讨论如何使用Jetpack Compose和它的导航库&#xff08;Navigation Compose&#xff09;来进行应用导航。 初步了解Navigati…

使用 CameraX 在 Jetpack Compose 中构建相机 Android 应用程序

使用 CameraX 在 Jetpack Compose 中构建相机 Android 应用程序 CameraX 是一个 Jetpack 库&#xff0c;旨在帮助简化相机应用程序的开发。 [camerax官方文档] https://developer.android.com/training/camerax CameraX的几个用例&#xff1a; Image CaptureVideo CapturePrev…

解决在Android Compose中点击空白处收回软键盘

解决在Android Compose中点击空白处收回软键盘 简单粗暴法常规方法 简单粗暴法 通过LocalSoftwareKeyboardController.current获取SoftwareKeyboardController对象&#xff0c;对软键盘进行显示与关闭操作 val keyboardController LocalSoftwareKeyboardController.current在…

Android进阶宝典—在Compose中跳转Fragment

使用场景 我们原有的项目中基本采用的是单Activity架构&#xff0c;页面之间的跳转都是通过Navigation进行的&#xff0c;举个简单的例子。 在这种单Activity架构模式下&#xff0c;有一天我们想把MainActivity或者BFragment使用Compose重构&#xff0c;这个时候我们就需要去…

打造高效Android应用,从Hilt注入框架开始

概述 在 Android 开发中&#xff0c;注入解耦是一种设计模式&#xff0c;用于解决代码耦合的问题。通过使用注入技术&#xff0c;可以将应用程序中的不同部分解耦&#xff0c;从而使得代码更加灵活、易于维护和升级。 在 Android 中&#xff0c;注入解耦通常使用依赖注入&…

Android Jetpack 中Hilt的使用

Hilt 是 Android 的依赖项注入库&#xff0c;可减少在项目中执行手动依赖项注入的样板代码。执行 手动依赖项注入 要求您手动构造每个类及其依赖项&#xff0c;并借助容器重复使用和管理依赖项。 Hilt 通过为项目中的每个 Android 类提供容器并自动管理其生命周期&#xff0c;…

二十一、使用Jetpack Compsoe编写一个写小说的Android应用:【TextField应用】文字滚动与键盘适配

这次的是基础功能实现&#xff0c;所以也算是初版吧&#xff0c;能提供个参考。 这个功能也是在最后才发现的&#xff0c;有如下现象&#xff1a; 1、初始效果 1.1 获取焦点时有问题 1.2 不跟随光标移动 经过百度发现这是TextField的问题&#xff0c;目前好像并没有解决&…

设计图转Compose代码,Relay帮你轻松搞定

作者&#xff1a;黄林晴 前言 相信很多人看到本次分享分题目&#xff0c;第一反应都和我一样&#xff1a;Relay是什么&#xff1f;有什么用&#xff1f;和Compose有什么关系&#xff1f;不要着急&#xff0c;看完这篇文章&#xff0c;这些你都会了解。 Relay是什么 官方一点…

Android URL Scheme数据还原流程与踩坑分享

前言 最近在搞URL Scheme数据还原相关代码的重构工作&#xff0c;借此梳理一下整体的流程。并且在重构过程中呢&#xff0c;还遇到了一个天坑&#xff0c;拿出来与大家分享一下。如果大家有更好的方案&#xff0c;欢迎评论或私信我让我学习一下~ 前置知识点 首先我们对齐一下…

Jetpack Compose 自定义 好看的TabRow Indicator

背景 Jetpack Compose 提供了强大的 Material Design 组件,其中 TabRow 组件可以用于实现 Material Design 规范的选项卡界面。但是默认的 TabRow 样式可能无法满足所有场景,所以我们有时需要自定义 TabRow 的样式。 Jetpack Compose 中使用 TabRow 简单使用 TabRow 一般可以…

【Bug】Android BottomNavigationView 图标黑色色块问题

最近在研究Android Jetpack组件&#xff0c;在使用Navigation配合底部导航栏时&#xff0c;发现一个奇怪的问题&#xff0c;如下&#xff1a; 说明&#xff1a;图标来源于Iconfont开源图标库 我的第三个图标变成了一个黑色色块&#xff0c;这个问题前两天我遇见过&#xff0c…

使用 Jetpack Compose 做一个年度报告页面

刚刚结束的 2022 年&#xff0c;不少应用都给出了自己的 2022 年度报告。趁着这股热潮&#xff0c;我自己维护的应用《译站》 也来凑个热闹&#xff0c;用 Jetpack Compose 写了个报告页面。效果如下&#xff1a; 效果还算不错&#xff1f;如果需要实际体验的&#xff0c;可以前…

UI自动刷新大法:DataBinding数据绑定

之前我们讲了DataBinding在Activity、Fragment、RecyclerView中的基础使用&#xff0c;而那些常规使用方法里&#xff0c;每当绑定的变量发生数据变化时&#xff0c;都需要ViewDataBinding重新设值才会刷新对应UI。而DataBinding通过内部实现的观察者模式来进行自动刷新UI&…

Android开发—Jetpack四件套

2017年&#xff0c;Google发布了Android Architecture Components&#xff0c;包括Room、LiveData、ViewModel和Paging等组件&#xff0c;旨在帮助开发者更轻松地实现MVVM架构。 2018年&#xff0c;Google在I/O大会上推出的一套Android开发组件库&#xff0c;旨在帮助开发者更…

Android Jetpack Compose之TabRow的使用

Android Jetpack Compose是一个现代化的UI工具包&#xff0c;它让开发者可以以声明式的方式来构建出美观且功能强大的Android应用。在本文中&#xff0c;我们将详细介绍其中的一个重要组件——TabRow。 一. TabRow简介 TabRow是Jetpack Compose中的一个组件&#xff0c;主要用…

Android将自己写的maven库上传至jitpack(2024靠谱版)

浏览了一堆陈年旧贴&#xff0c;终于实验成功了 第一步 将自建空项目同步至github并保证能正常运行第二步新增一个library类型的modul第三步 在新建的library里面写一些测试用的代码第四步在library的gradle文件增加插件和发布脚本第五步新建一个配置文件第六步 把所有更改push…

关于LiveData全面详解(附事件总线)

前言&#xff1a;缤纷色彩闪出的美丽 是因它没有 分开每种色彩 前言 MVVM 架构模式中&#xff0c;ViewModel 是不会持有宿主的信息&#xff0c;业务逻辑在 ViewModels 层中完成&#xff0c;而不是在 Activities 或 Fragments 中。LiveData 在里面担任数据驱动的作用&#xff1…

Android Jetpack-Databinding基本使用

文章目录 让你的项目支持Databinding基本使用布局和绑定表达式常用运算符判空null获取对象属性避免空指针异常其他控件引用资源引用 事件处理import,variables,and includesimportVariablesIncludes 数据更新->UI更新监听字段变化更新监听对象变化更新 UI更新->数据更新绑…

【Android Jetpack】DataStore的介绍

DataStore Jetpack DataStore是一种数据存储解决方案&#xff0c;允许您使用协议缓冲区存储键值对或类型化对象。DataStore使用Kotlin协程和Flow以异步、一致的事务方式存储数据。 注意&#xff1a;如果您需要支持大型或复杂数据集、部分更新或参照完整性&#xff0c;请考虑使…

android jetpack LifeCycle的使用(java)

飞呀认识lifecycle使用LifeCycleLifecycleService的使用ProcessLifecycleOwner认识lifecycle 用于系统组件的生命周期与普通组件之间的解耦。 具体表现为自定义组件不依赖页面&#xff08;activity&#xff0c;fragment&#xff09;生命周期的回调方法。 原理&#xff1a;通过…

2023年Android开发者路线-第2部分

2023年Android开发者路线-第1部分 2023年Android开发者路线-第2部分 2023年Android开发者路线-第3部分 2023年Android开发者路线-第4部分 2023Android开发者路线-第2部分 在上一篇文章中&#xff0c;我们讨论了 Android 架构的重要元素&#xff0c;包括主要的 Android 语言…

在 Jetpack Compose 中创建 Drawer

Jetpack Compose 是一个现代的构建 Android UI 的工具集&#xff0c;它使得构建 UI 变得更加简单快速。在本篇博客中&#xff0c;我们将讨论如何在 Jetpack Compose 中创建 Drawer&#xff0c;也就是我们常见的侧边抽屉。 什么是 Drawer&#xff1f; Drawer 是一个提供导航选项…

移动架构47_视图绑定组件ViewBinding

Android移动架构汇总​​​​​​​ 文章目录 一、控件的声明二、ViewBinding的基本使用三、ViewBinding特点四、ViewBinding的封装五、源码 一、控件的声明 在Activity中绑定布局中的控件一般有三种实现方式&#xff1a; 第一种用最原生态的findViewById方法来绑定第二种方…

送你一份 Android Jetpack 架构入门秘籍,从入门到强化实战

Jetpack 是一套库、工具和指南&#xff0c;可帮助开发者更轻松地编写优质应用。这些组件可帮助你遵循最佳做法、让你摆脱编写样板代码的工作并简化复杂任务&#xff0c;以便你将精力集中放在所需的代码上。而Compose则负责其余的工作-当状态发生改变时&#xff0c;你的UI将自动…

Android Jetpack组件架构:Lifecycle的使用 和 原理

Android Jetpack组件架构&#xff1a;Lifecycle的使用和原理 导言 作为Jetpack中关于生命周期管理的核心组件&#xff0c;Lifecycle组件是其他比如LiveDate和ViewModel等组件的基础&#xff0c;本篇文章主要就将介绍关于Lifecycle的使用和它的运作原理。 Lifecycle的使用 我…

谈谈Android Jetpack Compose中的状态提升

谈谈Android Jetpack Compose中的状态提升 在本文中&#xff0c;我们将了解Jetpack Compose中的状态提升&#xff08;State Hoisting&#xff09;。在深入研究这个主题之前&#xff0c;让我们先了解一下Jetpack Compose中的有状态&#xff08;Stateful&#xff09;和无状态&am…

Room封装APP离线缓存框架HiStorage——jetpack技术

在移动应用开发中&#xff0c;离线缓存是提高用户体验和应用性能的关键策略之一。为了简化开发者的工作&#xff0c;Jetpack技术组件提供了一系列强大的工具&#xff0c;其中Room是一个功能强大的数据库持久化库。 HiStorage&#xff0c;它提供了简单易用的接口&#xff0c;帮助…

【Android Jetpack】Room数据库

文章目录 引入EntitiesPrimary Key主键索引和唯一性对象之间的关系外键获取关联的Entity对象嵌套对象Data Access Objects&#xff08;DAOs&#xff09;使用Query注解的方法简单的查询带参数查询返回列的子集可被观察的查询 数据库迁移用法 引入 原始的SQLite有以下两个缺点: …

【Android Jetpack】LiveData-观察数据的容器

文章目录 LiveDataLiveData与ViewModel创建LiveData对象观察LiveData中的数据更新LiveData对象observeForever()源码Room和LiveData配合使用继承LiveData扩展功能转换LiveData合并多个LiveData中的数据 LiveData ViewModel的主要作用是存放页面所需要的各种数据。我们在示例代…

android jetpack room 数据库工具使用

当您开始使用Android Room时&#xff0c;下面是一些使用步骤和示例代码供您参考&#xff1a; 添加依赖项&#xff1a;在您的项目的build.gradle文件中&#xff0c;添加以下依赖项以使用Android Room&#xff1a; // roomdef room_version "2.5.0"api "androi…

Android ViewDataBinding之include与ViewStub的介绍与使用

一、介绍 dataBinding在之前的文章中已介绍了。接下来我将介绍dataBinding在布局中使用include与viewStub的细节。 二、详解 公共layout&#xff1a; <?xml version"1.0" encoding"utf-8"?> <layout xmlns:android"http://schemas.andro…

Jetpack Compose 第 1 课:可组合函数

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Composetutorial 代码 简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 在本教程中&a…

Android Jetpack Compose之生命周期与副作用

文章目录 1.概述2.Composeable生命周期3.Compose副作用及API3.1.Compose副作用API3.1.1 DisposableEffect3.1.2 SideEffect 3.2 Compose异步处理副作用API3.2.1 LaunchedEffect3.2.2 rememberCoroutineScope3.2.3 rememberUpdateState3.2.4 snapshotFlow 3.3 状态创建副作用API…

Android自定义library上传到JitPack

一、背景最近公司不是太忙&#xff0c;闲的无聊&#xff0c;准备整理下属于自己的library库&#xff0c;想把自己平时用到的库保存起来到JitPack上&#xff0c;用的时候直接依赖添加。下面是我们把library发布到JitPack上去的记录过程。二、项目配置1.版本不同配置方法有些不同…

Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期

在使用Kotlin实现Android Jetpack中Lifecycle使用生命周期感知型组件处理生命周期的功能时&#xff0c;你需要以下步骤&#xff1a; 首先&#xff0c;在app的build.gradle文件中添加Lifecycle相关库的依赖项&#xff1a; implementation "androidx.lifecycle:lifecycle-…

【Android 从入门到出门】第二章:使用声明式UI创建屏幕并探索组合原则

&#x1f935;‍♂️ 个人主页&#xff1a;艾迦洼的个人主页 ✍&#x1f3fb;作者简介&#xff1a;后端程序猿 &#x1f604; 希望大家多多支持&#xff0c;如果文章对你有帮助的话&#xff0c;欢迎 &#x1f4ac;&#x1f44d;&#x1f3fb;&#x1f4c2; Android 从入门到出门…

Jetpack Compose UI架构

Jetpack Compose UI架构 引言 Jetpack Compose是我职业生涯中最激动人心的事。它改变了我工作和问题思考的方式&#xff0c;引入了易用且灵活的工具&#xff0c;几乎可轻松实现各种功能。 早期在生产项目中尝试了Jetpack Compose后&#xff0c;我迅速着迷。尽管我已有使用Co…

Android Jetpack解析之——LiveData

LiveData是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如activity、fragment或service&#xff09;的生命周期。这种感知能力可确保LiveData仅更新处于活跃生命周期状态的应用组件…

2023年Android JetpackCompose入门详解【附项目Demo】

前言 Compose是Google I/O 2019 发布的新的声明式的UI框架。其实Google内部自2017年便开始立项&#xff0c;目前已发布beta版&#xff0c;API已稳定&#xff0c;构建&#xff0c;预览等开发体验已经趋于完整。 而且新的设计思想绝对是趋势&#xff0c;已经在react和flutter等…

Jetpack系列-ViewModel的使用及原理浅析

作者&#xff1a;碎星 简介 ViewModel在架构中用于承载业务逻辑和作为容器保存屏幕状态&#xff0c;它可以缓存界面的状态&#xff0c;并且能在配置变更后持久保留相应的界面状态。 在jetpack套件中&#xff0c;ViewModel随lifecycle一起提供。 优势 简介 ViewModel在架构…

深度解析 Compose 的 Modifier 原理 -- ParentDataModifier

" Jetpack Compose - - Modifier 系列文章 " &#x1f4d1; 《 深入解析 Compose 的 Modifier 原理 - - Modifier、CombinedModifier 》 &#x1f4d1; 《 深度解析 Compose 的 Modifier 原理 - - Modifier.composed()、ComposedModifier 》 &#x1f4d1; 《 深入解…

深入浅出 JetPack Compose UI 自动更新原理

作者&#xff1a;HELLO_WARD 为什么需要学习 Compose 的底层原理&#xff1f; 我想学习底层原理的主要原因是我对 Jetpack Compose 是如何运作的非常感兴趣。相对于传统的 View 系统&#xff0c;JetPack Compose 写起来相当神奇。具体来说&#xff0c;Composable 函数不会有返…

Jetpack Compose 中安全地消耗Flow

Jetpack Compose 中安全地消耗Flow 以 Lifecycle 为周期的方式收集流是在 Android 上收集流的推荐方式。如果您正在使用 Jetpack Compose 构建 Android 应用程序&#xff0c;则使用 collectAsStateWithLifecycle API 可以在 Lifecycle 为周期的方式下从您的 UI 中收集流。 co…

Android发布依赖到 Jitpack

前言 我们在日常开发中&#xff0c;经常会用到第三方开源的库文件&#xff0c;有的来自JCenter&#xff0c;Maven Central&#xff0c;google等。但是随着JCenter的弃用&#xff0c;现在用的最多的还是Maven Central&#xff0c;google。今天我们就自己亲自发布一个依赖。 现…

Android正确的保活方案,不要掉进保活需求死循环陷进

在开始前&#xff0c;还是给大家简单介绍一下&#xff0c;以前出现过的一些黑科技&#xff1a; 大概在6年前Github中出现过一个叫MarsDaemon&#xff0c;这个库通过双进程守护的方式实现保活&#xff0c;一时间风头无两。好景不长&#xff0c;进入 Android 8.0时代之后&#x…

Android JetPack组件之Lifecycle

官方文档地址&#xff1a;https://developer.android.google.cn/topic/libraries/architecture/lifecycle 定义 Lifecycle是Jetpack提供的一个组件&#xff0c;可以感知Activity,Fragment的生命周期变化。这些组件可以根据 Activity 或 Fragment 的当前生命周期状态自动调整其…

Jetpack Compose大师乘势而上,创建引人入胜和直观的UI;实用技巧和技术

简述 Jetpack Compose 是 Android 上的一种全新的 UI 工具箱&#xff0c;旨在简化 Android UI 开发流程&#xff0c;提高开发效率和应用性能&#xff0c;并且提供更直观、更灵活、更强大的 UI 定义方式。 Jetpack Compose 提供了一套新的声明式 UI 编程模型&#xff0c;采用 …

深度解耦:使用Jetpack新技术Hilt实现依赖注入

注入解耦是一种软件设计模式&#xff0c;旨在将应用程序的不同组件解耦。通过采用依赖注入、控制反转、面向接口编程等技术&#xff0c;注入解耦模式可以帮助开发人员将应用程序分解为可重用和可扩展的组件。这样做可以减少代码的耦合度&#xff0c;提高模块化和可测试性&#…

Android Jetpack组件之WorkManager高级概念介绍与使用(三)

一、介绍 通过前面两篇&#xff0c;我们基本掌握了组件的workmanager的接入&#xff0c;以及api的使用等。但是一个框架如果运用在复杂的项目中&#xff0c;肯定需要有其他额外的支持&#xff0c;介绍来我们将会介绍高级概念&#xff0c;以及对前面的知识点进行回顾与拓展。 高…

Jetpack Compose实现 验证码输入框

highlight: androidstudio Jetpack Compose 作为 Android 的新一代 UI 开发框架,提供了非常强大的工具来构建用户界面。 今天,我们就利用 Compose 来实现一个炫酷的验证码输入框! 开始的思路是用6个TextField来实现 // 用于存储验证码的长度 val codeLength 6 // 定义一个…

解决LiveData数据倒灌的新思路

数据倒灌现象 对于LiveData“数据倒灌”的问题&#xff0c;我相信很多人已经都了解了&#xff0c;这里提一下。所谓的“数据倒灌”&#xff1a;其实是类似粘性广播那样&#xff0c;当新的观察者开始注册观察时&#xff0c;会把上次发的最后一次的历史数据传递给当前注册的观察…

稳定的 Glance 来了,安卓小部件有救了!

稳定的 Glance 来了&#xff0c;安卓小部件有救了&#xff01; 稳定版本的 Glance 终于发布了&#xff0c;来一起看看吧&#xff0c;看看这一路的旅程&#xff0c;看看好用么&#xff0c;再看看如何使用&#xff01; 前世今生 故事发生在两年的一天吧&#xff0c;其实夸张了…

这一篇LiveData掉不掉价(使用+粘性事件解决)

1. 简介 LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周…

Jetpack Compose 第 2 课:布局

点击查看&#xff1a;Jetpack Compose 教程 点击查看&#xff1a;Composetutorial 代码 简介 Jetpack Compose 是用于构建原生 Android 界面的新工具包。它使用更少的代码、强大的工具和直观的 Kotlin API&#xff0c;可以帮助您简化并加快 Android 界面开发。 在本教程中&a…

LiveData数据倒灌?你真的用对了吗?源码解析

文章目录livedata/lifecycleandroidx-lifecycle基本使用uml-关键角色关系观察者模式关键源码分析livedata基本使用源码分析还是从observe开始livedata变化通知观察者viewmodel源码分析FAQlifecycle用到的设计模式lifecycle是如何监听aty生命周期的一些废弃和原因为什么废弃注解…

Glide适配AndroidX

Glide适配AndroidX后&#xff0c;出现注解报错的问题&#xff0c;修改依赖方式如下&#xff1a; implementation com.github.bumptech.glide:glide:4.9.0annotationProcessor com.github.bumptech.glide:compiler:4.9.0annotationProcessor androidx.annotation:annotation:1.0…

Android Jetpack Compose基础之生命周期-重组

Android Jetpack Compose基础之生命周期-重组 Composable生命周期简介重组Composable如何确定重组的最小范围&#xff1f;示例为什么结果是这样呢&#xff1f;其底层原理&#xff1f;日志顺序分析如果我们将Column替换为非内联函数CardstateChangeComposable内部增加如下代码点…

Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(四)

前面三篇ViewModel文章,我们从使用、源码、原理、Demo实例经验等,多方面进行了具体的源码探索。实践、分析,本文,我们主要对其中的关键知识点进行一下总结输出。 Android Jetpack 从使用到源码深耕【ViewModel从实践到原理 】(一) Android Jetpack 从使用到源码深耕【Vie…

Android Compose——Paging3

Paging3效果视频简述HiltRetrofit访问接口网络实例PagingSourceViewModelView效果视频 简述 本Demo采用HiltRetrofitPaging3完成&#xff0c;主要为了演示paging3分页功能的使用&#xff0c;下列为Demo所需要的相关依赖 //retrofitimplementation com.squareup.retrofit2:retr…

使用 Jetpack Compose Modifier实现个人资料图片重叠效果

使用 Jetpack Compose Modifier实现个人资料图片重叠效果 先来2张想要实现的效果图&#xff1a; 我想以重叠的方式显示个人资料图片。这不是最近的设计趋势&#xff0c;但在 2023 年仍然很优雅。 主要属性&#xff1a; 浅蓝色&#xff0c;带边距的图片尺寸粉色&#xff0c;图…

深入理解与运用Android Jetpack ViewModel

在Android开发中&#xff0c;数据与界面的分离一直是一项重要的挑战。为了解决这个问题&#xff0c;Google推出了Android Jetpack组件之一的ViewModel。ViewModel是一种用于管理UI相关数据的架构组件&#xff0c;它能够帮助开发者实现优雅的数据驱动和生命周期管理。本文将深入…

【用法总结】LiveData组件要点

1、如何实现和生命周期的关联&#xff1f; 调用observe()方法时&#xff0c;第一个参数传入LifecycleOwner对象&#xff0c;而LifecycleOwner能通过getLifecycle()方法获取到lifecycle对象&#xff0c;然后执行lifecycle.addObserver()添加LiveData中数据&#xff08;mData&am…

Jetpack compose中实现流畅的Theme选择器动画

Jetpack compose中实现流畅的Theme Picker动画 Jetpack Compose改变了我们在Android上管理主题的方式。它提供了更大的灵活性&#xff0c;使我们能够以更多的方式定义用户界面&#xff08;UI&#xff09;。此外&#xff0c;Compose中的动画系统使我们能够轻松创建令人印象深刻和…

AndroidStudio无法查看Compose重组次数?

印象中是一开始使用AndroidStudio LayoutInspector想查看Compose重组次数的时候&#xff0c;一开始折腾了下后来忘了这茬事了&#xff0c;最近&#x1fa9c;到期了&#xff0c;家里又换了台新的mac mini又看到这个问题&#x1f60a;&#xff0c;就想着给大家整理了一下解决方法…

Android Jetpack之LiveData源码分析

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的…

如何使用LiveData实现Room数据库的数据变化监听?

Room原理 Room是Android中一种轻量级而强大的持久化库&#xff0c;是SQLite的现代化封装和更高级实现方式。它提供了简单的对象映射技术&#xff0c;可用于管理SQLite数据库&#xff0c;支持SQLite的全部功能并可在编译时发现数据库中的错误&#xff0c;保证了数据的安全和稳定…

Media3:Android下一代媒体框架

无论您是在构建音乐播放器、视频流应用程序还是其他需要播放媒体内容的 Android 应用程序&#xff0c;拥有可靠的媒体播放库都是必不可少的。 这就是 Media3 发挥作用的地方。 什么是 Media3&#xff1f; Media3 是由 Google 作为 AndroidX 的一部分推出的强大媒体播放库。它…

使用 Jetpack Compose 构建 RadioButton

欢迎阅读本篇关于使用 Jetpack Compose 构建 RadioButton&#xff08;单选按钮&#xff09;的博客。Jetpack Compose 是 Google 发布的现代化 UI 工具包&#xff0c;用于构建 Android 界面。它的声明式设计使得 UI 开发更加简洁直观。 一、什么是 RadioButton&#xff1f; Rad…

Android Jetpack组件(三)ViewModel

Android Jetpack组件系列文章&#xff1a; Android Jetpack组件&#xff08;一&#xff09;LifeCycle Android Jetpack组件&#xff08;二&#xff09;Navigation Android Jetpack组件&#xff08;三&#xff09;ViewModel Android Jetpack组件&#xff08;四&#xff09;LiveD…

Android Jetpack组件(二)Navigation

Android Jetpack组件系列文章&#xff1a; Android Jetpack组件&#xff08;一&#xff09;LifeCycle Android Jetpack组件&#xff08;二&#xff09;Navigation Android Jetpack组件&#xff08;三&#xff09;ViewModel Android Jetpack组件&#xff08;四&#xff09;LiveD…

从KOOM看native内存泄漏监控

对于Java而言&#xff0c;语言本身有自动垃圾回收机制&#xff0c;所以导致在内存泄漏检测上需要确定对象应该被回收的特征&#xff0c;以便进行检查&#xff0c;如LeakCanary&#xff0c;Matrix中监听生命周期&#xff0c;KOOM中检查finished或者destroyed的Activity&#xff…

DataBinding原理

1、MainActivity首先使用DataBindingUtil.setContentView设置布局文件activity_main.xml。 2、随后&#xff0c;经过一系列函数调用&#xff0c;ActivityMainBindingImpl对象最终会实例化&#xff0c;并与activity_main.xml进行绑定。 3、实例化后的ActivityMainBindingImpl对象…

在Compose中使用状态提升?我提升个P...Provider

”总所周知“&#xff0c;在 Compose 中有个思想叫做状态提升&#xff0c;在之前的文章Compose学习笔记2 - LaunchedEffect、状态与 状态管理中我们曾提及过。 状态提升的目的是为了让我们的组件尽可能的”无状态“&#xff0c;无状态的优点&#xff1a; 可复用&#xff0c;组…

Android Jetpack组件(四)LiveData

Android Jetpack组件系列文章&#xff1a; Android Jetpack组件&#xff08;一&#xff09;LifeCycle Android Jetpack组件&#xff08;二&#xff09;Navigation Android Jetpack组件&#xff08;三&#xff09;ViewModel Android Jetpack组件&#xff08;四&#xff09;LiveD…

在 Jetpack Compose 中创建 AppBar

Jetpack Compose 是 Android 的现代 UI 工具库&#xff0c;使用声明性编程简化了 UI 的开发过程。在本文中&#xff0c;我们将学习如何使用 Jetpack Compose 创建 AppBar。 什么是 AppBar&#xff1f; AppBar&#xff0c;也就是我们常说的顶部应用栏&#xff0c;是用户界面的一…

从LeakCanary看内存快照生成

前面我们已经完成了生命周期监控并且可以通过ReferenceQueue和WeakHashMap的比较确定哪些对象发生泄漏了&#xff0c;那么接下来需要考虑的就是如何确定这个对象是被谁持有导致泄漏的呢&#xff1f; 从内存泄漏一文中可知&#xff0c;当我们使用Android Studio或MAT分析内存泄…

从LeakCanary看内存快照解析

在从LeakCanary看内存快照生成一节中&#xff0c;我们已经了解了hprof的生成&#xff0c;并且将生成的hprof文件通过Android Studio进行解析&#xff0c;确实发现了内存泄漏对象MainActivity&#xff0c;但是在实际开发中&#xff0c;要求开发者自己去手动pull hprof文件进行解…

Android EditText关于imeOptions的设置和响应

日常开发中&#xff0c;最绕不开的一个控件就是EditText&#xff0c;随之避免不了的则是对其软键盘事件的监听&#xff0c;随着需求的不同对用户输入的软键盘要求也不同&#xff0c;有的场景需要用户输入完毕后&#xff0c;有一个确认按钮&#xff0c;有的场景需要的是回车&…

Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(二)

上文,我们就一个实例需求,引入了LiveData进行了实现,大家通过前后的编码实现方案对比,可以感受到LiveData的好用。不由的为jetpack组件的开发者点赞。 Android Jetpack 从使用到源码深耕【LiveData 从实践到原理 】(一) Android Jetpack 从使用到源码深耕【LiveData 从实…

使用 Jetpack Compose 实现 ViewPager2

在此博客中&#xff0c;我们将介绍如何在Jetpack Compose中实现ViewPager2的功能。我们将使用Accompanist库中的Pager库&#xff0c;这是由Google开发的一个用于Jetpack Compose的库。 首先&#xff0c;需要将Pager库添加到你的项目中&#xff1a; implementation androidx.co…

Android Jetpack组件的全方位分析

Jetpack是一个用于简化Android应用程序开发的工具包&#xff0c;包含了一系列的组件和工具。Jetpack包含了很多组件&#xff0c;如LiveData、ViewModel、Room、Data Binding、Navigation等。 Jetpack组件是一种更高级别的抽象&#xff0c;它们可以提供更简洁、更易于使用的API。…

Jetpack全家桶手册之ViewModel 源码分析

前言&#xff1a;分析源码时我们可以不计较细枝末节&#xff0c;只分析主要的逻辑即可。因此我们来思考几个问题&#xff0c;并从源码中寻找答案如何做到 activity 重建后 ViewModel 仍然存在&#xff1f;如何做到 fragment 重建后 ViewModel 仍然存在&#xff1f;如何控制作用…

这一篇LiveData掉不掉价(使用->原理分析->粘性事件解决)

1. 简介 LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周…