支持拍照缩放增删的图片选择器

2024-06-15 10:58

本文主要是介绍支持拍照缩放增删的图片选择器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

仔细想了一下,一个项目中居然有5处引用到图片选择器:IM聊天页面的发送图片、聊天设置的选择背景图、工作圈发布动态的图片、预约线下会议的上传附图、邮箱的上传附图。如果每处都单独设计图片选择器,这样太占用APP资源了,不符合封装与共享思想,后来干脆把图片选择器封装成一个公共模块,以便其他模块调用。该选择器支持图片预览、缩放、拖动、增加与删除,可设置是否支持拍照、是否支持GIF动态图,设置选择图片最大数量,利用glide加载本地图片,利用recyclerView与fresco展示选中的图片,对选中的图片也可以点击查看全图。本文主要针对工作圈发布动态用到的图片选择器进行介绍,先看下效果图:


首先,需要在gradle添加依赖:

    compile 'com.android.support:recyclerview-v7:23.2.0'compile 'com.github.bumptech.glide:glide:3.7.0'compile 'com.facebook.fresco:fresco:0.8.0+'
读取本地图片需要权限,那么在manifest.xml添加上:

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

为了不同像素的手机屏幕适配,得获取手机像素去设置对应宽度、高度:

        ScreenConfig.context = context;DisplayMetrics dm = context.getResources().getDisplayMetrics();screen_width_px = dm.widthPixels;screen_height_px = dm.widthPixels;screen_density = dm.density;screen_width_dp = dm.widthPixels/dm.density;screen_height_dp = dm.widthPixels/dm.density;
<pre name="code" class="java">        ViewGroup.LayoutParams lp = rv_photo_picker.getLayoutParams();int albumWidth = (int) (ScreenConfig.screen_width_px - ScreenConfig.screen_density * 17 * 2);lp.width = albumWidth;

 
另外初始化fresco: 

        //fresco初始化ImagePipelineConfig config = ImagePipelineConfig.newBuilder(context).setDownsampleEnabled(true).build();Fresco.initialize( context, config );
图片选择器的核心部分,设置选择图片最大数量、是否支持拍照、是否支持GIF动态图、是否支持预览:

        PhotoPicker.builder().setPhotoCount(MAX - list.size())//设置最大数量.setShowCamera(true)//设置支持拍照.setShowGif(false)//设置不支持GIF动态图.setPreviewEnabled(true)//设置支持预览.start((Activity) context, PhotoPicker.REQUEST_CODE);//启动加载
glide加载本地图片:

       Glide.with(context).load(new File(path))//图片路径.centerCrop()//中心对齐.dontAnimate()//加载动画.thumbnail(0.5f)//缩略图.override(imageSize, imageSize)//图片尺寸.placeholder(com.frank.photopicker.R.drawable.__picker_ic_photo_black_48dp)//加载过程中.error(com.frank.photopicker.R.drawable.__picker_ic_broken_image_black_48dp)//加载出错.into(viewHolder.getIv(R.id.image));//绑定控件
点击图片右上角图标删除:

       viewHolder.getIv(R.id.imageDel).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {list.remove(position);notifyDataSetChanged();}});

点击选中图片,进行预览:

       viewHolder.getIv(R.id.image).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {FrescoImageView.PhotoPreview.builder().setPhotos(list).setCurrentItem(position).start((Activity) context);}});

好了,直到这里图片选择器的实现过程与功能介绍完毕,希望对读者有所帮助。如果需要查看完整demo过程,可以点击这里下载: http://download.csdn.net/detail/u011686167/9635368


这篇关于支持拍照缩放增删的图片选择器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063259

相关文章

Java使用Spire.Doc for Java实现Word自动化插入图片

《Java使用Spire.DocforJava实现Word自动化插入图片》在日常工作中,Word文档是不可或缺的工具,而图片作为信息传达的重要载体,其在文档中的插入与布局显得尤为关键,下面我们就来... 目录1. Spire.Doc for Java库介绍与安装2. 使用特定的环绕方式插入图片3. 在指定位

Python多任务爬虫实现爬取图片和GDP数据

《Python多任务爬虫实现爬取图片和GDP数据》本文主要介绍了基于FastAPI开发Web站点的方法,包括搭建Web服务器、处理图片资源、实现多任务爬虫和数据可视化,同时,还简要介绍了Python爬... 目录一. 基于FastAPI之Web站点开发1. 基于FastAPI搭建Web服务器2. Web服务

golang实现nacos获取配置和服务注册-支持集群详解

《golang实现nacos获取配置和服务注册-支持集群详解》文章介绍了如何在Go语言中使用Nacos获取配置和服务注册,支持集群初始化,客户端结构体中的IpAddresses可以配置多个地址,新客户... 目录golang nacos获取配置和服务注册-支持集群初始化客户端可选参数配置new一个客户端 支

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)

《uni-app小程序项目中实现前端图片压缩实现方式(附详细代码)》在uni-app开发中,文件上传和图片处理是很常见的需求,但也经常会遇到各种问题,下面:本文主要介绍uni-app小程序项目中实... 目录方式一:使用<canvas>实现图片压缩(推荐,兼容性好)示例代码(小程序平台):方式二:使用uni

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

Android实现图片浏览功能的示例详解(附带源码)

《Android实现图片浏览功能的示例详解(附带源码)》在许多应用中,都需要展示图片并支持用户进行浏览,本文主要为大家介绍了如何通过Android实现图片浏览功能,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo