好久没有写博客了,今天就先写一个小的关于在Android中加载大图如何避免内存溢出的问题。

后面会写如何使用缓存技术的核心类,android.support.v4.util.LruCache来加载图片。

直接上代码:

package com.example.oom_demo1;import android.os.Bundle;
import android.app.Activity;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.view.Menu;
import android.widget.ImageView;/***  Android高效加载大图、多图解决方案,有效避免程序OOM*  方法1* **/
public class MainActivity extends Activity {private ImageView mImageView;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mImageView = (ImageView) findViewById(R.id.imageView);
//      下面的代码非常简单地将任意一张图片压缩成100*100的缩略图,并在ImageView上展示。mImageView.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.drawable.a, 100, 100));}public static Bitmap decodeSampledBitmapFromResource(Resources res,int resId, int reqWidth, int reqHeight) {// 第一次解析将inJustDecodeBounds设置为true,来获取图片大小final BitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeResource(res, resId, options);// 调用上面定义的方法计算inSampleSize值options.inSampleSize = calculateInSampleSize(options, reqWidth,reqHeight);// 使用获取到的inSampleSize值再次解析图片options.inJustDecodeBounds = false;return BitmapFactory.decodeResource(res, resId, options);}public static int calculateInSampleSize(BitmapFactory.Options options,int reqWidth, int reqHeight) {// 源图片的高度和宽度final int height = options.outHeight;final int width = options.outWidth;int inSampleSize = 1;if (height > reqHeight || width > reqWidth) {// 计算出实际宽高和目标宽高的比率final int heightRatio = Math.round((float) height/ (float) reqHeight);final int widthRatio = Math.round((float) width / (float) reqWidth);// 选择宽和高中最小的比率作为inSampleSize的值,这样可以保证最终图片的宽和高// 一定都会大于等于目标的宽和高。inSampleSize = heightRatio < widthRatio ? heightRatio : widthRatio;}return inSampleSize;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

注:

你需要在你的工程目录下加入一张直接的较大的图片,然后进行

mImageView.setImageBitmap(decodeSampledBitmapFromResource(
getResources(), R.drawable.a, 100, 100));改成你自己的图片文件即可。

Android高效加载大图、多图解决方案,有效避免程序内存溢出现象相关推荐

  1. Android高效加载大图、多图解决方案,有效避免程序OOM

    高效加载大图片 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状.不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小.比如说系统图片库里展示的图片大都是 ...

  2. Android高效加载大图、多图解决方案_LruCache,有效避免程序OOM

    本篇文章主要内容来自于Android Doc,我翻译之后又做了些加工,英文好的朋友也可以直接去读原文. http://developer.android.com/training/displaying ...

  3. Android 高效加载大图片

    来源:http://www.open-open.com/lib/view/open1389755918242.html 我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状 ...

  4. javascript图片加载---加载大图的一个解决方案

    网页在加载一张大图片时,往往要加载很久: 而且,在加载过程中,无法很好地控制图片的样式,容易造成错位等显示错误: 如果能够在加载大图时,先使用一张较小的loading图片占位,然后后台加载大图片,当大 ...

  5. android开发 加载大图,Android加载超长图(微博长图)

    对于一些需要加载超长图需求的同学,可能一开始使用使用bitmap或者inputstream转bitmap(或类似加载库)会发现出现图片太大加载不出来的问题(其实我也是遇到了这个问题ヽ(≧Д≦)ノ).解 ...

  6. Glide加载大图长图

    这里用的Glide是4.11.0的 第一种方法: Glide.with(activity).load(yourUrl).asBitmap().into(new SimpleTarget<Bitm ...

  7. android高效加载网络图片

    2019独角兽企业重金招聘Python工程师标准>>> 需求:做项目的时候有一个需求:利用从网上加载图片到手机并且要调整成为自适应手机屏幕大小. 我用的是Picasso包来加载图片, ...

  8. android 小米加载大图,Android手机拍照或从本地相册选取图片设置头像。适配小米、华为、7.0...

    1,让用户通过选择本地相册之类的图片库中已有的图像,裁剪后作为头像. 2,让用户启动手机的相机拍照,拍完照片后裁剪,然后作为头像. 代码如下 MainActivity.Java文件: package ...

  9. Android图片加载框架最全解析(三),深入探究Glide的缓存机制

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

最新文章

  1. U盘安装Ubuntu14.4时遇到分区问题记录
  2. PostgreSQL流复制之二:pgpool-II实现PostgreSQL数据库集群(转发+整理)
  3. opera在我的博客发不了帖子,郁闷
  4. 【数据库系统】形式化查询语言の关系代数
  5. SpringBoot2 整合 Drools规则引擎,实现高效的业务规则
  6. 我的k8s随笔:Kubernetes部署的一些输出信息
  7. python同时赋值_python同时给多个变量赋值
  8. 群联MPALL v3.23.00量产工具(可刷PS2251-50固件)
  9. 【四足机器人--支撑相足端反作用力预测】(5)ConvexMPCLocomotion代码解析
  10. 速学 | 如何帮女朋友用Java合并两个PDF
  11. 已知两边求角度公式_有30度角的直角三角形,已知一直角边,求另两边的公式,快速求法...
  12. python中的pth文件
  13. 小程序云开发(九):WeUI
  14. 小红书用户画像分析_2020小红书爆品打造策略及案例分析!
  15. STM32 使用SWD方式下载不了程序
  16. MATLAB 如何让图形变美?[第一期]
  17. 实例掌握Hadoop MapReduce
  18. typec扩展坞hdmi没反应_手机\笔记本使用Type-c扩展坞的问题解析
  19. 愚人节 之强迫症描述
  20. wireshark+网管交换机抓包教程

热门文章

  1. 几道Java基础面试题
  2. hadoop使用场景
  3. alarm之后调用sleep会这样
  4. Windows 7 卸载 IE10
  5. Java进阶3. 内存回收机制
  6. SCREEN MODULE 逻辑控制
  7. Android系统默认Home应用程序(Launcher)的启动过程源代码分析(2)
  8. DataRowView 笔记
  9. IT优秀书籍收集下载
  10. rbw设计_华为5G最新突破!我国每周增加1万个5G基站!频谱分析仪中RBW和VBW的区别...