安卓開發者自學鴻蒙開發1基礎入門

1.基礎

聲明式UI:??
??核心:?? 你??聲明??你想要UI是什么樣子(在build()方法里描述),而不是一步步命令式地創建和操作View對象(findViewById, setText, setOnClickListener)。
模塊化:?? 雖然一個頁面通常在一個文件,但復雜的UI可以通過??自定義組件??(也是struct)拆分成多個可復用的部分,這些組件可以放在不同的文件中。

裝飾器(@xxx):??

??關鍵特性:?? ArkTS大量使用裝飾器來增強類、結構體、屬性、方法的行為。
??常見裝飾器:??
@Entry: 標記入口組件。
@State: 標記組件內部的狀態變量,變化時驅動UI更新。
@Prop: 用于父子組件間單向數據傳遞(父->子)。
@Link: 用于父子組件間雙向數據綁定。
@Observed& @ObjectLink: 用于觀察復雜對象(類)內部屬性的變化。
@Builder: 定義可復用的UI片段(Builder方法)。
??注意:?? 理解不同裝飾器的用途和作用域是掌握ArkTS狀態管理和組件通信的關鍵。

??組合優于繼承:?? 通過嵌套組件來構建復雜UI,而不是繼承復雜的基類。
??鏈式調用:?? 組件的屬性設置和事件綁定通常采用鏈式調用語法(如Button(“Click”).onClick(…).width(100)),使代碼更簡潔。

反正一句話,很像vue.js,但更好用

