點擊藍字 ╳ 關注我們
周黎生
OpenHarmony知識體系工作組
背景說明
組件選型,能力對比

重構前后能力對比

重構完成的內容
重構中比較重要的點


import {ImageKnifeComponent} from '@ohos/imageknife'
import {ImageKnifeOption} from '@ohos/imageknife'
import {ImageKnifeDrawFactory} from '@ohos/imageknife'
@Entry
@Component
struct Index {
@State imageKnifeOption1: ImageKnifeOption =
{ // 加載一張本地的png資源(必選)
loadSrc: $r('app.media.pngSample'),
// 主圖的展示模式是 縮放至適合組件大小,并且在組件底部繪制
mainScaleType: ScaleType.FIT_END,
// 占位圖使用本地資源icon_loading(可選)
placeholderSrc: $r('app.media.icon_loading'),
// 失敗占位圖使用本地資源icon_failed(可選)
errorholderSrc: $r('app.media.icon_failed'),
// 繪制圓角30,邊框5,邊框"#ff00ff".用戶自定義繪制(可選)
drawLifeCycle:ImageKnifeDrawFactory.createRoundLifeCycle(5,"#ff00ff",30)
};
build() {
Scroll() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption1 })
.width(300) // 自定義組件已支持設置通用屬性和事件,這里寬高設置放在鏈式調用中完成
.height(300)
}
}
.width('100%')
.height('100%')
}
}

import AbilityStage from '@ohos.application.Ability'
import { ImageKnife,ImageKnifeDrawFactory} from '@ohos/imageknife'
export default class EntryAbility extends Ability {
onCreate(want,launchParam) {
globalThis.ImageKnife = ImageKnife.with(this.context);
// 全局配置網絡加載進度條
globalThis.ImageKnife.setDefaultLifeCycle(ImageKnifeDrawFactory.createProgressLifeCycle("#10a5ff", 0.5))
}
}

