当前位置: 首页 > wzjs >正文

网站代码建设 实例大凤号 网站建设

网站代码建设 实例,大凤号 网站建设,中英语网站制作方法,国外私人网站Compose 定制UI视图 概述MaterialThemeMaterialTheme与CompositionLocalMaterialThemeCompositionLocal 定制主题方案 概述 新建一个新项目时,Compose会在项目中生成 ui/theme 目录,目录中有四个文件,分别如下 Color.kt:颜色配置…

Compose 定制UI视图

  • 概述
  • MaterialTheme
  • MaterialTheme与CompositionLocal
    • MaterialTheme
    • CompositionLocal
  • 定制主题方案

概述

新建一个新项目时,Compose会在项目中生成 ui/theme 目录,目录中有四个文件,分别如下

  1. Color.kt:颜色配置,使用Color(ARGB)
  2. Type.kt:字体配置,使用FontFamily(Font)
  3. Shape.kt:形状配置, 使用xxShape,如 RondedCornerShape
  4. Theme.kt:主题配置,包括全局的 颜色,字体,形状及拓展配置

MaterialTheme

Compose 基于 Material Design 的主题样式模版,通过主题样式模版的配置,整个应用的 Coposable 组件会随主题切换实现相应样式改变。

查看源码,发现默认生成了两种配色的调色板(Light 和Dark),根据传入的 布尔值 选择不同的调色板。

MaterialTheme与CompositionLocal

MaterialTheme

MaterialTheme本身是一个 Coposable 组件,同时还有个 同名的单例对象。,进入MaterialTheme 源码,我们可以看到CompositionLocal 的身影,通过 providers 将 rememberedColors 提供给了 LocalColors。
同时,我们使用的时候,通过 MaterialTheme 单例对象,间接从 LocalColors 中获取到值。

internal val LocalColors = staticCompositionLocalOf { lightColors() }

通过 LocalColors 定义可知是一个CompositionLocal,初始值是lightColor()返回的Colors配置。MaterialTheme方法中通过CompoisitionLocalProvider方法为Composable提供了一些CompositionLocal,这其中就包含了所有的主题配置信息。

CompositionLocal

Compose提供了两种创建CompositionLocal实列的方式,分别是compositionLocalOf与staticCompositionLocalOf.

  • compositionLocalOf:当使用compositionLocalOf来创建CompositionLocal时,如果所提供的值是一个状态,那么当状态发生更新的时候,所有读取这个CompositionLocal内部current数值的Composable都会发生重组。
  • staiticCompositionLocalOf:使用staticCompositionLocalOf创建CompositionLocal实例,那么当状态发生更新时,CompositionLocalProvider的current整体会重组,而不仅仅是在Composable中读取其内部current数值的部分。
  • compositionLocalOf会记录使用其内部current的所有Composable,由于记录Composable是有成本的,所以官方建议如果CompositionLocal提供的值发生变化的可能性很小或者是一个永远不会改变的确定值,那么使用staticCompositionLocalOf可以有效提高性能。

定制主题方案

  1. 配置颜色
    通过 lightColors 和 darkColors 配置两套配色版,在视图需要Color的地方调用相应颜色即可。
  2. 配置字体
    字体通过第二个参数 tpography 进行配置,tpography 的构建需要用到 Type.kt,最终将 tpography 提供给 LocalTpography这个 CompositionLocal,在Text组件配置 style 接可以了
  3. 配置形状
    在 Compose 中可以使用 RoundedCornerShape 来表示圆角信息,如下
val shapes = Shapes(small = RoundedCornerShape(4.dp),medium = RoundedCornerShape(4.dp),large = RoundedCornerShape(0.dp)
)
  1. 配置自定义资源
    有时根据主题不同使用不同的多媒体资源,如 图片,视频,音频等。可以通过 CompositionLocal 扩展。示例如下:
open class WelcomePageAssets(var background:Int,var illos:Int,var logo:Int)//亮色主题资源
object LightWelcomeAssets : WelcomePageAssets(background = R.drawable.ic_light_welcome_bg,illos = R.drawable.ic_light_welcome_illos,logo = R.drawable.ic_light_logo
)// 暗色主提资源
object DarkWelcomeAssets : WelcomePageAssets(background = R.drawable.ic_dark_welcome_bg,illos = R.drawable.ic_dark_welcome_illos,logo = R.drawable.ic_dark_logo
)internal var LocalWelcomeAssets = staticCompositionLocalOf { LightWelcomeAssets as WelcomePageAssets }val welcomeAssets
@Composable
@ReadOnlyComposable
get() = LocalWelcomeAssets.current@Composable
fun GoogleBloomTheme(theme:BloomTheme = BloomTheme.LIGHT,content:@Composable ()->Unit){val welcomeAssets = if(theme == BloomTheme.DARK) DarkWelcomeAssets else LightWelcomeAssetsCompositionLocalProvider(LocalWelcomeAssets provides welcomeAssets) {MaterialTheme(colors = if (theme == BloomTheme.DARK)BloomDarkColorPalette else BloomLightColorPalette,typography = bloomTypoGraphy,shapes = shapes,content = content,)}
}

@ReadOnlyComposable时可选的,我们可以对有返回值的 Composable 使用此注解,
使得 Composable 失去局部重组的能力,
从而达到编译优化的效果。


文章转载自:

http://JbpcQchQ.kLcdt.cn
http://P5Fr7jS0.kLcdt.cn
http://U1ijnpjZ.kLcdt.cn
http://AS0l6Xpj.kLcdt.cn
http://8OeQpcpj.kLcdt.cn
http://B0IKnyE7.kLcdt.cn
http://x7i8a8fi.kLcdt.cn
http://MQ7lPngJ.kLcdt.cn
http://saieNpsD.kLcdt.cn
http://2Fm8lWqJ.kLcdt.cn
http://6bhjumJg.kLcdt.cn
http://jMy5PVLW.kLcdt.cn
http://DvaIQXHP.kLcdt.cn
http://ydTqAlgk.kLcdt.cn
http://tulUtcEM.kLcdt.cn
http://Vw9Weeeb.kLcdt.cn
http://Yq8VashW.kLcdt.cn
http://5IAwVTPP.kLcdt.cn
http://1ZvOe4Rm.kLcdt.cn
http://KEKZu4OF.kLcdt.cn
http://cRlLlbSA.kLcdt.cn
http://SLtfyQj7.kLcdt.cn
http://0g4lbpSt.kLcdt.cn
http://X27c5QlM.kLcdt.cn
http://Y72z7uwn.kLcdt.cn
http://7NX5Ehpj.kLcdt.cn
http://6t7Yn2lm.kLcdt.cn
http://CU8aKQu1.kLcdt.cn
http://4ft7PMCE.kLcdt.cn
http://MavVYoEq.kLcdt.cn
http://www.dtcms.com/wzjs/638930.html

相关文章:

  • 襄樊门户网站建设服装网站建设前期规划方案
  • 中国联通网站备案管理系统如何做网站聚合页
  • 电商网站怎样做优化才最合理百度关键词seo排名
  • 国外网站为啥速度慢wordpress账号破解
  • 茶叶网站建设策划书贵阳设计公司
  • 英语网站 php源码四平网站建设服务
  • 一个专门做破解的网站网站中用特殊字体
  • 承接网站建设 优帮云广州网站开发技术
  • 网站建设推广专家服务google搜索引擎入口
  • 江门市专业做网站公司g宝盆网站建设优惠
  • asp门户网站系统建设银行确认参加面试网站
  • 制作化妆品网站局域网搭建wordpress怎么访问不了
  • UE4做购物网站音箱厂家东莞网站建设
  • 移动端网站提交提交wordpress绑定双域名
  • 广州做网站找酷爱网络wordpress获取主题路径
  • 建设网站需要多少钱淘宝seo是什么意思啊
  • 备案的域名拿来做别的网站建设 银行网网站
  • seo查询整站中国上海官网
  • 站长工具seo综合查询腾讯中国建设银行东营分行网站
  • 彩票网站有人做吗dedecms转换wordpress方法
  • 嘉兴网站制作套餐中国互联网协会是国企吗
  • 易企互联网站建设视频互联网推广选择隐迅推
  • 如何管理网站域名公司网站建设多少钱
  • 公司做网站需要哪些费用微信小程序开发工具手机版
  • ftp如何修改网站备案号2022年深圳在建工程查询
  • ppt模板下载网站有哪些手工制作代加工接单网
  • 展示型网站解决方案自建网站平台要多少钱
  • 美词网站建设品牌建设与营销的关系
  • 免费发群二维码的网站郑州电力高等专科学校电话
  • 网站建设业务员主动话术国外美容网站