JetPack系列:001-JetPack概要介绍

news2025/1/12 12:04:29

文章目录

  • 1. 概念介绍
  • 2. 主要内容
    • 2.1 框架库
    • 2.2 UI界面库
  • 3. 核心思想
  • 4. 内容总结

在这里插入图片描述

本章回是一起Talk AndroidJetpack吧专栏的第一章回,本章回中主要介绍JetPack的基本概念和编程思想,同时也会介绍它的基础知识。闲话休提,请我们一起Talk Android Jetpack吧

1. 概念介绍

Jetpack是Android新推出的库,该库包含框架和UI,目的在于加强框架设计,减去模板代码,提升开发效率。

我们在一起Talk Android专栏中介绍过它里面的内容,比如ViewBinding,LiveData等。本专栏除了介绍这些库外还会介绍它新推出的UI库:Jetpack Compose,以及配合它们使用的Kotlin编程语言。

2. 主要内容

Jetpack是在Android原生内容的基础上提供了高效的库和UI,接下来我们分别介绍这两个方面的知识。

2.1 框架库

它把我们常用的内容封装成了库,比如Activity,Fragment.有了这些库后我们就可以更加方便地使用库中提供的功能,比如在项目中创建Activity时不再向之前一样继承AppCompatActivity,而是继承ComponentActivity,该类就是库中的内容,它包含ViewModel,Lifecycle等内容,有了这些内容可以方便我们管理页面中的数据,更好地管理页面的周期。

Jetpack中其它的库,我们就不一一介绍了,大家可以参考文档。此外,这些库的兼容性非常强,支持Adnroid5以上的版本,可以说兼容了当前市场上99%以上的Android设备。

2.2 UI界面库

Jetpack中的UI界面通过compose库提供,它和以前UI界面中的View完全不同,而是使用可组合函数(Composable注释标记的函数),这些可组合函数可以相互嵌套使用,进而组成一个UI界面。虽然UI界面的载体仍然是Activity,但是界面中的布局和组件已经不再是xml文件以及各种View及其子View.有看官说没有xml文件后如何调整界面?官方提供了preview注解,在可组合函数前使用该注解后就可实时地预览界面中的UI,十分方便。

这种UI界面通过状态来管理,把UI绑定到一个状态上,如果状态有变化了,框架会自动去更新UI。

3. 核心思想

Jetpack的核心思想就是提供统一的数据管理和界面管理方式,这样有助于代码解耦,减少冗余代码,提高程序性能。这种思想也叫声明式框架思想,最早在RN框架中使用,现在几乎所有移动平台都在使用这种声明式框架。下面是使用Jetpack编译的HelloWorld程序,请大家参考:

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContent {
            CookbookTheme {
                // A surface container using the 'background' color from the theme
                Surface(
                    color = MaterialTheme.colorScheme.background
                ) {
                    Text(text = "Hello World")
                }
            }
        }
    }
}

上面的代码中使用Activity当作页面载体,页面中只有一个可组合函数Text,它和TextView组件的功能相同,通过该函数在页面上显示"Hello World".我在这里就不演示程序的运行结果了,建议大家自己动手去实践。

4. 内容总结

最后,我们对本章回的内容做一个归纳性的总结,详细如下:

  • Jetpack是一系列库的集合,这些库包含框架库和UI库;
  • 框架库用来提库数据和界面管理,比如LiveData,Activity;
  • UI库主要使用可组合函数来描述界面,通过状态来更新界面;
  • UI库的核心思想是声明式UI框架的思想;

看官们,关于Jetpack的基本内容就介绍这些,欢迎大家在评论区交流与讨论!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1067651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mysql——创建数据库,对表的创建及字段定义、数据录入、字段增加及删除、重命名表。

一.创建数据库 create database db_classics default charsetutf8mb4;//创建数据库 use db_classics;//使用该数据库二.对表的创建及字段定义 create table if not exists t_hero ( id int primary key auto_increment, Name varchar(100) not null unique, Nickname varchar(1…

TDengine OSS 与 qStudio 实现无缝协同,革新数据分析和管理方式

在数字化转型如火如荼的当下,海量爆发的时序数据处理成为转型成功的关键因素之一。为了帮助社区用户更好地进行数据分析和管理,丰富可视化解决方案的多样性,我们将开源的时序数据库(Time Series Database) TDengine OS…

【Zookeeper专题】Zookeeper经典应用场景实战(一)

目录 前置知识课程内容一、Zookeeper Java客户端实战1.1 Zookeeper 原生Java客户端使用1.2 Curator开源客户端使用快速开始使用示例 二、Zookeeper在分布式命名服务中的实战2.1 分布式API目录2.2 分布式节点的命名2.3 分布式的ID生成器 三、zookeeper实现分布式队列3.1 设计思路…

SpringBoot集成MyBatis-Plus实现增删改查

背景 因为学习工具的时候经常需要用到jar包,需要增删查改接口,所以参考文章实现了基于mybatis-plus的增删查改接口。 参考文章:第二十二节:SpringBoot集成MyBatis-Plus实现增删改查 原文中的git地址不存在,本文内容是原文代码修…

基于Java的源代码共享平台设计与实现(源码+lw+ppt+部署文档+视频讲解等)

文章目录 前言系统功能具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域…

C#学习系列相关之多线程(二)----Thread类介绍

