PictureSelector

Android 图片选择器(仿 IOS 图片选择控件)

效果图

功能特点

支持通过拍照获取图片

支持通过相册获取图片

支持图片是否裁剪两种场景

支持仿 IOS 底部弹出选择菜单 ActionSheet 效果

适配 Android Q 版本

使用

Step 1. 添加 JitPack 仓库

在项目的 build.gradle 添加 JitPack 仓库

allprojects {

repositories {

maven { url "https://jitpack.io" }

}

}

Step 2. 添加依赖

在需要使用的 module 中添加依赖

注意:从 2.0.0 版本开始,项目迁移到 AndroidX。如果你的项目还未迁移到 AndroidX,可以使用 1.2.0 版本。

dependencies {

implementation 'com.github.wildma:PictureSelector:2.1.0'

}

Step 3. 拍照或者从相册选择图片

使用场景:

不裁剪

PictureSelector

.create(MainActivity.this, PictureSelector.SELECT_REQUEST_CODE)

.selectPicture(false);

自由裁剪

PictureSelector

.create(MainActivity.this, PictureSelector.SELECT_REQUEST_CODE)

.selectPicture(true);

指定宽高及宽高比例裁剪

PictureSelector

.create(MainActivity.this, PictureSelector.SELECT_REQUEST_CODE)

.selectPicture(true, 200, 200, 1, 1);

参数解释:

create():参数一是上下文,在 activity 中传 activity.this,在 fragment 中传 fragment.this。参数二是请求码,用于结果回调 onActivityResult() 中判断。

selectPicture():参数分别为是否裁剪、裁剪后图片的宽(单位 px)、裁剪后图片的高、宽比例、高比例。

Step 4. 获取图片地址进行显示

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

/*结果回调*/

if (requestCode == PictureSelector.SELECT_REQUEST_CODE) {

if (data != null) {

PictureBean pictureBean = data.getParcelableExtra(PictureSelector.PICTURE_RESULT);

if (pictureBean.isCut()) {

mIvImage.setImageBitmap(BitmapFactory.decodeFile(pictureBean.getPath()));

} else {

mIvImage.setImageURI(pictureBean.getUri());

}

//使用 Glide 加载图片

/*Glide.with(this)

.load(pictureBean.isCut() ? pictureBean.getPath() : pictureBean.getUri())

.apply(RequestOptions.centerCropTransform()).into(mIvImage);*/

}

}

}

清理缓存

实际开发中将图片上传到服务器成功后需要删除全部缓存图片(即裁剪后的无用图片),调用如下方法即可:

FileUtils.deleteAllCacheImage(this);

注意

如果你没有使用依赖的方式,而是直接拷贝源码到你的项目中使用。那么需要自己适配 Android 7.0 导致的 FileUriExposedException 异常,具体方式如下:

将 PictureSelectUtils 中的 authority 与你项目中 AndroidManifest.xml 下的 authority 保持一致。

例如 AndroidManifest.xml 下的 authority 为:

android:authorities="myAuthority"

则需要修改 PictureSelectUtils 中的 authority( 这一行) 为:

String authority = "myAuthority";

android 仿照ios 图片选择,GitHub - wildma/PictureSelector: Android 图片选择器(仿 IOS 图片选择控件)...相关推荐

  1. android 位于底部的tab,GitHub - DevinFu/BottomTabBar: Android应用中位于底部的tab栏

    BottomTabBar 说明:此控件是在Jack Tony: 的BottomTabBar项目基础上进行的改造,原项目地址:https://github.com/tianzhijiexian/Bott ...

  2. android 商品筛选view,FilterTabView 基于 Popupwindow 实现的筛选房源信息等相关的控件,可以自由排序 @codeKK Android开源站...

    基于 Popupwindow 的下拉筛选控件 功能 区分 支持区域二级联动选择 FilterTabConfig.FILTER_TYPE_AREA 支持单行 List 样式选择 FilterTabCon ...

  3. H5实现多图片预览上传,可点击可拖拽控件介绍

    在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到上传框直接上传,方便,好用,接口也简单,基本可以直接放到项目里使用. 先看看他的样式: 选择图片后: $( ...

  4. Android仿同花顺自选股列表控件

    介绍 RecyclerView的开发中,我们通常会遇到一行显示不下内容的情况,产品会要求我们的item是可以滚动的,并且头部是固定的.特别在股票行情类相关的app上,这样的场景是非常多的,所以封装了如 ...

  5. Android kotlin 将Base64字符串转换成Bitmap,并在jetpack compose的Image控件中显示

    Android kotlin 将Base64字符串转换成Bitmap 前言 代码 将Base64字符串转换成Bitmap 在jetpack compose的Image控件中显示Bitmap 完事 前言 ...

  6. Android入门到精通|安卓/Android开发零基础系列Ⅱ【职坐标】-学习笔记(1)-- 常用控件及资源介绍

    前言 为了巩固Android基础知识,回顾一下学习内容,才有此学习笔记. IDE Androdi Studio 4 + Genymotion 创建项目 修改项目的 build.gradle,添加国内镜 ...

  7. Android仿苹果siri浮动控件

    实现原理是用WindowManager添加视图,生命周期可以不跟随某一页面或某一应用,可以全屏浮动(状态栏除外).只有一个主类FloatView.在应用中new一下就可以显示了. 需要添加权限:< ...

  8. android酷狗下拉,Android 仿酷狗滑动控件实现 流畅运行

    最近又浏览了一遍github上的开源项目,有感于大神们的强大,所以想搞搞像kugou那样左右滑动的侧滑菜单控件. 打开移动设备的kugou软件,看了下整体效果,就知道了,我们要实现一个左侧主页,右侧菜 ...

  9. Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】

    前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...

最新文章

  1. Ruby开发环境配置
  2. AppCan用cookie实现记住密码功能 [APP]
  3. fd_set struct
  4. git 版本控制器 初学习,工作中的问题及其解决方法
  5. 基于jquery的侧边栏分享导航
  6. source ~/.bashrc 什么意思
  7. python怎么清空屏幕_python如何清屏
  8. 网络知识:详解各种路由器组网方法!
  9. 飞行计算机人机工程,人机工程学版
  10. C#获取文件夹及文件的大小与占用空间的方法
  11. 小明滚出---响应对象HttpServletResponse和请求对象HttpServletRequest实例
  12. python 开发工具_「干货」推荐一整套 Python 开发工具
  13. php 个人中心常见界面,UI设计灵感:个人中心界面设计(User Profile)
  14. python计算器函数图像_Python图形计算器,python,图像,化
  15. MongoDB管理工具studio 3t ,解决到期问题
  16. Gromacs动力学模拟
  17. Rplidar学习(四)—— ROS下进行rplidar雷达数据采集源码分析
  18. 优秀的java程序员怎么写注释的
  19. Pygame(三)画圆
  20. Mina中的Kimchi SNARK

热门文章

  1. 图解HTTP 学习笔记
  2. 事件10016,RuntimeBroker无法编辑
  3. 差速机器人的纯轨迹跟踪仿真(Matlab)
  4. VS2019 c# 中国移动云mas平台 webservice实现
  5. 用matlab拟合多元函,matlab 多元函数拟合 - 计算模拟 - 小木虫 - 学术 科研 互动社区...
  6. 三调 图斑地类面积_收藏 | “三调数据”与国土空间规划用地对接的70个技术问题...
  7. Java工程师等级划分
  8. 光伏电站清扫机器人_光伏清扫机器人(GF01B)
  9. 谈谈java代理模式的认识二——动态代理(JDK)
  10. 【Wifi签到APP】大学生的一次完整的中小型项目的编码经历