HarmonyOS 鸿蒙Next PhotoPickerComponent (Photo Picker组件)查看大图问题咨询

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next PhotoPickerComponent (Photo Picker组件)查看大图问题咨询

1、Photo Picker组件如何实现点击缩略图后进入大图模式,即在onItemClicked回调中调用哪个api可以进入大图模式

2、组件自带的放大按钮是否可以隐藏掉

2 回复

可以通过设置选择模式SelectMode为单选模式,并设置isPreviewForSingleSelectionSupported 为true,单选模式下是否需要进大图预览,true表示需要,false表示不需要,默认为true。达到点击缩略图后进入大图模式,并隐藏组件自带的放大按钮

import {
  photoAccessHelper,
  PhotoPickerComponent,
  PickerController,
  PickerOptions,
  DataType,
  ItemInfo,
  PhotoBrowserInfo,
  ItemType,
  ClickType,
} from '@kit.MediaLibraryKit';
[@Entry](/user/Entry)
[@Component](/user/Component)
struct Test240820153033101 {
  pickerOptions: PickerOptions = new PickerOptions();
  [@State](/user/State) pickerController: PickerController = new PickerController();
  [@State](/user/State) selectUris: Array<string> = new Array<string>();
  aboutToAppear() {
    this.pickerOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE;
    this.pickerOptions.maxSelectNumber = 10;
    this.pickerOptions.isSearchSupported = false;
    this.pickerOptions.isPhotoTakingSupported = false;
    this.pickerOptions.isPreviewForSingleSelectionSupported = true
    this.pickerOptions.selectMode = 0
    // 其他属性.....
  }
  private onSelect(uri: string): void {
    // 添加
    if (uri) {
      this.selectUris.push(uri);
    }
  }
  private onDeselect(uri: string): void {
    // 移除
    if (uri) {
      this.selectUris = this.selectUris.filter((item: string) => {
        return item != uri;
      })
    }
  }
  private onItemClicked(itemInfo: ItemInfo, clickType: ClickType): boolean {
    if (!itemInfo) {
      return false;
    }
    let type: ItemType | undefined = itemInfo.itemType;
    if (type === ItemType.CAMERA) {
      // 点击相机item
      return true; // 返回true则拉起系统相机,若应用需要自行处理则返回false。
    } else {
      if (clickType === ClickType.SELECTED) {
        // 应用做自己的业务处理
        return true; // 返回true则勾选,否则则不响应勾选。
      }
    }
    return true;
  }
  private onEnterPhotoBrowser(photoBrowserInfo: PhotoBrowserInfo): boolean {
    // 进入大图的回调
    return true;
  }
  private onExitPhotoBrowser(photoBrowserInfo: PhotoBrowserInfo): boolean {
    // 退出大图的回调
    return true;
  }
  private onPickerControllerReady(): void {
    // 接收到该回调后,便可通过pickerController相关接口向picker发送数据,在此之前不生效。
  }
  build() {
    Stack() {
      PhotoPickerComponent({
        pickerOptions: this.pickerOptions,
        // onSelect: (uri: string): void => this.onSelect(uri),
        // onDeselect: (uri: string): void => this.onDeselect(uri),
        onItemClicked: (itemInfo: ItemInfo, clickType: ClickType): boolean => this.onItemClicked(itemInfo,
          clickType), // 该接口可替代上面两个接口
        onEnterPhotoBrowser: (photoBrowserInfo: PhotoBrowserInfo): boolean => this.onEnterPhotoBrowser(photoBrowserInfo),
        onExitPhotoBrowser: (photoBrowserInfo: PhotoBrowserInfo): boolean => this.onExitPhotoBrowser(photoBrowserInfo),
        onPickerControllerReady: (): void => this.onPickerControllerReady(),
        pickerController: this.pickerController,
      }).height('100%').width('100%')
      // 这里模拟应用侧底部的选择栏
      Row() {
        ForEach(this.selectUris, (uri: string) => {
          Image(uri).height('10%').width('10%').onClick(() => {
            // 点击事件模拟删除操作,通过pickerController向picker组件发送已选择的数据列表,触发picker组件勾选框刷新
            this.selectUris = this.selectUris.filter((item: string) => {
              return item != uri;
            })
            this.pickerController.setData(DataType.SET_SELECTED_URIS, this.selectUris);
          })
        }, (uri: string) => JSON.stringify(uri))
      }
    }
  }
}<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

更多关于HarmonyOS 鸿蒙Next PhotoPickerComponent (Photo Picker组件)查看大图问题咨询的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对您提出的HarmonyOS 鸿蒙Next PhotoPickerComponent(Photo Picker组件)查看大图问题,以下是一些直接相关的解答:

在HarmonyOS中,使用Photo Picker组件时,如需实现查看大图功能,通常需结合Gallery或Image组件进行。Photo Picker组件本身用于选择图片,而查看大图则需在选择后,将所选图片路径或数据传递给Gallery或Image组件进行展示。

具体步骤如下:

  1. 选择图片:用户通过Photo Picker组件选择图片。
  2. 获取图片数据:在Photo Picker的回调中,获取用户所选图片的路径或Bitmap数据。
  3. 展示大图:将获取的图片路径或Bitmap数据传递给Gallery或Image组件,设置合适的布局和样式以展示大图。

注意,确保您的应用具有读取存储权限,以便Photo Picker组件能够正常访问用户设备中的图片。

此外,若您使用的是HarmonyOS SDK的较新版本,建议查阅官方文档或示例代码,以获取最新的API使用方法和最佳实践。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部