HarmonyOS Next 入门实战 - 创建项目、主题适配
开发一个简单的demo,其中涉及一些鸿蒙应用开发的知识点,其中涉及导航框架,常用组件,列表懒加载,动画,深色模式适配,关系型数据库等内容,在实践中学习和熟悉鸿蒙应用开发。

首先下载并安装DevEco Studio开发环境,下载完成后按照提示安装即可,过程不在多说。
DevEco Studio-HarmonyOS Next Beta版-华为开发者联盟
创建ArkTS应用
- 点击 File -> New -> Create Project 会看到如下窗口
- 选择 Empty Ability 模版点击下一步
- 输入项目名称、包名、选择文件位置,其他使用默认即可
- 点击 Finish 按钮完成创建


本文的技术设计和实现都是基于作者工作中的经验总结,如有错误,请留言指正,谢谢。
限于篇幅工程目录介绍不在详述,可查看官方文档:文档中心
主题适配
创建新项目后在entry模块资源文件夹(resources)中,默认已经创建了base文件夹,这是浅色主题下使用的资源文件,如果要适配深色模式需要自行创建dark文件夹,其中的颜色、图片等在深色模式下使用。

为了使用方面以后期维护,我们定义一个Theme管理类,方面管理主题中的颜色和图片文件等。
//管理管理类
class ThemeColor {
public readonly primaryColor = $r('app.color.primaryColor')
public readonly background = $r('app.color.start_window_background')
public readonly textPrimary = $r('app.color.textPrimary')
public readonly textSecondary = $r('app.color.textSecondary')
public readonly textTertiary = $r('app.color.textTertiary')
public readonly dividerLine = $r('app.color.dividerLine')
public readonly inputEditTextBackground = $r('app.color.inputEditTextBackground')
public readonly footerTipTextColor = $r('app.color.footerTipTextColor')
public readonly iconFillColor = $r('app.color.iconFillColor')
public readonly tipShade = $r('app.color.tipShade')
}
export class Theme {
public static readonly Color = new ThemeColor()
//---后续可增加图片资源引入
}
//使用
Text('满江红')
.fontColor(Theme.Color.textPrimary)
项目中我们使用了HMRouter导航框架,其中的标题栏、菜单栏、工具栏的浅色/深色模式切换框架本身实现了,文字颜色不需要做任何处理,菜单栏和工具栏中的图片则需要用到svg格式的图片


