107 Star 453 Fork 232

HarmonyOS-Cases / Cases

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
ImageGridLayout.ets 3.39 KB
一键复制 编辑 原始数据 按行查看 历史
haoxiaohui 提交于 2024-05-15 22:13 . 1.子模块替换动态路由
/*
* Copyright (c) 2024 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { AppRouter } from '@ohos/dynamicsrouter/Index';
import { MultiGrid } from './MultiGrid';
// 图片属性的modifier类,便于用户扩展image相关的属性
class ImageModifier implements AttributeModifier<ImageAttribute> {
private imageFit: ImageFit = ImageFit.Fill;
private imageRenderMode: ImageRenderMode = ImageRenderMode.Original;
constructor() {
}
applyNormalAttribute(instance: ImageAttribute): void {
instance.objectFit(this.imageFit)
instance.renderMode(this.imageRenderMode)
}
objectFit(fit: ImageFit): ImageModifier {
this.imageFit = fit;
return this;
}
renderMode(mode: ImageRenderMode): ImageModifier {
this.imageRenderMode = mode;
return this;
}
}
// 九宫格图片布局实例
@AppRouter({ name: "imagegridlayout/ImageGridLayout" })
@Component
export struct ImageGridLayout {
// 不同图片数量的图片集合
private imageArray1: Resource[] = [$r("app.media.b")];
private imageArray3: Resource[] = [$r("app.media.a"), $r("app.media.b"), $r("app.media.c")];
private imageArray4: Resource[] = [$r("app.media.a"), $r("app.media.b"), $r("app.media.c"), $r("app.media.d")];
private imageArray8: Resource[] = [$r("app.media.a"), $r("app.media.b"), $r("app.media.c"), $r("app.media.d"), $r("app.media.e"), $r("app.media.f"), $r("app.media.g"), $r("app.media.h")];
private imageArray9: Resource[] = [$r("app.media.a"), $r("app.media.b"), $r("app.media.c"), $r("app.media.d"), $r("app.media.e"), $r("app.media.f"), $r("app.media.g"), $r("app.media.h"), $r("app.media.i")];
private imageSet: Resource[][] = [this.imageArray1, this.imageArray3, this.imageArray4, this.imageArray8, this.imageArray9];
private textArray: string[] = ['一张图片场景:', '三张图片场景:', '四张图片场景:', '八张图片场景:', '九张图片场景:'];
// TODO:知识点:自定义组件中实现属性扩展
private imageModifier: ImageModifier = new ImageModifier().objectFit(ImageFit.Fill)
.renderMode(ImageRenderMode.Original)
build() {
Scroll() {
Column() {
// TODO:性能知识点:List、Grid、Swiper、以及WaterFlow组件,在超过2屏滚动的场景中,建议使用LazyForeach+组件复用提升滚动性能
ForEach(this.imageSet, (item: Resource[], index: number) => {
Text(this.textArray[index])
.margin({ top: $r('app.float.imagegridlayout_text_margin'), bottom: $r('app.float.imagegridlayout_text_margin') })
MultiGrid({ imageSource: item, modifier: this.imageModifier })
Divider().margin({ top: $r('app.float.imagegridlayout_divider_margin') })
})
}.alignItems(HorizontalAlign.Start)
}
.padding($r('app.float.imagegridlayout_padding_20'))
.width($r('app.string.imagegridlayout_width_100'))
.height($r('app.string.imagegridlayout_height_100'))
}
}
JavaScript
1
https://gitee.com/harmonyos-cases/cases.git
git@gitee.com:harmonyos-cases/cases.git
harmonyos-cases
cases
Cases
master

搜索帮助