热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android超高仿微信图片多选、单选,图片剪切,图片预览,拍照等功能

github地址:https:github.comionedayImageSelector实现了微信图片选择的所有功能单选、多选单选,没有预览功能。多选,可以控制最

github地址:
https://github.com/ioneday/ImageSelector


实现了微信图片选择的所有功能

  • 单选、多选
    • 单选,没有预览功能。
    • 多选,可以控制最大 选择图片数量
  • 拍照
    • 解决了三星拍照横屏的bug
    • 关闭拍照后,第一个item将不显示拍照选项
  • 预览
    • 开启预览功能后,点击图片或右下角预览进入预览界面。
    • 关闭后,点击图片为选择功能
    • 进入预览界面后,依然可以,选择或取消选择
  • 剪切
    • 只有单选模式下,才能打开剪切功能。
    • 默认只能剪切正方形,可自定义

实现效果:

微信相似度 95%

这里写图片描述这里写图片描述这里写图片描述这里写图片描述这里写图片描述

代码结构

这里写图片描述

快速开始

1) 添加以下依赖

dependencies {
compile 'com.android.support:recyclerview-v7:22.2.1'
compile 'com.github.bumptech.glide:glide:3.6.1'
compile 'com.commit451:PhotoView:1.2.4'
compile 'com.isseiaoki:simplecropview:1.0.13'
compile 'com.yongchun:com.yongchun.imageselector:1.1.0'
}

2) 在 AndroidManifest.xml 添加权限,并注册相关Activity

"android.permission.READ_EXTERNAL_STORAGE" />
"android.permission.WRITE_EXTERNAL_STORAGE"/>
"com.yongchun.library.view.ImageSelectorActivity"/>
"com.yongchun.library.view.ImagePreviewActivity"/>
"com.yongchun.library.view.ImageCropActivity"/>

3) 设置相关必要参数

ImageSelectorActivity.start(MainActivity.this, maxSelectNum, mode, isShow,isPreview,isCrop);

上面的代码等同于:

public static void start(Activity activity, int maxSelectNum, int mode, boolean isShow, boolean enablePreview, boolean enableCrop) {
Intent intent = new Intent(activity, ImageSelectorActivity.class);
intent.putExtra(EXTRA_MAX_SELECT_NUM, maxSelectNum);
intent.putExtra(EXTRA_SELECT_MODE, mode);
intent.putExtra(EXTRA_SHOW_CAMERA, isShow);
intent.putExtra(EXTRA_ENABLE_PREVIEW, enablePreview);
intent.putExtra(EXTRA_ENABLE_CROP, enableCrop);
activity.startActivityForResult(intent, REQUEST_IMAGE);
}

4) 在 onActivityResult 回调中接收选择的图片

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(resultCode == RESULT_OK && requestCode == ImageSelectorActivity.REQUEST_IMAGE){
ArrayList images = (ArrayList) data.getSerializableExtra(ImageSelectorActivity.REQUEST_OUTPUT);
// do something
}
}

使用的第三方库有:

Glide(快速加载图片,不会卡顿,不会OOM)
PhotoView(双击放大图片,旋转图片等功能)
simplecropview(自定义剪切比例,尺寸)

欢迎Star、Fork

github地址:
https://github.com/ioneday/ImageSelector


推荐阅读
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • Android开发实现的计时器功能示例
    本文分享了Android开发实现的计时器功能示例,包括效果图、布局和按钮的使用。通过使用Chronometer控件,可以实现计时器功能。该示例适用于Android平台,供开发者参考。 ... [详细]
author-avatar
qqian
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有