// 安卓:XML布局 + ViewModel  
// 鴻蒙:ArkTS聲明式UI  
@Entry  
struct HelloPage {  @State message: string = "Hello Harmony"  build() {  Column() {  Text(this.message)  // 類似Jetpack Compose  Button("Click").onClick(() => this.message = "Clicked!")  }  }  
}

這就是紅碼里面完整的一個頁面所有的東西。需要一個文件就可以了。在安卓里面它其實是需要一個布局文件,還需要一個邏輯控制文件。

??@Entry

它標記這個結構體(struct)是應用的??入口頁面??。相當于Android中的MainActivity或在AndroidManifest.xml中標記為LAUNCHER的Activity。
作用:?? 告訴鴻蒙系統,當用戶啟動應用時,應該首先加載并顯示這個頁面。
??注意:?? 一個應用可以有多個@Entry裝飾的頁面,但通常有一個主入口,鴻蒙應用可以有多個入口,只要加上這個就是一個入口,想到于安卓的暴露的頁面,別人也能通過這個頁面拉起你的app(需要再module.json5里面配置才可)

struct HelloPage

這就是一個結構體,這個結構體就代表了一個頁面

@State message: string = “Hello Harmony”

一個私有的狀態變量,Text(this.message) 這里面通過這樣的方式綁定到了text的組件上,可以通過改變變量的值來刷新ui,類似vue.js

??build() { … }

用來定義布局結構,有且只有一個

UI描述 (Column() { … })

Button(“Click”):?? 這是一個??按鈕組件??。顯示文本“Click”。
??.onClick(() => this.message = “Clicked!”):?? 這是給Button組件添加的??事件處理函數??(使用??鏈式調用??語法)這里面this.message = "Clicked!"改變了變量的值,會導致界面同時刷新成改變后的值

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/93092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/93092.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/93092.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

彈性擴展新范式:分布式LLM計算的FastMCP解決方案

本文較長,建議點贊收藏,以免遺失。更多AI大模型應用開發學習視頻及資料,盡在聚客AI學院。如果你想系統學習AI大模型應用開發,挑戰AI高薪崗位,可在文章底部聯系。在現代大語言模型(LLM)應用架構中…

springboot項目不同平臺項目通過http接口AES加密傳輸

前言: 在公司協作開發的過程中,自己的項目是公共調用平臺,也可以說是中轉平臺,供公司其他團隊的項目進行接口調用。因為是不同團隊項目之間的相互調用,所以不能通過openFeign遠程調用。只能通過http遠程調用&#xff…

推薦5個網頁模板資源網

1. 企業模板官方網站: http://www.qimoban.com介紹:企業模板(qimoban.com )是一個專注于提供豐富多樣的企業模板的優質平臺,致力于為企業和個人打造高效、專業、個性化的模板獲取渠道。該平臺提供海量的企業模板資源,涵蓋企業官網…

Redis持久化機制(RDB AOF)

1. RDB RDB 持久化是把當前進程數據生成快照保存到硬盤的過程,觸發 RDB 持久化過程分為手動觸發和 自動觸發,存儲的是二進制數據。 1.1 手動觸發 使用 save 和 bgsave 命令觸發: save:Redis服務主進程阻塞式執行持久化操作&…

【css】讓瀏覽器支持小于12px的文字

【css】讓瀏覽器支持小于12px的文字.demo {display: inline-block;/** 使用Webkit引擎的變換屬性(主要針對舊版Safari/Chrome) **/-webkit-transform: scale(0.8); }注意:display: inline-block; 一定要加上!1.transform: scale(…

機器學習-基礎入門:從概念到核心方法論

在人工智能飛速發展的今天,機器學習作為其核心技術,正深刻改變著我們的生活與工作。從 AlphaGo 戰勝圍棋世界冠軍,到日常的智能推薦、人臉識別,機器學習的應用無處不在。本文將從基礎概念出發,帶你系統了解機器學習的核…

《Leetcode》-面試題-hot100-動態規劃

題目列表 70. 爬樓梯 簡單難度 leetcode鏈接 118. 楊輝三角 簡單難度 leetcode鏈接 198. 打家劫舍 中等難度 leetcode鏈接 279.完全平方數 中等難度 leetcode鏈接 322.零錢兌換 中等難度 leetcode鏈接 139.單詞拆分 中等難度 leetcode鏈接 300.最長遞增子序列 中等難度 l…

數巔中標中建科技AI知識庫項目,開啟建筑業數智化新篇章

AI正以前所未有的迅猛態勢滲透進建筑業的每一處脈絡。在這場數智化轉型浪潮中,AI技術如何與建筑業基因深度融合?如何充分釋放數據價值?近日,數巔成功中標中建科技集團有限公司“企業AI知識庫研發”項目,這一“大語言模…

想要PDF翻譯保留格式?用對工具是關鍵

嘿,朋友!最近有沒有被PDF翻譯的事兒搞得焦頭爛額呀?尤其是碰到韓文PDF文件的時候,是不是更頭疼了?別擔心,我最近也遇到了類似的問題,試了不少軟件,發現有五款軟件在處理韓文PDF翻譯時…

【MySQL?】服務器安裝 MySQL 及配置相關操作

1. 安裝 MySQL 在安裝 MySQL 時,如果使用官方 RPM 源,會遇到 GPG 密鑰驗證失敗的錯誤,可以按照以下步驟解決: 解決 GPG 密鑰驗證失敗的問題下載 MySQL 官方 GPG 密鑰 使用以下命令下載并安裝 MySQL 的官方 GPG 密鑰: w…

大數據量返回方案(非分頁)

一、普通方式返回100萬條數據RestController RequestMapping("/bad") public class BadController {Autowiredprivate UserRepository userRepository;/*** 危險&#xff01;一次性加載 100 萬條到內存*/GetMapping("/all-users")public List<User> …

基于Casbin的微服務細粒度權限控制方案對比與實踐

基于Casbin的微服務細粒度權限控制方案對比與實踐 隨著微服務架構在互聯網和企業級應用中的廣泛應用&#xff0c;服務間的安全邊界愈發重要。傳統的集中式權限控制方式已難以滿足微服務的高并發、動態擴展和多語言支持等需求。本文將從主流的三種微服務權限控制方案入手&#x…

5G毫米波現狀概述(截止2025 年7月)

5G毫米波現狀概述(截止2025 年7月&#xff09; 原創 modem協議筆記 2025年07月25日 06:01 廣東 聽全文 當你在體育館看球賽時&#xff0c;想發段實時視頻到朋友圈卻總卡成PPT&#xff1b;當郊區的父母抱怨“光纖拉不到家&#xff0c;網速比蝸牛慢”—這些場景背后&#xff…

thymeleaf 日期格式化顯示

在Thymeleaf中處理日期格式化顯示主要有以下幾種方式&#xff1a; 1. 使用#dates.format()方法進行基礎格式化&#xff1a; <p th:text"${#dates.format(dateObj, yyyy-MM-dd HH:mm:ss)}"></p>這種方法支持自定義格式模式&#xff0c;如yyyy表示年份、MM…

【經驗分享】如何在Vscode的Jupyter Notebook中設置默認顯示行號

【經驗分享】如何在Vscode的Jupyter Notebook中設置默認顯示行號 打開設置&#xff0c;搜索&#xff1a;Notebook: Line Number&#xff0c;然后把這個設置為on

藍橋杯STL stack

STL stack 概述棧&#xff08;stack&#xff09;是一種遵循**后進先出&#xff08;LIFO&#xff09;**原則的線性數據結構&#xff0c;僅允許在棧頂進行插入和刪除操作。STL&#xff08;Standard Template Library&#xff09;中的 stack 是一個容器適配器&#xff0c;基于其他…

從0到1:飛算JavaAI如何用AI魔法重構MCP服務全生命周期?

摘要 本文詳細介紹了如何利用飛算JavaAI技術實現MCP&#xff08;Model Context Protocol&#xff09;服務的創建及通過的全過程。首先闡述了飛算JavaAI的基本概念、特點和優勢&#xff0c;接著對MCP服務的需求進行分析&#xff0c;然后按照軟件開發流程&#xff0c;從系統設計、…

Webpack Loader 完全指南:從原理到配置的深度解析

掌握 Webpack Loader 的核心機制&#xff0c;解鎖前端工程化進階技能前言&#xff1a;為什么需要理解 Loader&#xff1f; 在現代前端工程化體系中&#xff0c;Webpack 已成為構建工具的事實標準。然而面對非標準 JavaScript 文件或自定義語法時&#xff0c;你是否遇到過 Modul…

讀書筆記:《我看見的世界》

《我看見的世界.李飛飛自傳》李飛飛 著&#xff0c;趙燦 譯個人理解&#xff1a; 是本自傳&#xff0c;也是AI的發展史 堅持&#xff0c;總會轉機&#xff0c;“一不小心”也許就成了算法、大規模數據、原始算力人工智能似乎一夜之間從一個小眾的學術領域爆發成為推動全球變革的…

使用純NumPy實現回歸任務:深入理解機器學習本質

在深度學習框架普及的今天&#xff0c;回歸基礎用NumPy從頭實現機器學習模型具有特殊意義。本文將完整演示如何用純NumPy實現二次函數回歸任務&#xff0c;揭示機器學習底層原理。整個過程不使用任何深度學習框架&#xff0c;每一行代碼都透明可見。1. 環境配置與數據生成 impo…