androidtheme添加图片

androidtheme添加图片,第1张

android选项菜单怎么添加图片

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加载的资源消耗,提高加载效率。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11617937.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-17
下一篇2023-05-17

发表评论

登录后才能评论

评论列表(0条)

    保存