網站首頁 編程語言 正文
一、閑扯淡
因為目前華為推出的HarmonyOS比較火,很多人都說HarmonyOS是套了Android的殼,沒啥技術含量。我不同意這種說法,HarmonyOS 提出了很多的創新點是Android所沒有的,分布式軟總線、設備遷移、原子服務等都是很具創新性的思想。我相信未來的Harmony一定會與Android和IOS會三分天下的。廢話就不說了,本系列的博客主要目標是學習HarmonyOS的ArkUI 開發,我自己買了一門ArkUI的課,所以我在學習的過程中呢也分享我的課上所學(因為上班沒時間專門去研究官網,其實就是懶),代碼我會提交到gitee,只需要下載一次,后面博客更新時,直接通過git pull下就可以了。
二、效果展示
由于是模擬器,所以會比較卡,還有就是開發的時候盡量用最新的IDE,否則可能會出現一些小BUG,如圖,只是先做了隱私相關和服務條款
,登錄界面也只做了一部分,因為太多的話寫的博客太長,所以先做這么多其他的下一個博客加上。
三、實現思路及代碼說明
本博客就是講社區類app開發相關的頁面開發知識,再多一句嘴,為啥要學ArkUI,因為華為已經不維護Java UI框架了,因為Java UI框架太重,做設備間遷移時不太方便,若是用js,一切都會變得簡單。
首先,環境安裝和hello world 新建項目就不啰嗦了,官網和其他博客多的是,咱們就直接開始。
上圖是目錄結構,咱們可以看下界面是咋寫的。上圖是導航欄組件,是不是很眼熟,和開發Html5是不是一樣的操作,等你上手時會發現,簡直一摸一樣。圖中的img文件夾用于存放圖片,導航欄的"<"按鈕就是一張圖片,.hml文件是寫界面的,.css文件是給界面添加樣式的,讓界面更美觀。.js文件是給界面提供數據和交互的,比如增加個點擊事件啥的。
(1)導航組件
導航組件是一個通用的組件,可以在各個頁面使用。所以需要定制一下標題。
import router from '@system.router';/*頁面跳轉*/
export default {
data: {
title: ''//給界面導航標題傳值的
},
props:['title'],
back(){ /*點擊back按鈕返回上一個界面*/
router.back()
},
}
以上代碼是nav.js中的代碼,定義了導航的標題,這里是默認為空是因為咱們到了其他頁面就可以傳標題進來,從而顯示指定頁面的標題,比如隱私界面復用了導航,就會給導航傳一個隱私界面的標題
(2)組件復用
privacy.hml
<element src="../nav/nav.hml">element>
<div class="container">
<nav title="{{title}}">nav>
privacy.js
export default {
data: {
title: '隱私'
}
}
比如隱私界面復用導航,就可以利用element標簽,通過相對路徑的辦法引入導航組件,然后在自己的js(privacy.js)文件中傳標題的值,在自己的hml(privacy.hml)文件中義“title="{{title}}”方式引入,同理服務條款也是一樣的操作。
(3)隱私界面
<element src="../nav/nav.hml">element>
<div class="container">
<nav title="{{title}}">nav>
<list-item>
<textarea extend="true" disabled="true" style="background-color: transparent;">
textarea>
list-item>
div>
隱私條款需要用textarea來放,記得要設置extend=“true”,這樣文字才會展開顯示,不然只會顯示部分,還有disabled="true"這個屬性要設置為true,因為textarea是一個可以和用戶交戶的控件,不禁用的話用戶會修改隱私條款。list-item控件的存在是為了讓隱私條款滾動更絲滑,讓其有回彈效果,服務條款頁面和這個一樣
(4)頁面跳轉
login.hml
<div class="container">
<text style="color: #c2c2c2;">
我同意
text>
<text onclick="navToAgreement" >
《App服務條款》
text>
<text style="color: #c2c2c2;">
和
text>
<text onclick="navToPrivacy">
《App隱私協議》
text>
div>
login.js
import router from '@system.router';
export default {
data: {
title: 'World'
},
navToPrivacy(){
router.push({
uri: "pages/privacy/privacy"/*跳轉到隱私頁面*/
})
},
navToAgreement(){
router.push({
uri: "pages/agreement/agreement"/*跳轉到服務條款頁面*/
})
}
}
定義兩個函數,當點擊“服務條款”或者“隱私條款”,通過onClick調用跳轉函數,再通過router的push()方法去跳轉,uri后的內容可以去config.json中找。
config.json
"js": [
{
"pages": [
"pages/login/login",
"pages/privacy/privacy",
"pages/index/index",
"pages/nav/nav",
"pages/agreement/agreement"
],
"name": "default",
"window": {
"designWidth": 720,
"autoDesignWidth": true
}
}
]
config.json中配置著頁面的信息,和android的Androidmainfest.xml文件差不多,需要注意的是pages[]數組中哪個頁面配置在最前面,進入app時就顯示哪個頁面。具體的可以參考源碼,歡迎一起交流~~~,如果覺得文章有幫助可以下載源碼時給個star
四、源碼地址
源碼放到了gitee,歡迎star,建議大家拿到源碼后自己手動寫一遍,這樣印象會更深,學習嘛,不寒磣,多動手。
源碼地址
原文鏈接:https://blog.csdn.net/zxj2589/article/details/123012898
相關推薦
- 2022-08-11 C++簡明講解缺省參數與函數重載的用法_C 語言
- 2022-06-30 python實現水印圖片功能_python
- 2022-10-18 Python?numpy下幾種fft函數的使用方式_python
- 2022-01-27 laravel的服務注入新增service層,多方式
- 2022-12-04 Flutter之可滾動組件實例詳解_IOS
- 2022-05-25 使用Python繪制三種概率曲線詳解_python
- 2022-03-21 C語言中關于scanf函數的一些問題詳解_C 語言
- 2022-10-10 C++?STL標準庫std::vector擴容時進行深復制原因詳解_C 語言
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支