打造一款图片选择控件《ImageSelectView》 原创
当我们做发布帖子或者评论的功能时,往往可以发布图片,这就需要我们开发从手机的相册选择图片的功能。先看效果。
一、图片选择控件ImageSelectView功能
(1)可以控制选择图片数量
(2)选择图片按钮一直处于图片最后一个,且图片数量达到最大,按钮消失
(3)删除已选某张图片
(4)替换某张已选图片
二、读取设备相册涉及的权限问题
一般应用获取“存储”权限后,就能读取到手机内部存储上所有的文件,包含所有的照片,这就产生了隐私风险:它就可以在用户毫无感知的情况下,分析用户的文件和图片,将隐私“偷走“。
但是,用户通常不希望授予应用对其所有照片和视频的访问权限,因此,HarmonyOS在API9以后引入了Picker选择器,在保证用户正常的数据访问述求的同时,最小化减少应用的数据泄露。避免全量数据的授权,降低授权的颗粒度,例如用户在发送图片时,只想让应用访问到用户想要发送的。
所以我们使用系统的PhotoViewPicker来作为图片选择的核心组件,这样既安全也省去了申请权限的步骤。
三、核心逻辑实现
(1)配置可选图片数量
使用状态变量来控制每次选择图片最多选择的数量。以默认最大为9张为例,每次选择图片后,下次可选择图片数量为9减去已选择图片的数量。
(2)当选择图片数量到达最大时,添加按钮需要消失掉
使用数组来临时存储已选图片的路径,其中最后一个元素为默认的“选择”按钮。我们通过@Watch监听此数组的实时变化。
(3)如何删除已选图片
使用数组的splice方法,将指定坐标的元素删除
(4)已选的图片如何将某张图片进行重新选择?
依然使用PhotoViewPicker组件进行图片的选择,将回调中的图片路径替换到指定坐标的元素。
四、完整代码实现
五、如何使用
我优化了一些内容