點擊藍字 ╳ 關注我們
周黎生
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文章
2535瀏覽量
43810 -
OpenHarmony
+關注
關注
28文章
3836瀏覽量
18220
原文標題:基于ArkUI框架開發-ImageKnife渲染層重構
文章出處:【微信號:gh_e4f28cfa3159,微信公眾號:OpenAtom OpenHarmony】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
熱點推薦
ArkUI-X在Android平臺動態化開發指南
本文介紹如何在Android平臺進行ArkUI-X動態化開發,包括動態化目錄規則及約束。
適用場景
動態化主要包括兩個典型場景:
場景1:框架動態化,為了降低應用ROM體積占用,及滿足動態升級
發表于 06-15 23:33
ArkUI-X框架LogInterface使用指南
WARN/INFO/DEBUG),存在應用崩潰的風險。
注意:開發者使用時注冊,必須位于調用MyApplication超類的onCreate()方法之后
設置ArkUI-X框架
發表于 06-15 23:20
ArkUI-X構建Android平臺AAR及使用
本教程主要講述如何利用ArkUI-X SDK完成Android AAR開發,實現基于ArkTS的聲明式開發范式在android平臺顯示。包括: 1.跨平臺Library工程開發介紹 2
ArkUI-X在Android上使用Fragment開發指南
本文介紹將ArkUI框架的UIAbility跨平臺部署至Android平臺Fragment的使用說明,實現Android原生Fragment和ArkUI跨平臺Fragment的混合開發
發表于 06-12 22:42
ArkUI-X中Plugin生命周期開發指南
;
}
}
}
添加ArkUI-X插件
在StageActivity中,新增addPlugin11+方法,并以字符串形式提供IArkUIXPlugin的實現類的完整包名,用于將開發者實現
發表于 06-04 22:36
Kuikly鴻蒙版正式開源 —— 揭秘卓越性能適配之旅
原生 IDE( Android Studio / VSCode ) 和原生性能分析工具,從業務代碼到框架代碼層,使用統一技術棧完成開發,調試和性能分析,從而實現框架開發技術棧自閉環。
發表于 06-04 16:46
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
簡述大前端技術棧的渲染原理
應用開發:Android、iOS、鴻蒙(HarmonyOS)等; ?Web前端框架:Vue、React、Angular等; ?小程序開發:微信小程序、京東小程序、支付寶小程序等; ?跨平臺解決方案:React Native、Fl
評論