全新的Android UI框架Jetpack Compose

news/2025/2/22 5:20:17/

Jetpack Compose

概述

Jetpack Compose 是Android新一代UI框架,采用了 声明式 的开发范式,基于Kotlin DSL打造,并且可以和现有的Android View 体系共存。

Compose_API_5">Compose API设计原则

  1. 一切皆为函数
  • Compose声明式UI的基础是Composable函数。通过Kotlin的尾Lambda语法特性让 Composable 嵌套,形成树形层级。
  • 视图树一旦形成不可随意改变,视图的刷新依靠Composable函数的反复执行来实现(重组),类似 挂起函数 只能在协程中使用一样。
  • 没有继承,所有组件都是 顶层函数
  1. 组合优于继承

这是面向对象设计模式中反复强调的原则,继承方便,但是也会给子类污染,添加很多子类不需要的功能。

  1. 单一数据源

这是所有声明式UI的重要原则,多源情况下状态变化容易混乱,单一数据源决定了Compose数据流的单向流动。

Compose__View__18">Compose 和 View 的关系

Compose和View一样,也是树形结构,不过由LaoutNode组成,由Composition负责管理,通过 Android Studio的Layout Inspector 可以看到借助 ComposeView 可以将 LayoutNode和View链接起来

ComposeView有一个唯一子节点AndroidComposeView,ComposeView负责对Android平台的Activity窗口适配,AndroidComposeView负责链接LayoutNode视图系统和View视图系统。

同时在Compose中,有些需要原生组件的,可以借助Compose组件AndroidView来衔接,可参考 Compose和Android View相互使用

Compose_25">Compose预览

通过对需要预览的Composable函数增加一个@Preview注解即可。点开Preview源码可以看到其有很多参数可配,部分如下

  • widthDp—将在其中渲染带注释的@Composable的最大DP宽度。使用此选项可以限制渲染视口的大小。

  • heightDp-将在其中渲染注释的@Composable的最大高度(以DP为单位)。使用此选项可以限制渲染视口的大小。

  • locale-区域设置的当前用户首选项,对应于区域设置资源限定符。默认情况下,将使用默认文件夹。

  • showSystemUi-如果为true,将显示设备的状态栏和操作栏。@Composable将在完整活动的上下文中呈现。

  • showBackground-如果为true,@Composable将使用默认背景色。

  • backgroundColor-背景的32位ARGB颜色int,如果未设置,则为0

  • uiMode—根据android.content.res.Configuration.uiMode的ui模式位掩码


http://www.ppmy.cn/news/1574066.html

相关文章

Day15-后端Web实战-登录认证——会话技术JWT令牌过滤器拦截器

目录 登录认证1. 登录功能1.1 需求1.2 接口文档1.3 思路分析1.4 功能开发1.5 测试 2. 登录校验2.1 问题分析2.2 会话技术2.2.1 会话技术介绍2.2.2 会话跟踪方案2.2.2.1 方案一 - Cookie2.2.2.2 方案二 - Session2.2.2.3 方案三 - 令牌技术 2.3 JWT令牌2.3.1 介绍2.3.2 生成和校…

若依按照时间段查询

若依按照时间段查询 系统生成的是准确的时间查询&#xff0c;我暂时没找到时间段的查询&#xff01;按照以下方法可完成 版本Vue2 &#xff0c;java8 前端 <el-form-item label"创建时间" prop"createTime"><el-date-picker clearablev-model&q…

FFmpeg 安装详细教程

1. Windows 上安装 FFmpeg 方法 1:使用预编译的二进制文件 下载 FFmpeg: 访问 FFmpeg 官网。在 “Get packages & executable files” 部分,选择 Windows 平台的链接(如 Gyan.dev)。下载最新的 “Full” build 版本(包含所有功能和库)。解压文件: 下载完成后,将压…

【分布式理论13】分布式存储:数据存储难题与解决之道

文章目录 一、数据存储面临的问题二、RAID磁盘阵列的解决方案1. RAID概述2. RAID使用的技术3. RAID的代表性等级 三、分布式存储的新思路1. 分布式存储背景与特点2. 分布式存储的组成要素 一、数据存储面临的问题 在单机系统时代&#xff0c;当数据量不断增加、硬盘空间不够时…

机器视觉检测中,2D面阵相机和线扫相机的区别

2D面阵相机和线扫相机是工业视觉系统中常用的两种相机类型&#xff0c;各有其特点和应用场景。 2D面阵相机 特点&#xff1a; 成像方式&#xff1a;通过二维传感器一次性捕捉整个场景的图像。 分辨率&#xff1a;分辨率由传感器的像素数决定&#xff0c;常见的有百万像素到几千…

Ubuntu22.04 - gflags的安装和使用

目录 gflags 介绍gflags 安装gflags 使用 gflags 介绍 gflags 是Google 开发的一个开源库&#xff0c;用于 C应用程序中命令行参数的声明、定义和解析。gflags 库提供了一种简单的方式来添加、解析和文档化命令行标志(flags),使得程序可以根据不同的运行时配置进行调整。 它具…

简单易懂,解析Go语言中的Channel管道

Channel 管道 1 初始化 可用var声明nil管道&#xff1b;用make初始化管道&#xff1b; len()&#xff1a; 缓冲区中元素个数&#xff0c; cap()&#xff1a; 缓冲区大小 //变量声明 var a chan int //使用make初始化 b : make(chan int) //不带缓冲区 c : make(chan stri…

关于uniApp的面试题及其答案解析

我的血液里流淌着战意&#xff01;力量与智慧指引着我&#xff01; 文章目录 1. 什么是uniApp&#xff1f;2. uniApp与原生小程序开发有什么区别&#xff1f;3. 如何使用uniApp实现条件编译&#xff1f;4. uniApp支持哪些平台&#xff0c;各有什么特点&#xff1f;5. 在uniApp中…