Skip to content

ImagePreview 图片预览

介绍

以服务调用的方式全屏预览图片,支持手势缩放、滑动切换、页码显示、长按回调等功能。

引入

typescript
import { TnImagePreview, TnImagePreviewOption } from "@tuniao/tn-ui";

代码演示

基础用法

调用 TnImagePreview.show() 并传入图片 URL 数组即可展示图片预览,支持左右滑动切换、双击缩放、双指缩放。

基础用法

点我查看代码
typescript
import { TnImagePreview } from "@tuniao/tn-ui";

@Entry
@ComponentV2
struct ImagePreviewBasic {
  private images: string[] = [
    "https://picsum.photos/id/10/800/600",
    "https://picsum.photos/id/20/800/600",
    "https://picsum.photos/id/30/800/600",
    "https://picsum.photos/id/40/800/600",
    "https://picsum.photos/id/50/800/600"
  ];

  build() {
    Column() {
      Button("预览图片")
        .onClick(() => {
          TnImagePreview.show(
            this.images
          );
        });
    }
  }
}

指定初始图片

通过 TnImagePreviewOptionstartIndex 属性指定预览时的初始图片索引。

点我查看代码
typescript
import { TnImagePreview, TnImagePreviewOption } from "@tuniao/tn-ui";

// 从第3张开始预览
const option = new TnImagePreviewOption();
option.startIndex = 2;
TnImagePreview.show(
  this.images,
  option
);

页码位置

通过 indexPosition 属性设置页码指示器的位置,支持 "top""bottom"

页码位置

点我查看代码
typescript
// 页码显示在顶部
const option = new TnImagePreviewOption();
option.indexPosition = "top";
TnImagePreview.show(
  this.images,
  option
);

隐藏页码

通过 showIndex 设置为 false 隐藏页码指示器。

点我查看代码
typescript
const option = new TnImagePreviewOption();
option.showIndex = false;
TnImagePreview.show(
  this.images,
  option
);

关闭循环滑动

通过 loop 设置为 false 禁用循环滑动,到达末尾后无法继续滑动。

点我查看代码
typescript
const option = new TnImagePreviewOption();
option.loop = false;
TnImagePreview.show(
  this.images,
  option
);

点击图片不关闭

通过 closeOnClickImage 设置为 false,点击图片后不关闭预览(需点击遮罩区域关闭)。

点我查看代码
typescript
const option = new TnImagePreviewOption();
option.closeOnClickImage = false;
TnImagePreview.show(
  this.images,
  option
);

自定义缩放比例

通过 maxScaleminScale 属性设置图片的最大和最小缩放倍数。

点我查看代码
typescript
const option = new TnImagePreviewOption();
option.maxScale = 5;
TnImagePreview.show(
  this.images,
  option
);

监听点击和长按事件

通过 onImageClickonImageLongPress 监听图片的点击和长按事件。建议配合 closeOnClickImage = false 使用,避免点击后直接关闭预览。

点我查看代码
typescript
const option = new TnImagePreviewOption();
option.closeOnClickImage = false;
option.onImageClick = (index: number): void => {
  console.info(`点击了第 ${index} 张图片`);
};
option.onImageLongPress = (index: number): void => {
  console.info(`长按了第 ${index} 张图片`);
};
TnImagePreview.show(
  this.images,
  option
);

API

TnImagePreview.show

typescript
TnImagePreview.show(urls: ResourceStr[], option?: TnImagePreviewOption): void
参数说明类型必填
urls图片地址数组ResourceStr[]
option预览配置选项TnImagePreviewOption

TnImagePreview.hide

typescript
TnImagePreview.hide(): void

手动关闭当前图片预览。

TnImagePreviewOption

参数说明类型默认值
startIndex初始显示图片索引number0
swipeDuration切换动画时长(ms)number200
showIndex是否显示页码booleantrue
indexPosition页码位置"top" | "bottom""bottom"
loop是否循环切换booleantrue
closeOnClickImage点击图片是否关闭booleantrue
closeOnClickOverlay点击遮罩层是否关闭booleantrue
maxScale最大缩放倍数number3
minScale最小缩放倍数number1

Events(通过 TnImagePreviewOption 设置)

事件名说明回调参数
onImageClick点击图片时触发(index: number) => void
onImageLongPress长按图片时触发(index: number) => void