# RoundedImageView
**Repository Path**: hihopeorg/RoundedImageView
## Basic Information
- **Project Name**: RoundedImageView
- **Description**: 圆角图片设置组件
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-11-10
- **Last Updated**: 2023-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# RoundedImageView
## 简介
RoundedImageView支持圆角(和椭圆或圆形)的快速 ImageView。它支持许多附加功能,包括椭圆、圆角矩形、ScaleTypes 和 TileModes。
## 效果展示:
## 安装教程
1. 参考安装教程 [如何安装OpenHarmony npm包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_npm_usage.md)
2. 安装命令如下:
```
npm install @ohos/roundedimageview --save
```
## 使用说明
1. 在page页面引入包
```
import { RoundedImageView, ScaleType, TileMode, SrcType, FileUtils } from '@ohos/roundedimageview/'
```
2. 创建多种PictureItem实例用于构造数据,使用方法类似
3. 初始化:实例化dialogController和对应的RoundedImageView.Model对象,并添加typeArr类型以标记当前页页面类型
```
dialogController: CustomDialogController = new CustomDialogController({
alignment: DialogAlignment.Top,
builder: TypeCustomDialog({ typeValue: $typeValue }),
autoCancel: true
})
private initViewModels(): void {
let viewModelsLength = Math.max(this.picIdxArr.length, this.colorIdxArr.length)
for (var index = 0; index < viewModelsLength; index++) {
this.viewModels.push(new RoundedImageView.Model)
}
}
```
4. 属性设置:通过Model类对象设置UI属性来自定义所需风格
```
private updateViewModels(pictureItem: PictureItem[]) {
pictureItem.forEach((val, idx) => {
this.viewModels[idx]
.setImageSrc(pictureItem[idx].src)
.setBackgroundColor(pictureItem[idx].backgroundColor)
.setSrcType(pictureItem[idx].srcType)
.setIsSvg(pictureItem[idx].isSvg)
.setTypeValue(this.typeValue)
.setUiWidth(pictureItem[idx].uiWidth)
.setUiHeight(pictureItem[idx].uiHeight)
.setScaleType(pictureItem[idx].scaleType)
.setTileModeXY(pictureItem[idx].tileMode)
.setCornerRadius(pictureItem[idx].cornerRadius)
.setBorderWidth(pictureItem[idx].borderWidth)
.setBorderColor(pictureItem[idx].borderColor)
.setPadding(pictureItem[idx].padding)
.setColorWidth(this.uiHeight)
.setColorHeight(this.uiHeight)
});
}
```
5. 界面绘制:界面顶部为类型选择内容,并监听type_value内容的变化,以重新构建Model,通知给Model类,Scroll中使用list布局放置图片。
```
build() {
Column() {
Column() {
Image($r('app.media.down')).width(30).height(30).position({ x: -30, y: 5 }).onClick(() => {
this.dialogController.open()
})
Text(' select:' + this.typeValue).fontSize(30)
}.margin(15)
Scroll(this.scroller) {
List({ space: 10, initialIndex: 0 }) {
if (this.typeValue == 'Bitmap') {
ForEach(this.picIdxArr, (item) => {
ListItem() {
this.viewItem(this.viewModels[item], this.rectPictureItems[item])
}.editable(false)
}, item => item)
}
...
}
}
.scrollable(ScrollDirection.Vertical).scrollBar(BarState.Off)
}
.width('100%')
.height('100%')
.backgroundColor(0xDCDCDC)
.padding({ top: 20, bottom: 100 })
}
```
更多详细用法请参考开源库sample页面的实现
## 接口说明
`let data: RoundedImageView.Model = new RoundedImageView.Model();`
1. 设置图片路径
`data.setImageSrc(src: string | Resource | ArrayBuffer)`
2. 设置图片类型
`data.setSrcType(srcType: SrcType)`
3. 设置图片缩放类型
`data.setScaleType(scaleType: ScaleType)`
4. 设置图片的重复样式
`data.setTileModeXY(value: TileMode)`
5. 设置角半径
`data.setCornerRadius(cornerRadius: number)`
6. 设置图片显示的宽度
`data.setWidth(width: number)`
7. 设置图片显示的高度
`data.setHeight(height: number)`
8. 设置边框线宽
`data.setBorderWidth(borderWidth: number)`
9. 设置背景颜色
`data.setBackgroundColor(value: string | CanvasGradient | CanvasPattern)`
## 兼容性
- [DevEco Studio版本](https://developer.harmonyos.com/cn/develop/deveco-studio#download):DevEco Studio 3.1Beta1及以上版本。
- OpenHarmony SDK版本:API version 9及以上版本。
## 目录结构
```
|---- RoundedImageView
| |---- entry # 示例代码文件夹
| |---- RoundedImageView # RoundedImageView库文件夹
| |---- src
| |---- main
| |---- ets
| |---- components
| |---- DownloadUtils.ts # 图片下载工具类
| |---- FileUtils.ts # 文件操作工具类
| |---- PixelMapUtils.ts # PixelMap工具类
| |---- RoundedImageView.ets # 库的核心实现
| |---- ScaleType.ts # ScaleType枚举
| |---- SrcType.ts # SrcType枚举
| |---- TileMode.ts # TileMode枚举
| |---- README.md # 安装使用方法
```
## 贡献代码
使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-sig/RoundedImageView/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-sig/RoundedImageView/pulls) 。
## 开源协议
本项目基于 [Apache License 2.0](https://gitee.com/openharmony-sig/RoundedImageView/blob/master/LICENSE) ,请自由地享受和参与开源。