
android选项菜单怎么添加图片,Android图片选择框架--PictureSelector
weixin_39756235
转载
关注
0点赞·464人阅读
图片.png
功能特点
支持通过拍照获取图片
支持通过相册获取图片
支持图片裁切
支持仿IOS底部d出选择菜单ActionSheet效果
支持6.0动态授予权限
解决图片有黑边问题
解决7.0调用相机crash问题
解决小米miui系统调用系统裁剪图片功能crash问题
使用
Step 1. 添加JitPack仓库
在项目的build.gradle添加JitPack仓库
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
Step 2. 添加依赖
在需要使用的module中添加依赖
dependencies {
compile 'com.github.wildma:PictureSelector:1.0.0'
}
或者引用本地lib
compile project(':pictureselector')
Step 3. 配置清单文件所需activity
android:name="com.wildma.pictureselector.PictureSelectActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
Step 4. 拍照或者从相册选择图片
/**
* create方法参数一是上下文,在activity中传activity.this,在fragment中传fragment.this。参数二为请求码,用于结果回调onActivityResult中判断
* selectPicture方法参数分别为图片的裁剪宽、裁剪高、宽比例、高比例。默认不传则为宽200,高200,宽高比例为1:1。
*/
PictureSelector
.create(MainActivity.this, PictureSelector.SELECT_REQUEST_CODE)
.selectPicture(200, 200, 1, 1)
Step 5. 获取裁剪后的图片地址
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data)
/*结果回调*/
if (requestCode == PictureSelector.SELECT_REQUEST_CODE) {
if (data != null) {
String picturePath = data.getStringExtra(PictureSelector.PICTURE_PATH)
[TOC]
使用如下方式加载图片
会导致OOM,android对于直接通过资源id载入的资源需做cache,下次再需要此资源的时候直接从cache中得到。但这样做也造成了用过的资源都会在内存中,这样的设计不是很适合使用了很多大图片资源的应用,这样累积下来应用的内存峰值是很高的。
当使用诸如
imageView.setBackgroundResource
imageView.setImageResource
BitmapFactory.decodeResource
这样的方法来设置一张大图片时,在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。如果在读取时加上图片的Config参数,可以有效减少加载的内存,从而有效阻止抛OOM异常。
实际使用中,可以针对bitmap做如下 *** 作
RenderScript是Google在API11中引入的类,可看作业android内置的图片处理框架(区别于Glide等图片处理框架,RenderScript注重于图片的处理而不是加载)。RenderScript实际 *** 作基于RenderScript Intrinsics,一些可以帮助RenderScript快速实现各种图片处理的 *** 作类。该类包含诸多 *** 作功能,比如利用ScriptIntrinsicBlur,就可以简单高效地实现高斯模糊效果,可通过参数radius设置虚化的程度。
1920*1080的原始图片未经压缩读取时间可能会超过1s,使用该图片作为背景图片加载时会有明显的卡顿。此时就需要设置BitmapFactory.Options实现对待加载图片的压缩。可参照 https://blog.csdn.net/u012124438/article/details/66087785 逐步优化Bitmap加载。对于加载图片较多较频繁的功能,建议使用第三方的图片加载框架,如Glide或者Picasso。
需要注意的是,此处doBlur有两个重载,可根据需要设置图片的缩放比例.这种方式和前文通过BitmapFactory.Options设置Bitmap取样格式的效果是一致的,都是为了减小Bitmap加载的资源消耗,提高加载效率。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)