import {ImageKnifeComponent,ImageKnifeOption,ImageKnifeDrawFactory} from '@ohos/imageknife'
@Entry
@Component
struct Index {
@State imageKnifeOption1: ImageKnifeOption =
{ // 加載一張本地的png資源(必選)
loadSrc: $r('app.media.pngSample'),
};
build() {
Scroll() {
Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) {
ImageKnifeComponent({ imageKnifeOption: this.imageKnifeOption1 })
.width(300) // 自定義組件已支持設置通用屬性和事件,這里寬高設置放在鏈式調用中完成
.height(300)
}
}
.width('100%')
.height('100%')
}
}
import {ImageKnifeOption,ImageKnifeComponent} from '@ohos/imageknife'
@Entry
@Component
struct BasicTestFeatureAbilityPage {
urls=[
"http://e.hiphotos.baidu.com/image/pic/item/a1ec08fa513d2697e542494057fbb2fb4316d81e.jpg",
"http://c.hiphotos.baidu.com/image/pic/item/30adcbef76094b36de8a2fe5a1cc7cd98d109d99.jpg",
"http://h.hiphotos.baidu.com/image/pic/item/7c1ed21b0ef41bd5f2c2a9e953da81cb39db3d1d.jpg",
"http://g.hiphotos.baidu.com/image/pic/item/55e736d12f2eb938d5277fd5d0628535e5dd6f4a.jpg",
"http://e.hiphotos.baidu.com/image/pic/item/4e4a20a4462309f7e41f5cfe760e0cf3d6cad6ee.jpg",
]
@State options:Array = []
aboutToAppear(){
this.options = this.urls.map((url)=>{
return {
loadSrc:url
}
})
console.log('this.options length ='+this.options.length)
}
build() {
Stack({ alignContent: Alignment.TopStart }) {
Column() {
List({ space: 20, initialIndex: 0 }) {
ForEach(this.options, (item) => {
ListItem() {
ImageKnifeComponent({imageKnifeOption:item}).width(300).height(300)
}
}, item => item.loadSrc)
}
.listDirection(Axis.Vertical) // 排列方向
.divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之間的分界線
.edgeEffect(EdgeEffect.None) // 滑動到邊緣無效果
.chainAnimation(false) // 聯動特效關閉
}.width('100%')
}.width('100%').height('100%').backgroundColor(0xDCDCDC).padding({ top: 5 })
}
}
渲染層重構的總結
原文標題:基于ArkUI框架開發-ImageKnife渲染層重構
文章出處:【微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
鴻蒙
+關注
關注
59文章
2526瀏覽量
43787 -
OpenHarmony
+關注
關注
27文章
3835瀏覽量
18171
原文標題:基于ArkUI框架開發-ImageKnife渲染層重構
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
ArkUI-X中Plugin生命周期開發指南
;
}
}
}
添加ArkUI-X插件
在StageActivity中,新增addPlugin11+方法,并以字符串形式提供IArkUIXPlugin的實現類的完整包名,用于將開發者實現
發表于 06-04 22:36
Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅
原生 IDE( Android Studio / VSCode ) 和原生性能分析工具,從業務代碼到框架代碼層,使用統一技術棧完成開發,調試和性能分析,從而實現框架開發技術棧自閉環。
發表于 06-04 16:46
ArkUI-X添加到現有Android項目中
本教程主要講述如何利用ArkUI-X SDK完成Android AAR開發,實現基于ArkTS的聲明式開發范式在android平臺顯示。包括:
1.跨平臺Library工程開發介紹
2
發表于 05-28 22:44
Get這個秘籍,鴻蒙原生應用頁面滑動絲滑無比
問題的解決方案,通過創新技術手段解決不同技術棧下的性能瓶頸,為開發者提供更流暢的頁面渲染體驗,有效提升鴻蒙應用的頁面滑動流暢度。
ArkUI頁面動態預加載:兼顧應用首頁速度與滑動流暢性
在Ar
發表于 03-06 14:41
華為推出RN/H5多設備自適應組件庫
存在大量用跨平臺框架開發的應用,部分頁面采用React Native(RN)和H5等框架開發,這些框架在系統級的多設備適配能力上相對有限,導致在折疊機、平板等設備上的適配效率不如ArkUI
AI開發框架集成介紹
隨著AI應用的廣泛深入,單一框架往往難以滿足多樣化的需求,因此,AI開發框架的集成成為了提升開發效率、促進技術創新的關鍵路徑。以下,是對AI開發
SSM框架的優缺點分析 SSM在移動端開發中的應用
:Spring框架是企業型開發使用的成熟的開源框架,能夠節省成本。SSM框架使用起來更加輕快,能夠更合理地分配資源,使用最小的資源完成當前的需求。 節省
HarmonyOS NEXT應用元服務開發Intents Kit(意圖框架服務)習慣推薦方案開發者測試
意圖框架向開發者提供真機測試能力,即開發者可連接設備進行調測。開發者完成代碼開發之后,功能正式上架應用市場前,可以在HarmonyOS NE
發表于 11-25 17:37
JavaWeb框架比較
JavaWeb框架為開發人員提供了構建Web應用程序所需的基礎設施和組件,每種框架都有其獨特的特點和適用場景。以下是對幾種主流JavaWeb框架的比較: Spring MVC 優點
HarmonyOS NEXT應用元服務開發Intents Kit(意圖框架服務)事件推薦開發者測試
意圖框架向開發者提供真機測試能力,即開發者可連接設備進行調測。開發者完成代碼開發之后,功能正式上架應用市場前,可以在HarmonyOS NE
發表于 11-18 17:39
簡述大前端技術棧的渲染原理
應用開發:Android、iOS、鴻蒙(HarmonyOS)等; ?Web前端框架:Vue、React、Angular等; ?小程序開發:微信小程序、京東小程序、支付寶小程序等; ?跨平臺解決方案:React Native、Fl
bootstrap框架用什么軟件開發
Bootstrap是一個流行的前端框架,用于快速開發響應式和移動優先的Web應用程序。它提供了一套預定義的CSS和JavaScript組件,使得開發者可以快速構建出漂亮的用戶界面
評論