END
本文的技术设计和实现都是基于作者工作中的经验总结,如有错误,请留言指正,谢谢。
HarmonyOS Next 入门实战 - 创建项目、主题适配的更多相关文章
- django入门 01 创建项目
安装django库 pip install django 创建--by 终端 django-admin startproject myproject 通过命令创建的django项目,默认不含templ ...
- FaceRank,最有趣的 TensorFlow 入门实战项目
FaceRank,最有趣的 TensorFlow 入门实战项目 TensorFlow 从观望到入门! https://github.com/fendouai/FaceRank 最有趣? 机器学习是不是 ...
- Git入门—创建项目
Git入门—创建项目 注:win10系统下 打开Git Bash,进入存放仓库的目录 创建 初始化git init,该命令执行完后会在当前目录生成一个 .git 目录. 所有 Git 需要的数据和资源 ...
- ASP.NET MVC5入门1之项目创建
本博文参考ASP.NET MVC5入门指南,下载链接: ASP.NET_MVC5_入门指南 1.创建项目 文件 --> 新建 --> 项目 Visual C# --> Web --& ...
- Electron – 基础学习(1): 环境安装、创建项目及入门
这几天到年底了,公司也没啥事,闲着就到处瞅瞅.记得上一家公司的时候用 Electron+ng1 写过项目,只是那个时候项目框架都是别人搭的,自己只负责写功能,对Electron没啥认识. 这几天想着反 ...
- Newbe.Claptrap 框架入门,第二步 —— 创建项目
接上一篇 Newbe.Claptrap 框架入门,第一步 -- 开发环境准备 ,我们继续了解如何创建一个 Newbe.Claptrap 项目. Newbe.Claptrap 是一个用于轻松应对并发问题 ...
- 篇(16)-Asp.Net Core入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二)
入门实战-权限管理之用户创建与关联角色(ViewModel再用与模型验证二) (1).在用户管理着模块中,相比较菜单功能的代码还是比较多的,设计到用户的创建,修改,角色变更和密码重置,同时都集中在列表 ...
- C#程序员的春天之从零开始学习unity3D游戏开发入门教程二(创建项目及基本面板介绍)
一项目创建: 创建项目是开发的第一步. 运行untiy之后如果是第一次运行会弹出 我们这里随便创建一个项目. 二Untiy面板介绍: 三代码编辑器的切换: 这里我安装了vs2012. 到这里开发环境基 ...
- Maven入门学习,安装及创建项目
一.maven介绍: 1.maven是一个基于项目对象模型(POM Project Object Model),通过配置文件管理项目的工具(项目管理工具). 2.maven主要功能:发布项目(从编译到 ...
- node+vue进阶【课程学习系统项目实战详细讲解】打通前后端全栈开发(1):创建项目,完成登录功能
第一章 建议学习时间8小时·分两次学习 总项目预计10章 学习方式:详细阅读,并手动实现相关代码(如果没有node和vue基础,请学习前面的vue和node基础博客[共10章]) 视频教程地 ...
随机推荐
- ASP.NET Core – Try Preview
前言 .NET 7 已经来到 RC 阶段了. 通常 RC 就是我们 (写库的人) 要入场的时候了. 有发现 Bug 要尽可能在这段期间提交. 不然后患无穷. 这篇主要就是来讲讲如果测试 RC 版本的 ...
- Spring —— 注解开发(bean管理)
注解定义bean 纯注解开发(无需配置文件) bean作用范围 bean生命周期
- SQL Server的Descending Indexes降序索引
SQL Server的Descending Indexes降序索引 背景索引是关系型数据库中优化查询性能的重要手段之一.对于需要处理大量数据的场景,合理的索引策略能够显著减少查询时间. 特别是在涉及多 ...
- 深入理解 Nuxt.js 中的 app:data:refresh 钩子
title: 深入理解 Nuxt.js 中的 app:data:refresh 钩子 date: 2024/9/29 updated: 2024/9/29 author: cmdragon excer ...
- template<> 模板特化
template<> 是用于 模板特化(Template Specialization) 的一种语法. 模板特化允许你为某些特定的模板参数提供不同的实现.例如,template<&g ...
- 逆向 Virustotal 搜索接口 X-VT-Anti-Abuse-Header
逆向 Virustotal 搜索接口 X-VT-Anti-Abuse-Header 搜索示例 搜索 123,网页地址为:https://www.virustotal.com/gui/search/12 ...
- Camera 冷启动阶段分解
目录 一.Camx trace 调试开关设置 1.设置 camxoverridesettings trace开关 2. 重启后设置开启camx trace 开关 二.Camera 冷启动阶段分解分析 ...
- MYSQL存储过程-练习3 repeat循环
MYSQL存储过程-练习3 repeat循环 1 DELIMITER $$ 2 3 CREATE PROCEDURE `sp_repeat`() 4 BEGIN 5 DECLARE i INT; 6 ...
- 工作使用:Exchange问题汇总
工作使用:Exchange问题汇总 1:邮件不能发给公司内部的人,但是可以发公司外部人员 解析:GC出问题 2:xchange 2016环境,最近经常发生邮件队列堆积的现象.邮件服务器整体性能看上去没 ...
- DiTAC:不知如何提升性能?试试这款基于微分同胚变换的激活函数 | ECCV'24
非线性激活函数对深度神经网络的成功至关重要,选择合适的激活函数可以显著影响其性能.大多数网络使用固定的激活函数(例如,ReLU.GELU等),这种选择可能限制了它们的表达能力.此外,不同的层可能从不同 ...