android 仿照ios 图片选择,GitHub - wildma/PictureSelector: Android 图片选择器(仿 IOS 图片选择控件)...
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 图片选择控件)...相关推荐
- android 位于底部的tab,GitHub - DevinFu/BottomTabBar: Android应用中位于底部的tab栏
BottomTabBar 说明:此控件是在Jack Tony: 的BottomTabBar项目基础上进行的改造,原项目地址:https://github.com/tianzhijiexian/Bott ...
- android 商品筛选view,FilterTabView 基于 Popupwindow 实现的筛选房源信息等相关的控件,可以自由排序 @codeKK Android开源站...
基于 Popupwindow 的下拉筛选控件 功能 区分 支持区域二级联动选择 FilterTabConfig.FILTER_TYPE_AREA 支持单行 List 样式选择 FilterTabCon ...
- H5实现多图片预览上传,可点击可拖拽控件介绍
在做图片上传时发现一个蛮好用的控件,支持多张图片同时上传,可以点击选择图片,也可以将图片拖拽到上传框直接上传,方便,好用,接口也简单,基本可以直接放到项目里使用. 先看看他的样式: 选择图片后: $( ...
- Android仿同花顺自选股列表控件
介绍 RecyclerView的开发中,我们通常会遇到一行显示不下内容的情况,产品会要求我们的item是可以滚动的,并且头部是固定的.特别在股票行情类相关的app上,这样的场景是非常多的,所以封装了如 ...
- Android kotlin 将Base64字符串转换成Bitmap,并在jetpack compose的Image控件中显示
Android kotlin 将Base64字符串转换成Bitmap 前言 代码 将Base64字符串转换成Bitmap 在jetpack compose的Image控件中显示Bitmap 完事 前言 ...
- Android入门到精通|安卓/Android开发零基础系列Ⅱ【职坐标】-学习笔记(1)-- 常用控件及资源介绍
前言 为了巩固Android基础知识,回顾一下学习内容,才有此学习笔记. IDE Androdi Studio 4 + Genymotion 创建项目 修改项目的 build.gradle,添加国内镜 ...
- Android仿苹果siri浮动控件
实现原理是用WindowManager添加视图,生命周期可以不跟随某一页面或某一应用,可以全屏浮动(状态栏除外).只有一个主类FloatView.在应用中new一下就可以显示了. 需要添加权限:< ...
- android酷狗下拉,Android 仿酷狗滑动控件实现 流畅运行
最近又浏览了一遍github上的开源项目,有感于大神们的强大,所以想搞搞像kugou那样左右滑动的侧滑菜单控件. 打开移动设备的kugou软件,看了下整体效果,就知道了,我们要实现一个左侧主页,右侧菜 ...
- Android 绿豆通讯录【 SQLite数据库(增删改查、展示数据) + ListView数据展示控件(展示所有数据) 】
前情提要:Android 数据库(SQLite) [简介.创建.使用(增删改查.事务.实战演练).数据显示控件(ListView.Adapter.实战演练-绿豆通讯录)] https://blog.c ...
最新文章
- Ruby开发环境配置
- AppCan用cookie实现记住密码功能 [APP]
- fd_set struct
- git 版本控制器 初学习,工作中的问题及其解决方法
- 基于jquery的侧边栏分享导航
- source ~/.bashrc 什么意思
- python怎么清空屏幕_python如何清屏
- 网络知识:详解各种路由器组网方法!
- 飞行计算机人机工程,人机工程学版
- C#获取文件夹及文件的大小与占用空间的方法
- 小明滚出---响应对象HttpServletResponse和请求对象HttpServletRequest实例
- python 开发工具_「干货」推荐一整套 Python 开发工具
- php 个人中心常见界面,UI设计灵感:个人中心界面设计(User Profile)
- python计算器函数图像_Python图形计算器,python,图像,化
- MongoDB管理工具studio 3t ,解决到期问题
- Gromacs动力学模拟
- Rplidar学习(四)—— ROS下进行rplidar雷达数据采集源码分析
- 优秀的java程序员怎么写注释的
- Pygame(三)画圆
- Mina中的Kimchi SNARK
热门文章
- 图解HTTP 学习笔记
- 事件10016,RuntimeBroker无法编辑
- 差速机器人的纯轨迹跟踪仿真(Matlab)
- VS2019 c# 中国移动云mas平台 webservice实现
- 用matlab拟合多元函,matlab 多元函数拟合 - 计算模拟 - 小木虫 - 学术 科研 互动社区...
- 三调 图斑地类面积_收藏 | “三调数据”与国土空间规划用地对接的70个技术问题...
- Java工程师等级划分
- 光伏电站清扫机器人_光伏清扫机器人(GF01B)
- 谈谈java代理模式的认识二——动态代理(JDK)
- 【Wifi签到APP】大学生的一次完整的中小型项目的编码经历