1e41f4b71Sopenharmony_ci# @ohos.file.PhotoPickerComponent (Photo Picker组件)
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci应用可以在布局中嵌入Photo Picker组件,通过此组件,应用无需申请权限,即可访问公共目录中的图片或视频文件。仅包含读权限。
4e41f4b71Sopenharmony_ci应用嵌入组件后,用户可直接在Photo Picker组件中选择图片或视频文件。
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci> **说明:**
7e41f4b71Sopenharmony_ci>
8e41f4b71Sopenharmony_ci> 该组件从API version 12开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci## 导入模块
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci```ts
13e41f4b71Sopenharmony_ciimport {
14e41f4b71Sopenharmony_ci  PhotoPickerComponent, PickerController, PickerOptions,
15e41f4b71Sopenharmony_ci  DataType, BaseItemInfo, ItemInfo, PhotoBrowserInfo, AnimatorParams,
16e41f4b71Sopenharmony_ci  MaxSelected, ItemType, ClickType, PickerOrientation,
17e41f4b71Sopenharmony_ci  SelectMode, PickerColorMode, ReminderMode, MaxCountType, PhotoBrowserRange, PhotoBrowserUIElement,
18e41f4b71Sopenharmony_ci  ItemsDeletedCallback, ExceedMaxSeletedCallback, CurrentAlbumDeletedCallback
19e41f4b71Sopenharmony_ci} from '@ohos.file.PhotoPickerComponent';
20e41f4b71Sopenharmony_ci```
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci## 属性
23e41f4b71Sopenharmony_ci
24e41f4b71Sopenharmony_ci支持[通用属性](../apis-arkui/arkui-ts/ts-universal-attributes-size.md)。
25e41f4b71Sopenharmony_ci
26e41f4b71Sopenharmony_ci## PhotoPickerComponent
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ciPhotoPickerComponent({
29e41f4b71Sopenharmony_ci  pickerOptions?: PickerOptions,
30e41f4b71Sopenharmony_ci  onSelect?: (uri: string) => void,
31e41f4b71Sopenharmony_ci  onDeselect?: (uri: string) => void,
32e41f4b71Sopenharmony_ci  onItemClicked?: (itemInfo: ItemInfo, clickType: ClickType) => boolean,
33e41f4b71Sopenharmony_ci  onEnterPhotoBrowser?: (photoBrowserInfo: PhotoBrowserInfo) => boolean,
34e41f4b71Sopenharmony_ci  onExitPhotoBrowser?: (photoBrowserInfo: PhotoBrowserInfo) => boolean,
35e41f4b71Sopenharmony_ci  onPickerControllerReady?: () => void,
36e41f4b71Sopenharmony_ci  onPhotoBrowserChanged?: (browserItemInfo: BaseItemInfo) => boolean,
37e41f4b71Sopenharmony_ci  onSelectedItemsDeleted?: ItemsDeletedCallback,
38e41f4b71Sopenharmony_ci  onExceedMaxSelected?: ExceedMaxSeletedCallback,
39e41f4b71Sopenharmony_ci  onCurrentAlbumDeleted?: CurrentAlbumDeletedCallback,
40e41f4b71Sopenharmony_ci  pickerController: PickerController
41e41f4b71Sopenharmony_ci})
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci应用可以在布局中嵌入PhotoPickerComponent组件,通过此组件,应用无需申请权限,即可访问公共目录中的图片或视频文件。
44e41f4b71Sopenharmony_ci
45e41f4b71Sopenharmony_ci> **说明:**
46e41f4b71Sopenharmony_ci> 如果当前PhotoPickerComponent组件嵌套在Tabs组件中使用,Tabs组件的左右滑动会与图片选择大图界面的左右滑动切换手势发生冲突。
47e41f4b71Sopenharmony_ci>
48e41f4b71Sopenharmony_ci> 可在进退大图的回调中设置Tabs组件是否支持滑动来规避,该问题将在后续版本修复。
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci**装饰器类型**:@Component
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
55e41f4b71Sopenharmony_ci
56e41f4b71Sopenharmony_ci**参数:**
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci| 名称                      | 类型                                                                               | 必填  | 装饰器说明      | 参数描述                                                                                                                                                                                                                                                                                                                                                            |
59e41f4b71Sopenharmony_ci|-------------------------|----------------------------------------------------------------------------------|-----|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
60e41f4b71Sopenharmony_ci| pickerOptions           | [PickerOptions](#pickeroptions)                                                  | 否   | - | picker参数信息。                                                                                                                                                                                                                                                                                                                                                     |
61e41f4b71Sopenharmony_ci| onSelect                | (uri: string) => void                                                            | 否   | - | 用户在Picker组件中勾选图片时产生的回调事件,将图片uri报给应用。                                                                                                                                                                                                                                                                                                                            |
62e41f4b71Sopenharmony_ci| onDeselect              | (uri: string) => void                                                            | 否   | - | 用户在Picker组件中取消勾选图片时产生的回调事件,同时也会将图片uri报给应用。                                                                                                                                                                                                                                                                                                                      |
63e41f4b71Sopenharmony_ci| onItemClicked           | (itemInfo: [ItemInfo](#iteminfo), clickType: [ClickType](#clicktype)) => boolean | 否   | - | 用户在picker组件中点击item产生的回调事件。<br>点击图片(缩略图item)时,返回值为true则勾选此图片,否则不响应勾选,uri不授权;点击相机item,返回值为true则拉起系统相机,否则不拉起相机,由应用自行处理。                                                                                                                                                                                                                                            |
64e41f4b71Sopenharmony_ci| onEnterPhotoBrowser     | (photoBrowserInfo: [PhotoBrowserInfo](#photobrowserinfo)) => boolean             | 否   | - | 点击进入大图时产生的回调事件,将大图相关信息报给应用。                                                                                                                                                                                                                                                                                                                                     |
65e41f4b71Sopenharmony_ci| onExitPhotoBrowser      | (photoBrowserInfo: [PhotoBrowserInfo](#photobrowserinfo)) => boolean             | 否   | - | 退出大图时产生的回调事件,将大图相关信息报给应用。                                                                                                                                                                                                                                                                                                                                       |
66e41f4b71Sopenharmony_ci| onPickerControllerReady | () => void                                                                       | 否   | - | 当pickerController可用时产生的回调事件。<br>调用PickerController相关接口需在该回调后才能生效。                                                                                                                                                                                                                                                                                               |
67e41f4b71Sopenharmony_ci| onPhotoBrowserChanged   | (browserItemInfo: [BaseItemInfo](#baseiteminfo)) => boolean                      | 否   | - | 大图左右滑动时产生的回调事件,将大图相关信息报给应用。                                                                                                                                                                                                                                                                                                                                     |
68e41f4b71Sopenharmony_ci| onSelectedItemsDeleted<sup>13+</sup>  | [ItemsDeletedCallback](#itemsdeletedcallback13)                                  | 否   | - | 已勾选的图片被删除时产生的回调,并将被删除图片的相关信息回调给应用。                                                                                                                                                                                                                                                                                                                              |
69e41f4b71Sopenharmony_ci| onExceedMaxSelected<sup>13+</sup>     | [ExceedMaxSeletedCallback](#exceedmaxseletedcallback13)                          | 否   | - | 选择达到最大选择数量(最大图片选择数量或者是最大视频选择数量亦或是总的最大选择数量)之后再次点击勾选时产生的回调。<br>- 若选择的数量达到了最大图片选择数量且未达到总的最大选择数量则回调的参数exceedMaxCountType为[MaxCountType](#maxcounttype).PHOTO_MAX_COUNT。<br>- 若选择的数量达到了最大视频选择数量且未达到总的最大选择数量则回调的参数exceedMaxCountType为[MaxCountType](#maxcounttype).VIDEO_MAX_COUNT。<br>- 只要选择的数量达到了总的最大选择数量则回调的的参数exceedMaxCountType为[MaxCountType](#maxcounttype).TOTAL_MAX_COUNT。 |
70e41f4b71Sopenharmony_ci| onCurrentAlbumDeleted<sup>13+</sup>   | [CurrentAlbumDeletedCallback](#currentalbumdeletedcallback13)                    | 否   | - | 当前相册被删除时产生的回调。<br>当前相册是指通过pickerContorller.[setData](#setdata)([DataType](#datatype).SET_ALBUM_URI, currentAlbumUri)接口设置给宫格组件的相册,即“currentAlbumUri”。<br>当前相册被删除后若使用方向刷新自己的相册标题栏,使用方可以设置自己的标题栏名称为默认的相册名例如“图片和视频”、“图片”或“视频”,然后通过pickerContorller.[setData](#setdata)([DataType](#datatype).SET_ALBUM_URI, '')接口传空串去刷新宫格页为默认相册。                                  |
71e41f4b71Sopenharmony_ci| pickerController        | [PickerController](#pickercontroller)                                            | 否   | @ObjectLink | 应用可通过PickerController向Picker组件发送数据。                                                                                                                                                                                                                                                                                                                             |
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci## PickerOptions
74e41f4b71Sopenharmony_ci
75e41f4b71Sopenharmony_ci继承自[BaseSelectOptions](js-apis-photoAccessHelper.md#baseselectoptions12)。
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ciPicker配置选项。
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
82e41f4b71Sopenharmony_ci
83e41f4b71Sopenharmony_ci| 名称                              | 类型                                      | 必填  | 说明                                                                       |
84e41f4b71Sopenharmony_ci|---------------------------------|-----------------------------------------|-----|--------------------------------------------------------------------------|
85e41f4b71Sopenharmony_ci| checkBoxColor                   | string                                  | 否   | 勾选框的背景色。格式为8位十六进制颜色代码。                                                   |
86e41f4b71Sopenharmony_ci| backgroundColor                 | string                                  | 否   | picker宫格页面背景色。格式为8位十六进制颜色代码。                                             |
87e41f4b71Sopenharmony_ci| isRepeatSelectSupported         | boolean                                 | 否   | 是否支持单张图片重复选择。true表示支持。                                                   |
88e41f4b71Sopenharmony_ci| checkboxTextColor               | string                                  | 否   | 勾选框内文本颜色。格式为8位十六进制颜色代码。 (该能力暂不支持)                                        |
89e41f4b71Sopenharmony_ci| photoBrowserBackgroundColorMode | [PickerColorMode](#pickercolormode)     | 否   | 大图背景颜色。包括跟随系统、浅色模式以及深色模式,默认为跟随系统。                                        |
90e41f4b71Sopenharmony_ci| maxSelectedReminderMode         | [ReminderMode](#remindermode)           | 否   | 选择数量达到最大时的提示方式。包括弹toast提示、不提示以及蒙层提示,默认为弹toast提示。                         |
91e41f4b71Sopenharmony_ci| orientation                     | [PickerOrientation](#pickerorientation) | 否   | 宫格页面滑动预览方向,包括水平和竖直两个方向,默认为竖直方向。(该能力暂不支持)                                 |
92e41f4b71Sopenharmony_ci| selectMode                      | [SelectMode](#selectmode)               | 否   | 选择模式。包括多选和单选,默认为多选。                                                      |
93e41f4b71Sopenharmony_ci| maxPhotoSelectNumber            | number                                  | 否   | 图片最大的选择数量。最大值为500,受到最大选择总数的限制。                                           |
94e41f4b71Sopenharmony_ci| maxVideoSelectNumber            | number                                  | 否   | 视频最大的选择数量。最大值为500,受到最大选择总数的限制。                                           |
95e41f4b71Sopenharmony_ci| isSlidingSelectionSupported<sup>13+</sup>     | boolean                                 | 否   | 是否支持滑动多选,默认不支持。重复选择场景不支持滑动多选。                                            |
96e41f4b71Sopenharmony_ci| photoBrowserCheckboxPosition<sup>13+</sup>    | [number, number]                        | 否   | 设置大图页checkbox的位置。第一个参数为X方向偏移量,第二个参数为Y方向偏移量。传参范围0-1,代表距离组件左上角0%-100%的偏移量。 |
97e41f4b71Sopenharmony_ci
98e41f4b71Sopenharmony_ci## ItemsDeletedCallback<sup>13+</sup>
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_citype ItemsDeletedCallback = (baseItemInfos: Array&lt;BaseItemInfo&gt;) => void
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci已勾选的图片被删除时产生的回调事件。
103e41f4b71Sopenharmony_ci
104e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci**参数:**
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci| 参数名 | 类型                                         | 必填 | 说明       |
111e41f4b71Sopenharmony_ci| -------- |--------------------------------------------| -------- |----------|
112e41f4b71Sopenharmony_ci| baseItemInfos | Array&lt;[BaseItemInfo](#baseiteminfo)&gt; | 是 | 照片的基本信息。 |
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci## ExceedMaxSeletedCallback<sup>13+</sup>
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_citype ExceedMaxSeletedCallback = (exceedMaxCountType: MaxCountType) => void
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci选择达到最大选择数量之后再次点击勾选时的回调事件。
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci**参数:**
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci| 参数名 | 类型                            | 必填 | 说明                                           |
127e41f4b71Sopenharmony_ci| -------- |-------------------------------| -------- |----------------------------------------------|
128e41f4b71Sopenharmony_ci| exceedMaxCountType | [MaxCountType](#maxcounttype) | 是 | 达到最大选择数量的类型。类型包含图片最大选择数量、视频最大选择数量以及总的最大选择数量。 |
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci## CurrentAlbumDeletedCallback<sup>13+</sup>
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_citype CurrentAlbumDeletedCallback = () => void
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci当前相册被删除时的回调事件。
135e41f4b71Sopenharmony_ci
136e41f4b71Sopenharmony_ci**原子化服务API:** 从API version 13开始,该接口支持在原子化服务中使用。
137e41f4b71Sopenharmony_ci
138e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
139e41f4b71Sopenharmony_ci
140e41f4b71Sopenharmony_ci## PickerController
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci应用可通过PickerController向picker组件发送数据。
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci**装饰器类型**:@Observed
145e41f4b71Sopenharmony_ci
146e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ci### setData
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_cisetData(dataType: DataType, data: Object): void
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci应用可通过该接口向picker组件发送数据,并通过DataType来区分具体发送什么类型的数据。
155e41f4b71Sopenharmony_ci
156e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
157e41f4b71Sopenharmony_ci
158e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
159e41f4b71Sopenharmony_ci
160e41f4b71Sopenharmony_ci**参数:**
161e41f4b71Sopenharmony_ci
162e41f4b71Sopenharmony_ci|  参数名        | 类型                                    | 必填  | 说明  |
163e41f4b71Sopenharmony_ci| ------------------------- | ------------------ | ----- | --------------- |
164e41f4b71Sopenharmony_ci| dataType | [DataType](#datatype) | 是 | 发送数据的数据类型。|
165e41f4b71Sopenharmony_ci| data | Object | 是 | 发送的数据。 | 
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci### setMaxSelected
168e41f4b71Sopenharmony_ci
169e41f4b71Sopenharmony_cisetMaxSelected(maxSelected: MaxSelected): void
170e41f4b71Sopenharmony_ci
171e41f4b71Sopenharmony_ci应用可通过该接口,实时地设置图片的最大选择数量、视频的最大选择数量以及总的最大选择数量。
172e41f4b71Sopenharmony_ci
173e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
174e41f4b71Sopenharmony_ci
175e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci**参数:**
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci|  参数名        | 类型                                    | 必填  | 说明     |
180e41f4b71Sopenharmony_ci| ------------------------- | ------------------ | ----- | --------------- |
181e41f4b71Sopenharmony_ci| maxSelected | [MaxSelected](#maxselected) | 是 | 最大选择数量。|
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci### setPhotoBrowserItem
184e41f4b71Sopenharmony_ci
185e41f4b71Sopenharmony_cisetPhotoBrowserItem(uri: string, photoBrowserRange?: PhotoBrowserRange): void
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ci应用可通过该接口,切换picker组件至大图浏览模式浏览图片;当已处于大图浏览模式时,切换浏览的图片。
188e41f4b71Sopenharmony_ci
189e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
190e41f4b71Sopenharmony_ci
191e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci**参数:**
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci|  参数名        | 类型                                    | 必填  | 说明  |
196e41f4b71Sopenharmony_ci| ------------------------- | ------------------ | ----- | --------------- |
197e41f4b71Sopenharmony_ci| uri | string | 是 | 指定大图浏览的图片uri。仅支持指定用户已选择的图片,未选择的图片不生效。|
198e41f4b71Sopenharmony_ci| photoBrowserRange | [PhotoBrowserRange](#photobrowserrange) | 否 | 打开大图浏览模式后,左右滑动切换浏览图片的范围,可配置仅浏览用户选择的或浏览全部图片,视频。默认:PhotoBrowserRange.ALL。浏览全部图片,视频。 | 
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci### exitPhotoBrowser<sup>13+</sup>
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ciexitPhotoBrowser(): void
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci应用可通过该接口,向picker发送退出大图的通知。
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci**原子化服务API**:从API version 13开始,该接口支持在原子化服务中使用。
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci### setPhotoBrowserUIElementVisibility<sup>13+</sup>
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_cisetPhotoBrowserUIElementVisibility(elements: Array&lt;PhotoBrowserUIElement&gt;, isVisible: boolean): void
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci应用可通过该接口,设置大图页大图预览组件外其他UI元素是否可见。不设置则默认可见。
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci**原子化服务API**:从API version 13开始,该接口支持在原子化服务中使用。
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
219e41f4b71Sopenharmony_ci
220e41f4b71Sopenharmony_ci**参数:**
221e41f4b71Sopenharmony_ci
222e41f4b71Sopenharmony_ci| 参数名         | 类型                                                             | 必填  | 说明                |
223e41f4b71Sopenharmony_ci|-------------|----------------------------------------------------------------| ----- |-------------------|
224e41f4b71Sopenharmony_ci| elements    | Array&lt;[PhotoBrowserUIElement](#photobrowseruielement13)&gt; | 是 | 大图页大图预览组件外其他UI元素。 |
225e41f4b71Sopenharmony_ci| isVisible | boolean                                                        | 是 | 是否可见。             |
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci## BaseItemInfo
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci图片、视频相关信息。
230e41f4b71Sopenharmony_ci
231e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
232e41f4b71Sopenharmony_ci
233e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci| 名称     | 类型    | 必填  | 说明                                                |
236e41f4b71Sopenharmony_ci|----------|--------|-----|---------------------------------------------------|
237e41f4b71Sopenharmony_ci| uri      | string                | 否   | 图片、视频的uri(itemType为ThUMBNAIL时支持,否则为空)。            |
238e41f4b71Sopenharmony_ci| mimeType | string                | 否   | 图片、视频的mimeType(itemType为ThUMBNAIL时支持,否则为空)。       |
239e41f4b71Sopenharmony_ci| width    | number                | 否   | 图片、视频的宽(单位:像素)(itemType为ThUMBNAIL时支持,否则为空)。       |
240e41f4b71Sopenharmony_ci| height   | number                | 否   | 图片、视频的高(单位:像素)(itemType为ThUMBNAIL时支持,否则为空)。       |
241e41f4b71Sopenharmony_ci| size     | number                | 否   | 图片、视频的大小(单位:千字节)(itemType为ThUMBNAIL时支持,否则为空)。     |
242e41f4b71Sopenharmony_ci| duration   | number                | 否   | 视频的时长(单位:毫秒),图片时返回-1(itemType为ThUMBNAIL时支持,否则为空)。 |
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci## ItemInfo
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci继承自[BaseItemInfo],仅含私有参数itemType
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci图片、视频相关信息。
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci| 名称     | 类型    | 必填  | 说明                                                |
255e41f4b71Sopenharmony_ci|----------|--------|-----|---------------------------------------------------|
256e41f4b71Sopenharmony_ci| itemType | [ItemType](#itemtype) | 否   | 被点击的item类型。包括缩略图item和相机item。                      |
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci## PhotoBrowserInfo
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci大图相关信息。
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci| 名称     | 类型    | 必填  | 说明     |
267e41f4b71Sopenharmony_ci|----------|--------|-----|---------|
268e41f4b71Sopenharmony_ci| animatorParams | [AnimatorParams](#animatorparams) | 否   | 进入、退出大图界面时的动效参数。 |
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ci## AnimatorParams
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci进退大图动效参数。
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci| 名称     | 类型    | 必填  | 说明           |
279e41f4b71Sopenharmony_ci|----------|--------|-----|--------------|
280e41f4b71Sopenharmony_ci| duration | number  | 否            | 动效时长(单位:毫秒)。 |
281e41f4b71Sopenharmony_ci| curve      | [Curve](../apis-arkui/js-apis-curve.md#curve) &verbar; [ICurve](../apis-arkui/js-apis-curve.md#icurve9) &verbar; string | 否   | 动效曲线。        |
282e41f4b71Sopenharmony_ci
283e41f4b71Sopenharmony_ci## MaxSelected
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci最大选择数量。
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci| 名称     | 类型    | 必填  | 说明     |
292e41f4b71Sopenharmony_ci|----------|--------|-----|---------|
293e41f4b71Sopenharmony_ci| data | Map&lt;[MaxCountType](#maxcounttype), number&gt; | 否             | 最大选择数量(包含图片的最大选择数量、视频的最大选择数量以及总的最大选择数量) |
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci## DataType
296e41f4b71Sopenharmony_ci
297e41f4b71Sopenharmony_ci枚举,PickerController向picker组件发送数据的数据类型。
298e41f4b71Sopenharmony_ci
299e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
300e41f4b71Sopenharmony_ci
301e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
302e41f4b71Sopenharmony_ci
303e41f4b71Sopenharmony_ci| 名称                | 值   | 说明                                                                                                                 |
304e41f4b71Sopenharmony_ci|-------------------|-----|--------------------------------------------------------------------------------------------------------------------|
305e41f4b71Sopenharmony_ci| SET_SELECTED_URIS | 1   | 发送已选择的数据列表,通知picker组件勾选状态刷新,需要传入string数组类型。<br>例如:应用在自己的页面中删除某张图片后,需要把剩下的已选择的数据列表通过setData接口通知到picker组件,从而触发picker组件勾选框状态刷新正确。 |
306e41f4b71Sopenharmony_ci| SET_ALBUM_URI | 2   | 应用按需设置图片的最大选择数量、视频的最大选择数量以及总的最大选择数量。 |
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci## ItemType
309e41f4b71Sopenharmony_ci
310e41f4b71Sopenharmony_ci被点击item的类型。
311e41f4b71Sopenharmony_ci
312e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
313e41f4b71Sopenharmony_ci
314e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
315e41f4b71Sopenharmony_ci
316e41f4b71Sopenharmony_ci| 名称                | 值   | 说明         |
317e41f4b71Sopenharmony_ci|-------------------|-----|------------|
318e41f4b71Sopenharmony_ci| THUMBNAIL | 0   | 图片、视频item(缩略图item)。 |
319e41f4b71Sopenharmony_ci| CAMERA | 1   | 相机item。    |
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci## ClickType
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci点击操作的类型。
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
326e41f4b71Sopenharmony_ci
327e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
328e41f4b71Sopenharmony_ci
329e41f4b71Sopenharmony_ci| 名称                | 值   | 说明                     |
330e41f4b71Sopenharmony_ci|-------------------|-----|------------------------|
331e41f4b71Sopenharmony_ci| SELECTED | 0   | 选择操作(勾选图片或者点击相机item)。 |
332e41f4b71Sopenharmony_ci| DESELECTED | 1   | 取消选择操作(取消勾选图片)。       |
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci## PickerOrientation
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ciPicker宫格页面滑动预览的方向。(该能力暂不支持)
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
339e41f4b71Sopenharmony_ci
340e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
341e41f4b71Sopenharmony_ci
342e41f4b71Sopenharmony_ci| 名称                | 值   | 说明    |
343e41f4b71Sopenharmony_ci|-------------------|-----|-------|
344e41f4b71Sopenharmony_ci| VERTICAL | 0   | 竖直方向。 |
345e41f4b71Sopenharmony_ci| HORIZONTAL | 1   | 水平方向。 |
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci## SelectMode
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci选择模式。
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci| 名称                | 值   | 说明    |
356e41f4b71Sopenharmony_ci|-------------------|-----|-------|
357e41f4b71Sopenharmony_ci| SINGLE_SELECT | 0   | 单选模式。 |
358e41f4b71Sopenharmony_ci| MULTI_SELECT | 1   | 多选模式。 |
359e41f4b71Sopenharmony_ci
360e41f4b71Sopenharmony_ci## PickerColorMode
361e41f4b71Sopenharmony_ci
362e41f4b71Sopenharmony_ciPicker的颜色模式。
363e41f4b71Sopenharmony_ci
364e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
365e41f4b71Sopenharmony_ci
366e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core367e41f4b71Sopenharmony_ci
368e41f4b71Sopenharmony_ci| 名称                | 值   | 说明    |
369e41f4b71Sopenharmony_ci|-------------------|-----|-------|
370e41f4b71Sopenharmony_ci| AUTO | 0   | 跟随系统。 |
371e41f4b71Sopenharmony_ci| LIGHT | 1   | 浅色模式。 |
372e41f4b71Sopenharmony_ci| DARK | 2   | 深色模式。 |
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci## ReminderMode
375e41f4b71Sopenharmony_ci
376e41f4b71Sopenharmony_ci最大选择数量提示方式。
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
381e41f4b71Sopenharmony_ci
382e41f4b71Sopenharmony_ci| 名称                | 值   | 说明        |
383e41f4b71Sopenharmony_ci|-------------------|-----|-----------|
384e41f4b71Sopenharmony_ci| NONE | 0   | 不提示。      |
385e41f4b71Sopenharmony_ci| TOAST | 1   | 弹toast提示。 |
386e41f4b71Sopenharmony_ci| MASK | 2   | 蒙灰提示。     |
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci## MaxCountType
389e41f4b71Sopenharmony_ci
390e41f4b71Sopenharmony_ci最大选择数量的类型。
391e41f4b71Sopenharmony_ci
392e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
393e41f4b71Sopenharmony_ci
394e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
395e41f4b71Sopenharmony_ci
396e41f4b71Sopenharmony_ci| 名称                | 值   | 说明                        |
397e41f4b71Sopenharmony_ci|-------------------|-----|---------------------------|
398e41f4b71Sopenharmony_ci| TOTAL_MAX_COUNT | 0   | 总的最大选择数量。                 |
399e41f4b71Sopenharmony_ci| PHOTO_MAX_COUNT | 1   | 图片的最大选择数量(不能大于总的最大选择数量)。 |
400e41f4b71Sopenharmony_ci| VIDEO_MAX_COUNT | 2   | 视频的最大选择数量(不能大于总的最大选择数量)。 |
401e41f4b71Sopenharmony_ci
402e41f4b71Sopenharmony_ci## PhotoBrowserRange
403e41f4b71Sopenharmony_ci
404e41f4b71Sopenharmony_ci打开大图浏览模式后,左右滑动切换浏览图片的范围。
405e41f4b71Sopenharmony_ci
406e41f4b71Sopenharmony_ci**原子化服务API**:从API version 12开始,该接口支持在原子化服务中使用。
407e41f4b71Sopenharmony_ci
408e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
409e41f4b71Sopenharmony_ci
410e41f4b71Sopenharmony_ci| 名称                | 值   | 说明                        |
411e41f4b71Sopenharmony_ci|-------------------|-----|---------------------------|
412e41f4b71Sopenharmony_ci| ALL | 0   | 全部图片,视频。                 |
413e41f4b71Sopenharmony_ci| SELECTED_ONLY | 1   | 仅用户已选择的图片,视频。 |
414e41f4b71Sopenharmony_ci
415e41f4b71Sopenharmony_ci## PhotoBrowserUIElement<sup>13+</sup>
416e41f4b71Sopenharmony_ci
417e41f4b71Sopenharmony_ci大图页大图预览组件外其他UI元素。
418e41f4b71Sopenharmony_ci
419e41f4b71Sopenharmony_ci**原子化服务API**:从API version 13开始,该接口支持在原子化服务中使用。
420e41f4b71Sopenharmony_ci
421e41f4b71Sopenharmony_ci**系统能力**:SystemCapability.FileManagement.PhotoAccessHelper.Core
422e41f4b71Sopenharmony_ci
423e41f4b71Sopenharmony_ci| 名称          | 值   | 说明       |
424e41f4b71Sopenharmony_ci|-------------|-----|----------|
425e41f4b71Sopenharmony_ci| CHECKBOX    | 0   | 大图页勾选框。  |
426e41f4b71Sopenharmony_ci| BACK_BUTTON | 1   | 大图页返回按钮。 |
427e41f4b71Sopenharmony_ci
428e41f4b71Sopenharmony_ci## 示例
429e41f4b71Sopenharmony_ci
430e41f4b71Sopenharmony_ci```ts
431e41f4b71Sopenharmony_ci// xxx.ets
432e41f4b71Sopenharmony_ciimport {
433e41f4b71Sopenharmony_ci  PhotoPickerComponent, PickerController, PickerOptions,
434e41f4b71Sopenharmony_ci  DataType, BaseItemInfo, ItemInfo, PhotoBrowserInfo, AnimatorParams,
435e41f4b71Sopenharmony_ci  MaxSelected, ItemType, ClickType, PickerOrientation,
436e41f4b71Sopenharmony_ci  SelectMode, PickerColorMode, ReminderMode, MaxCountType, PhotoBrowserRange, PhotoBrowserUIElement,
437e41f4b71Sopenharmony_ci  ItemsDeletedCallback, ExceedMaxSeletedCallback, CurrentAlbumDeletedCallback
438e41f4b71Sopenharmony_ci} from '@ohos.file.PhotoPickerComponent';
439e41f4b71Sopenharmony_ciimport photoAccessHelper from '@ohos.file.photoAccessHelper';
440e41f4b71Sopenharmony_ci
441e41f4b71Sopenharmony_ci@Entry
442e41f4b71Sopenharmony_ci@Component
443e41f4b71Sopenharmony_cistruct PickerDemo {
444e41f4b71Sopenharmony_ci  pickerOptions: PickerOptions = new PickerOptions();
445e41f4b71Sopenharmony_ci  @State pickerController: PickerController = new PickerController();
446e41f4b71Sopenharmony_ci  @State selectUris: Array<string> = new Array<string>();
447e41f4b71Sopenharmony_ci  @State currentUri: string = '';
448e41f4b71Sopenharmony_ci  @State isBrowserShow: boolean = false;
449e41f4b71Sopenharmony_ci  private selectedItemsDeletedCallback: ItemsDeletedCallback = (baseItemInfos: Array<BaseItemInfo>) => this.onSelectedItemsDeleted(recentPhotoExists);
450e41f4b71Sopenharmony_ci  private exceedMaxSeletedCallback: ExceedMaxSeletedCallback = (exceedMaxCountType: MaxCountType) => this.onExceedMaxSelected(recentPhotoInfo);
451e41f4b71Sopenharmony_ci  private currentAlbumDeletedCallback: CurrentAlbumDeletedCallback = () => this.onCurrentAlbumDeleted();
452e41f4b71Sopenharmony_ci
453e41f4b71Sopenharmony_ci  aboutToAppear() {
454e41f4b71Sopenharmony_ci    this.pickerOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_VIDEO_TYPE;
455e41f4b71Sopenharmony_ci    this.pickerOptions.maxSelectNumber = 5;
456e41f4b71Sopenharmony_ci    this.pickerOptions.isSearchSupported = false;
457e41f4b71Sopenharmony_ci    this.pickerOptions.isPhotoTakingSupported = false;
458e41f4b71Sopenharmony_ci    this.pickerOptions.photoBrowserCheckboxPosition = [0.5, 0.5];
459e41f4b71Sopenharmony_ci    // 其他属性.....
460e41f4b71Sopenharmony_ci  }
461e41f4b71Sopenharmony_ci  
462e41f4b71Sopenharmony_ci  private onSelect(uri: string): void {
463e41f4b71Sopenharmony_ci    // 添加
464e41f4b71Sopenharmony_ci    if (uri) {
465e41f4b71Sopenharmony_ci      this.selectUris.push(uri);
466e41f4b71Sopenharmony_ci    }
467e41f4b71Sopenharmony_ci  }
468e41f4b71Sopenharmony_ci
469e41f4b71Sopenharmony_ci  private onDeselect(uri: string): void {
470e41f4b71Sopenharmony_ci    // 移除
471e41f4b71Sopenharmony_ci    if (uri) {
472e41f4b71Sopenharmony_ci      this.selectUris = this.selectUris.filter((item: string) => {
473e41f4b71Sopenharmony_ci        return item != uri;
474e41f4b71Sopenharmony_ci      })
475e41f4b71Sopenharmony_ci    }
476e41f4b71Sopenharmony_ci  }
477e41f4b71Sopenharmony_ci  
478e41f4b71Sopenharmony_ci  private onItemClicked(itemInfo: ItemInfo, clickType: ClickType): boolean {
479e41f4b71Sopenharmony_ci    if (!itemInfo) {
480e41f4b71Sopenharmony_ci       return false;
481e41f4b71Sopenharmony_ci    }
482e41f4b71Sopenharmony_ci    let type: ItemType | undefined = itemInfo.itemType;
483e41f4b71Sopenharmony_ci    let uri: string | undefined = itemInfo.uri;
484e41f4b71Sopenharmony_ci    if (type === ItemType.CAMERA) {
485e41f4b71Sopenharmony_ci      // 点击相机item
486e41f4b71Sopenharmony_ci      return true; // 返回true则拉起系统相机,若应用需要自行处理则返回false。
487e41f4b71Sopenharmony_ci    } else {
488e41f4b71Sopenharmony_ci      if (clickType === ClickType.SELECTED) {
489e41f4b71Sopenharmony_ci        // 应用做自己的业务处理
490e41f4b71Sopenharmony_ci        if (uri) {
491e41f4b71Sopenharmony_ci          this.selectUris.push(uri);
492e41f4b71Sopenharmony_ci          this.pickerOptions.preselectedUris = [...this.selectUris];
493e41f4b71Sopenharmony_ci        }
494e41f4b71Sopenharmony_ci        return true; // 返回true则勾选,否则则不响应勾选。
495e41f4b71Sopenharmony_ci      } else {
496e41f4b71Sopenharmony_ci        if (uri) {
497e41f4b71Sopenharmony_ci          this.selectUris = this.selectUris.filter((item: string) => {
498e41f4b71Sopenharmony_ci          return item != uri;
499e41f4b71Sopenharmony_ci          });
500e41f4b71Sopenharmony_ci          this.pickerOptions.preselectedUris = [...this.selectUris];
501e41f4b71Sopenharmony_ci        }
502e41f4b71Sopenharmony_ci      }
503e41f4b71Sopenharmony_ci      return true;
504e41f4b71Sopenharmony_ci    }
505e41f4b71Sopenharmony_ci  }
506e41f4b71Sopenharmony_ci  
507e41f4b71Sopenharmony_ci  private onEnterPhotoBrowser(photoBrowserInfo: PhotoBrowserInfo): boolean {
508e41f4b71Sopenharmony_ci    // 进入大图的回调
509e41f4b71Sopenharmony_ci    this.isBrowserShow = true;
510e41f4b71Sopenharmony_ci    return true;
511e41f4b71Sopenharmony_ci  }
512e41f4b71Sopenharmony_ci  
513e41f4b71Sopenharmony_ci  private onExitPhotoBrowser(photoBrowserInfo: PhotoBrowserInfo): boolean {
514e41f4b71Sopenharmony_ci    // 退出大图的回调
515e41f4b71Sopenharmony_ci    this.isBrowserShow = false;
516e41f4b71Sopenharmony_ci    return true;
517e41f4b71Sopenharmony_ci  }
518e41f4b71Sopenharmony_ci  
519e41f4b71Sopenharmony_ci  private onPickerControllerReady(): void {
520e41f4b71Sopenharmony_ci    // 接收到该回调后,便可通过pickerController相关接口向picker发送数据,在此之前不生效。
521e41f4b71Sopenharmony_ci    let elements: number[] = [PhotoBrowserUIElement.BACK_BUTTON];
522e41f4b71Sopenharmony_ci    this.pickerController.setPhotoBrowserUIElementVisibility(elements, false); // 设置大图页不显示返回按钮
523e41f4b71Sopenharmony_ci  }
524e41f4b71Sopenharmony_ci
525e41f4b71Sopenharmony_ci  private onPhotoBrowserChanged(browserItemInfo: BaseItemInfo): boolean {
526e41f4b71Sopenharmony_ci    // 大图左右滑动的回调
527e41f4b71Sopenharmony_ci    this.currentUri = browserItemInfo.uri ?? '';
528e41f4b71Sopenharmony_ci    return true;
529e41f4b71Sopenharmony_ci  }
530e41f4b71Sopenharmony_ci
531e41f4b71Sopenharmony_ci  private onSelectedItemsDeleted(baseItemInfos: Array<BaseItemInfo>): void {
532e41f4b71Sopenharmony_ci    // 已勾选图片被删除时的回调
533e41f4b71Sopenharmony_ci  }
534e41f4b71Sopenharmony_ci
535e41f4b71Sopenharmony_ci  private onExceedMaxSelected(exceedMaxCountType: MaxCountType): void {
536e41f4b71Sopenharmony_ci    // 超过最大选择数量再次点击时的回调
537e41f4b71Sopenharmony_ci  }
538e41f4b71Sopenharmony_ci
539e41f4b71Sopenharmony_ci  private onCurrentAlbumDeleted(): void {
540e41f4b71Sopenharmony_ci    // 当前相册被删除时的回调
541e41f4b71Sopenharmony_ci  }
542e41f4b71Sopenharmony_ci
543e41f4b71Sopenharmony_ci  build() {
544e41f4b71Sopenharmony_ci    Flex({
545e41f4b71Sopenharmony_ci      direction: FlexDirection.Column,
546e41f4b71Sopenharmony_ci      justifyContent: FlexAlign.Center,
547e41f4b71Sopenharmony_ci      alignItems: ItemAlign.Center
548e41f4b71Sopenharmony_ci    }) {
549e41f4b71Sopenharmony_ci      Column() {
550e41f4b71Sopenharmony_ci        if (this.isBrowserShow) {
551e41f4b71Sopenharmony_ci          // 这里模拟应用自己的大图返回按钮
552e41f4b71Sopenharmony_ci          Row() {
553e41f4b71Sopenharmony_ci            Button("退出大图").width('33%').height('8%').onClick(() => {
554e41f4b71Sopenharmony_ci              this.pickerController.exitPhotoBrowser();
555e41f4b71Sopenharmony_ci            })
556e41f4b71Sopenharmony_ci          }.margin({ bottom: 20 })
557e41f4b71Sopenharmony_ci        }
558e41f4b71Sopenharmony_ci
559e41f4b71Sopenharmony_ci        PhotoPickerComponent({
560e41f4b71Sopenharmony_ci          pickerOptions: this.pickerOptions,
561e41f4b71Sopenharmony_ci          // onSelect: (uri: string): void => this.onSelect(uri),
562e41f4b71Sopenharmony_ci          // onDeselect: (uri: string): void => this.onDeselect(uri),
563e41f4b71Sopenharmony_ci          onItemClicked: (itemInfo: ItemInfo, clickType: ClickType): boolean => this.onItemClicked(itemInfo, clickType), // 该接口可替代上面两个接口
564e41f4b71Sopenharmony_ci          onEnterPhotoBrowser: (photoBrowserInfo: PhotoBrowserInfo): boolean => this.onEnterPhotoBrowser(photoBrowserInfo),
565e41f4b71Sopenharmony_ci          onExitPhotoBrowser: (photoBrowserInfo: PhotoBrowserInfo): boolean => this.onExitPhotoBrowser(photoBrowserInfo),
566e41f4b71Sopenharmony_ci          onPickerControllerReady: (): void => this.onPickerControllerReady(),
567e41f4b71Sopenharmony_ci          onPhotoBrowserChanged: (browserItemInfo: BaseItemInfo): boolean => this.onPhotoBrowserChanged(browserItemInfo),
568e41f4b71Sopenharmony_ci          onSelectedItemsDeleted?: this.selectedItemsDeletedCallback,
569e41f4b71Sopenharmony_ci          onExceedMaxSelected?: this.exceedMaxSeletedCallback,
570e41f4b71Sopenharmony_ci          onCurrentAlbumDeleted?: this.currentAlbumDeletedCallback,
571e41f4b71Sopenharmony_ci          pickerController: this.pickerController,
572e41f4b71Sopenharmony_ci        }).height('60%').width('100%')
573e41f4b71Sopenharmony_ci
574e41f4b71Sopenharmony_ci        // 这里模拟应用侧底部的选择栏
575e41f4b71Sopenharmony_ci        if (this.isBrowserShow) {
576e41f4b71Sopenharmony_ci          Row() {
577e41f4b71Sopenharmony_ci            ForEach(this.selectUris, (uri: string) => {
578e41f4b71Sopenharmony_ci              if (uri === this.currentUri) {
579e41f4b71Sopenharmony_ci                Image(uri).height('10%').width('10%').onClick(() => {
580e41f4b71Sopenharmony_ci                }).borderWidth(1).borderColor('red')
581e41f4b71Sopenharmony_ci              } else {
582e41f4b71Sopenharmony_ci                Image(uri).height('10%').width('10%').onClick(() => {
583e41f4b71Sopenharmony_ci                  this.pickerController.setData(DataType.SET_SELECTED_URIS, this.selectUris);
584e41f4b71Sopenharmony_ci                  this.pickerController.setPhotoBrowserItem(uri, PhotoBrowserRange.ALL);
585e41f4b71Sopenharmony_ci                })
586e41f4b71Sopenharmony_ci              }
587e41f4b71Sopenharmony_ci            }, (uri: string) => JSON.stringify(uri))
588e41f4b71Sopenharmony_ci          }
589e41f4b71Sopenharmony_ci        } else {
590e41f4b71Sopenharmony_ci          Button('预览').width('33%').height('5%').onClick(() => {
591e41f4b71Sopenharmony_ci            if (this.selectUris.length > 0) {
592e41f4b71Sopenharmony_ci              this.pickerController.setPhotoBrowserItem(this.selectUris[0], PhotoBrowserRange.SELECTED_ONLY);
593e41f4b71Sopenharmony_ci            }
594e41f4b71Sopenharmony_ci          })
595e41f4b71Sopenharmony_ci        }
596e41f4b71Sopenharmony_ci      }
597e41f4b71Sopenharmony_ci    }
598e41f4b71Sopenharmony_ci  }
599e41f4b71Sopenharmony_ci}
600e41f4b71Sopenharmony_ci```
601