一、线程初始化 1.无参数 static void Main(string[] args) {//第一种写法Thread thread new Thread(test);thread.Start();//第二种写法 delegateThread thread1 new Thread(new ThreadStart(test));thread1.Start();//第三种写法 lambdaThread thread2 new Thread(() >…

R语言提交后台任务Rstudio\nohup

R语言后台任务用法 在进行大规模数据分析时,R语言提供了后台计算的功能,能将计算任务提交到后台执行,不影响当前窗口的活动,而且不会受到网络波动导致任务中断,提交后就不用盯着一直看,后台运行就可以下班。…

3.1.OpenCV技能树--二值图像处理--阈值

文章目录 1.文章内容来源2.阈值分割2.1.简单阈值分割2.1.1.简单阈值分割原理介绍2.1.2.简单阈值分割核心代码2.1.3.简单阈值分割效果展示 2.2.自适应阈值分割2.2.1.自适应阈值分割原理介绍2.2.2.自适应阈值分割核心代码2.2.3.自适应阈值分割效果展示 2.3.Otsu’s二值化/大津阈值…

指针拔尖1——(看完包会,不会来打我)

文章目录 前言:本章节涵盖——一、指针变量基础二、字符指针三、指针数组和数组指针拓展:数组名和&数组名的区别四、 指针传参总结 前言:本章节涵盖—— 1.指针变量基础知识 2.字符指针 3.数组指针 4.指针数组 5.指针传参 一、指针变量基…

I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)

阅读前导: “I/O 多路复用”处于知识树中网络和操作系统的最后,因此本文默认读者有计算机网络和操作系统的基础。 1. 引入:C10K 问题 c10k 问题是指如何让一个服务器同时处理超过 10000 个客户端的连接,这是一个网络编程中的经…

人机环境系统智能需要新的逻辑和数学体系

人机环境系统智能需要一个新的逻辑体系,以应对复杂多变、高度动态和不确定性的实际应用场景。 传统逻辑体系主要基于精确的符号逻辑和精确的数学方法,适用于精确的、确定性的问题。但在人机环境系统智能领域,问题往往是复杂的、动态的&#x…

体验华为云CodeArts Check IDE插件国际化展示效果

作者: yd_257945187 原文链接:体验CodeArts Check IDE插件国际化展示效果-云社区-华为云 开发者自述 俗话说“工欲善其事,必先利其器”,把自己的IDE配置的即逼格又好看,是每个程序员的梦想!IDE插件亦是如…

Leetcode hot 100之二叉树

目录 (反)序列化二叉树&#xff08;str<->tree&#xff09;&#xff1a;前序 前序遍历&#xff08;迭代&#xff09;/路径 stack.length 入栈&#xff1a;中右左 出栈&#xff1a;中左右 中序遍历&#xff08;迭代&#xff09; cur||stack.length 后序遍历&#x…

机器视觉工程师,公司设置奖金,真的为了奖励你吗?其实和你没关系

​据说某家大厂&#xff0c;超额罚款&#xff0c;有奖有罚很正常&#xff0c;但是我觉得你罚款代理商员工就不一样了&#xff0c;把代理商当成你的员工&#xff0c;我就觉得这些大厂的脑回路有问题。 有人从来没听说过项目奖金&#xff0c;更没有奖金。那么为什么设置奖金呢&a…

开源大模型正在“杀死”闭源?

点击关注 文丨郝 鑫&#xff0c;编丨刘雨琦 “OpenAI不足为惧&#xff0c;开源会慢慢赶上来。” 彼时Hugging Face创始人Clem Delangue的一句预言&#xff0c;正在迅速成为现实。 ChatGPT横空出世7个多月后&#xff0c;7月19日&#xff0c;Llama 2宣布开源&#xff0c;并且可…

OpenCV实现求解单目相机位姿

单目相机通过对极约束来求解相机运动的位姿。参考了ORBSLAM中单目实现的代码&#xff0c;这里用opencv来实现最简单的位姿估计. mLeftImg cv::imread(lImg, cv::IMREAD_GRAYSCALE); mRightImg cv::imread(rImg, cv::IMREAD_GRAYSCALE); cv::Ptr<ORB> OrbLeftExtractor …

No169.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

Neo4j深度学习

Neo4j的简介 Neo4j是用Java实现的开源NoSQL图数据库。从2003年开始开发&#xff0c;2007年正式发布第一版&#xff0c;其源码托管于GitHtb。Neo4j作为图数据库中的代表产品&#xff0c;已经在众多的行业项目中进行了应用&#xff0c;如&#xff1a;网络管理、软件分析、组织和…

Android Camera FW 里的requestId和frameId

安卓相机frameworks里面经常出现requestId和frameId&#xff0c;最近简单看了一下代码&#xff0c;发现相关流程还是很复杂的&#xff0c;总结来看requestId 就是上层&#xff08;java&#xff09;发送的repeating(capture)请求的id&#xff0c;是从0开始递增的。 这是CameraD…

Linux基本指令(下)——“Linux”

各位CSDN的uu们好呀&#xff0c;今天&#xff0c;小雅兰的内容仍然是Linux中的基本指令啦&#xff0c;下面&#xff0c;让我们进入Linux的世界吧&#xff01;&#xff01;&#xff01; Cal指令 find指令&#xff1a;&#xff08;灰常重要&#xff09; -name grep指令 zip/un…