关于ImageView加载出现OOM问题

原创 2015年07月08日 21:40:35

略感蛋疼,一直以为应该不是这个问题的,所以调试了一下午,后来测试了下如果在XML里面改变ImageView的src话会出现什么问题

结果如我预料,仍然是只能显示部分图片,因为之前有运行成功了,我也不清楚怎么回事的,所以一直以为是参数设置那里的问题,

弄的我纠结了这么久,下次再也不会出这么愚蠢的问题了、、、

所以解决办法就是换小一点的图片,因为内存问题,毕竟ImageView不适合用于图片很大很多的情况

附上源代码:

package com.example.question9;

import android.support.v4.app.Fragment;
import android.R.integer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import android.os.Build;

public class MainActivity extends Activity {

	public static ImageView iv = null;

	Button bt_pre;
	Button bt_next;
	Button bt_first;
	Button bt_end;

	static int[] Image_id = new int[] { R.drawable.ta, R.drawable.tb,
			R.drawable.tc, R.drawable.td, R.drawable.te, R.drawable.tf,
			R.drawable.tg, };

	static int flag = 0;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		bt_first = (Button) findViewById(R.id.button1);
		bt_pre = (Button) findViewById(R.id.button2);
		bt_next = (Button) findViewById(R.id.button3);
		bt_end = (Button) findViewById(R.id.button4);

		iv = (ImageView) findViewById(R.id.imageView1);

		// View.OnClickListener change = new OnClickListener() {
		//
		// @Override
		// public void onClick(View arg0) {
		// // TODO Auto-generated method stub
		// if(arg0 == bt_first) {
		// iv.setImageResource(Image_id[0]);
		// flag = 0;
		// }
		// else if(arg0 == bt_pre) {
		// flag = (flag-1+Image_id.length)%Image_id.length;
		// iv.setImageResource(Image_id[1]);
		// }
		// else if(arg0 == bt_next) {
		// flag = (flag+1+Image_id.length)%Image_id.length;
		// iv.setImageResource(Image_id[2]);
		// Log.i("exp", "nihaoniaho"+flag);
		// }
		// else if(arg0 == bt_end) {
		// iv.setImageResource(Image_id[6]);
		// flag = 6;
		// }
		// }
		// };
		//
		// bt_first.setOnClickListener(change);
		// bt_pre.setOnClickListener(change);
		// bt_next.setOnClickListener(change);
		// bt_end.setOnClickListener(change);

		bt_first.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				iv.setImageResource(Image_id[0]);
				flag = 0;
				Toast.makeText(MainActivity.this, "第  "+(flag+1)+" 张图片", Toast.LENGTH_SHORT).show();
			}
		});

		bt_pre.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {

				// TODO Auto-generated method stub
				flag = (flag-1+Image_id.length)%Image_id.length;
				iv.setImageResource(Image_id[flag]);
				Toast.makeText(MainActivity.this, "第  "+(flag+1)+" 张图片", Toast.LENGTH_SHORT).show();
			}
		});

		bt_next.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {

				// TODO Auto-generated method stub
				flag = (flag+1+Image_id.length)%Image_id.length;
				iv.setImageResource(Image_id[flag]);
				Toast.makeText(MainActivity.this, "第  "+(flag+1)+" 张图片", Toast.LENGTH_SHORT).show();
			}
		});

		bt_end.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {

				// TODO Auto-generated method stub
				iv.setImageResource(Image_id[6]);
				flag = 6;
				Toast.makeText(MainActivity.this, "第  "+(flag+1)+" 张图片", Toast.LENGTH_SHORT).show();
			}
		});

	}
}


版权声明:转载请注明出处

Glide OOM问题解决方法汇总

1、引入largeHeap属性,让系统为App分配更多的独立内存。 2、禁止Glide内存缓存。设置skipMemoryCache(true)。 3、自定义GlideModule。设置Memory...
  • ecjtuhq
  • ecjtuhq
  • 2017年08月06日 19:22
  • 1829

android中setImageResource加载大图片出现oom解决方案

ImageView加载图片时,有时会出现OOM   imageView.setImageResource(imageId); 解决方法   /** * 以最省内存的方式读取本地...
  • anroidfinalbreak
  • anroidfinalbreak
  • 2014年06月06日 12:40
  • 11286

android中,由于图像处理不当而引起的OOM问题及其解决方案(一)

在android中,经常会出现OOM(OutOfMemoryError), 原因有很多,其中,也可能由于图像处理不当而引起的的,本篇将从这个方面介绍几种常见的场景。 重要:而通常情景是,这个OOM不...
  • liranke
  • liranke
  • 2016年11月29日 14:01
  • 1753

根据ImageView的大小来压缩Bitmap,避免OOM

Bitmap是引起OOM的罪魁祸首之一,当我们从网络上下载图片的时候无法知道网络图片的准确大小,所以为了节约内存,一般会在服务器上缓存一个缩略图,提升下载速度。除此之外,我们还可以在本地显示图片前将图...
  • u011402187
  • u011402187
  • 2016年01月15日 18:10
  • 984

[安卓开发] ImageView加载图片内存溢出oom解决方案

工具类加一个静态方法: /** * 以最省内存的方式读取本地资源的图片 * @param context 上下文 * @param resId 资源Id ...
  • niubitianping
  • niubitianping
  • 2016年07月31日 15:38
  • 1935

ImageView设置background和src的区别

今天开发的时候遇到一个小问题,在给一个ImageView更换图片的时候,我使用的是java的方式更换,使用的方法是setBackgroundResource(),但奇怪的是总是没有效果。 最后查明原...
  • sdfdzx
  • sdfdzx
  • 2016年03月06日 21:00
  • 2067

关于ImageView加载出现OOM问题

略感蛋疼,一直以为应该不是这个问题的,所以调试了一下午,后来测试了下如果在XML里面改变ImageView的src话会出现什么问题 结果如我预料,仍然是只能显示部分图片,因为之前有运行成功了,我也不...
  • k183000860
  • k183000860
  • 2015年07月08日 21:40
  • 291

带你从头到尾梳理大图片加载OOM处理问题

我们在编写Android程序的时候经常要用到许多图片,不同图片总是会有不同的形状、不同的大小,但在大多数情况下,这些图片都会大于我们程序所需要的大小。比如说系统图片库里展示的图片大都是用手机摄像头拍出...
  • itguangit
  • itguangit
  • 2016年08月06日 23:11
  • 1532

ImageView里setImageResource出现OOM问题

ImageView加载图片时,有时会出现OOM问题 imageView.setImageResource(imageId); public static Bitmap readBitMap(Co...
  • mouse12138
  • mouse12138
  • 2016年03月25日 18:10
  • 949

根据ImageView的大小来压缩Bitmap,避免OOM

Bitmap是引起OOM的罪魁祸首之一,当我们从网络上下载图片的时候无法知道网络图片的准确大小,所以为了节约内存,一般会在服务器上缓存一个缩略图,提升下载速度。除此之外,我们还可以在本地显示图片前将图...
  • u014078142
  • u014078142
  • 2015年07月16日 16:56
  • 425
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于ImageView加载出现OOM问题
举报原因:
原因补充:

(最多只允许输入30个字)