点击蓝字 ╳ 关注我们
周黎生
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】欢迎添加关注!文章转载请注明出处。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
鸿蒙
+关注
关注
60文章
2858浏览量
45355 -
OpenHarmony
+关注
关注
31文章
3926浏览量
20720
原文标题:基于ArkUI框架开发-ImageKnife渲染层重构
文章出处:【微信号:gh_e4f28cfa3159,微信公众号:OpenAtom OpenHarmony】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
热点推荐
知乎开源“智能预渲染框架” 几行代码实现鸿蒙应用页面“秒开”
近日,知乎在Gitee平台开源了其自研的鸿蒙“智能预渲染框架”,并将该框架的Har包上架到OpenHarmony三方库中心仓。该框架在鸿蒙平台首创“智能预
【HarmonyOS next】ArkUI-X休闲娱乐搞笑日历【基础】
引言
在跨平台应用开发中,网络图片在不同设备上的适配展示是常见挑战。本文将基于HarmonyOS next的ArkUI-X框架,通过一个休闲娱乐日历应用,展示如何实现网络图片在华为和iOS设备上
发表于 06-28 22:07
【HarmonyOS next】ArkUI-X休闲益智连连看【进阶】
一套代码双端运行的跨平台实践
在移动应用开发中,跨平台技术始终是开发者追求的圣杯。借助ArkUI-X框架,我们仅用一套ArkTS代码即可实现应用在HarmonyOS和iOS双端的原生级
发表于 06-28 21:51
【HarmonyOS next】ArkUI-X休闲益智儿童拼图【进阶】
一、前言:当拼图遇上跨端开发
最近在开发一款跨平台的儿童拼图游戏时,我深刻体会到了ArkUI-X框架的威力——同一套代码竟能同时在华为Mate60 Pro和iPhone15上流畅运行!
发表于 06-28 21:41
【HarmonyOS next】ArkUI-X休闲益智猜字谜【基础】
下图是在iOS中的运行效果
下图是在HarmonyOS中的运行效果
今天咱们来聊聊如何用ArkUI-X这个新兴框架实现跨端开发,通过一个猜字谜小游戏带大家感受它的开发魅力。本文不仅能让
发表于 06-26 20:01
ArkUI介绍
ArkUI(方舟UI框架)为应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面
发表于 06-24 06:41
HarmonyOS NEXT应用元服务布局优化ArkUI框架执行流程
一、 ArkUI框架执行流程
在使用ArkUI开发中,我们通过布局组件和基础组件进行界面描述,这些描述会呈现出一个组件树的结构,基础组件在其中为叶子结点,布局组件则是中间节点,可以把这
发表于 06-23 09:41
ArkUI-X应用工程结构说明
简介
本文档配套ArkUI-X,将OpenHarmony ArkUI开发框架扩展到不同的OS平台,比如Android和iOS平台,让开发者基
发表于 06-19 23:11
ArkUI-X跨平台应用改造指南
,包含了应用的所有UI界面、弹窗、媒体图片等元素,这些都是能够被用户直接感知并进行操作的。此层是借助HarmonyOS的ArkUI组件以及相关能力来进行设计与开发的,并且ArkUI-X
发表于 06-16 23:05
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
Get这个秘籍,鸿蒙原生应用页面滑动丝滑无比
问题的解决方案,通过创新技术手段解决不同技术栈下的性能瓶颈,为开发者提供更流畅的页面渲染体验,有效提升鸿蒙应用的页面滑动流畅度。
ArkUI页面动态预加载:兼顾应用首页速度与滑动流畅性
在Ar
发表于 03-06 14:41
华为推出RN/H5多设备自适应组件库
存在大量用跨平台框架开发的应用,部分页面采用React Native(RN)和H5等框架开发,这些框架在系统级的多设备适配能力上相对有限,导致在折叠机、平板等设备上的适配效率不如ArkUI

基于ArkUI框架开发-ImageKnife渲染层重构

评论