图片加载
qijingwang
初心易得,始终难守
展开
-
图片加载1:一些必要常识
(1)每个进程分配的内存空间是多少?我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出来的,这些图片的分辨率会比我们手机屏幕的分辨率高得多。大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMe...原创 2019-09-23 20:30:13 · 172 阅读 · 0 评论 -
图片加载11:为Glide添加监听
Glide4的监听机制和Glide3的监听机制有很大的变化,本文只会介绍Glide4的监听机制。首先粘贴一下代码,为Glide添加一个监听 //加载网络图片 Glide.with(this) .asBitmap() .load("https://img.pc841.com/2018/0922/201809221110495...原创 2019-09-24 11:12:52 · 1219 阅读 · 1 评论 -
图片加载10:Glide之预加载
为了提升第一次加载时的效率,使图片加载更加友好,Glide提供了预加载接口。一般情况下,我们使用Glide加载图片只需要调用下面代码就可以了: Glide.with(this) .asBitmap() .load(url) .diskCacheStrategy(DiskCacheStrategy.ALL)...原创 2019-09-24 10:54:46 · 1151 阅读 · 0 评论 -
图片加载9:Glide实现根据图片强制缩放View的大小
一般情况下,很多时候都是对图片做等比缩放调整,很少有需求是调整View的大小,今天我带领大家使用Glide实现根据图片强制缩放View的大小。Glide加载图片的代码一般是这样的 Glide.with(this) .asBitmap() .load(R.mipmap.chongge2) .into(imag...原创 2019-09-24 10:52:46 · 1559 阅读 · 0 评论 -
图片加载8:Glide4配置和自定义模块
在4.0中不用像3.X需要在AndroidManifest.xml配置GlideModule,而是通过注解继承AppGlideModule的子类来配置。自定义模块的出现,让Glide的使用更加灵活。(1)依赖Glide的使用需要用到的依赖是:implementation 'com.github.bumptech.glide:glide:4.9.0'但是,如果使用Glide...原创 2019-09-24 10:43:22 · 1084 阅读 · 0 评论 -
图片加载7:Glide4基本使用
(1)添加依赖Glide最新版本已经更新到4.9了。implementation 'com.github.bumptech.glide:glide:4.9.0'(2)权限加载网络需要用到网络权限:<uses-permission android:name="android.permission.INTERNET"/>(3)解决Android8.0以上手机...原创 2019-09-24 10:04:02 · 523 阅读 · 0 评论 -
图片加载6:图片优化之inBitmap
inBitmap是在BitmapFactory中的内部类Options的一个变量,简单而言,使用该变量可以复用旧的Bitmap的内存而不用重新分配以及销毁旧Bitmap,进而改善运行效率。bitmap是很消耗内存的,当bitmap不用时我们需要回收bitmap.recycle();以上代码可以回收bitmap在堆中的内存,回收之后,bitmap不得再重新使用。但是,当我们使用lis...原创 2019-09-23 20:53:46 · 606 阅读 · 0 评论 -
图片加载5:图片压缩
随着科技的发展,越来越多的移动设备被推出,其相机的清晰度是一个重大的特色,提升拍照的分辨率以及像素密度可以增加图像的清晰度,但是这样会导致拍照之后的图像占用内存比较大,一张图片大小达到10M都有可能。当我们将拍照之后的图片上传服务器,再将服务器中的图片展示在客户端时,如果一张图片有10M,那么会导致大大消耗手机性能,往往消耗内存过大导致OOM的问题。想要解决OOM的问题就必须将图片压缩,下...原创 2019-09-23 20:51:41 · 202 阅读 · 0 评论 -
图片加载4:学会使用软引用解决OOM问题
学会使用软引用和弱引用可以进一步优化内存泄漏问题。本文主要让大家了解什么叫强引用、软引用、弱引用、虚引用以及怎么使用。(1)强引用(StrongReference)Object object = new Object();String name= "zhangsan";强引用在项目中很常见,程序猿已经习惯性的使用强引用了,以上两句简单代码就是所谓的强引用。当强引用对象占用...原创 2019-09-23 20:44:53 · 235 阅读 · 0 评论 -
图片加载3:垃圾回收机制
(1)垃圾回收机制的意义java 语言中一个显著的特点就是引入了java回收机制,是c++程序员最头疼的内存管理的问题迎刃而解,它使得java程序员在编写程序的时候不在考虑内存管理。由于有个垃圾回收机制,java中的额对象不在有“作用域”的概念,只有对象的引用才有“作用域”。垃圾回收可以有效的防止内存泄露,有效的使用空闲的内存;说到这,不得不提起内存泄漏(memory leak)和内存溢出...原创 2019-09-23 20:42:00 · 172 阅读 · 0 评论 -
图片加载2:BitmapFactory.Options详解
(1)常用属性BitmapFactory.Options options = new BitmapFactory.Options();//默认值为false,如果设置成true,那么在解码的时候就不会返回bitmap,即bitmap = null。options.inJustDecodeBounds = false;//可以复用之前用过的bitmapoptions.inBitma...原创 2019-09-23 20:34:09 · 494 阅读 · 0 评论 -
图片加载12:Glide之TransformationUtils
Glide已经为我们封装了TransformationUtils工具类,那么这个工具类到底有什么用呢?图片.png如图所示,这个工具类为我们提供了许多方便的接口:[接口一]Bitmap centerCrop(@NonNull BitmapPool pool, @NonNull Bitmap inBitmap, int width, int height)代码如下:...原创 2019-09-24 11:38:32 · 765 阅读 · 0 评论