码迷,mamicode.com
首页 > 移动开发 > 详细

Android下将图片加载到内存中

时间:2014-06-20 09:47:48      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:android基础

       Android的系统的标准默认每个应用程序分配的内存是16M.所以来说是非常宝贵的,在创建应用的时候要尽可能的去节省内存,但是在加载一些大的文件的时候,比如图片是相当耗内存的,一个1.3M的图片,分辨率是2560X1920(宽X高)图片当加载到手机内存的时候就会请求19M的一块内存,这是远远超出了系统自带的内存空间,这时候应用程序就会挂掉,所以我们要进行图片的缩放处理,下面我就来带大家创建一个用来图片缩放的应用;

     应用效果图如下:

   bubuko.com,布布扣


核心代码的实现:

package com.examp.loadpicture;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private ImageView iv;
	private int windowHeight;
	private int windowWidth;

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

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

		// 获取手机的屏幕的窗体大小

		WindowManager windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
		Display display = windowManager.getDefaultDisplay();
		windowHeight = display.getHeight();
		windowWidth = display.getWidth();

	}

	public void loadPicture(View view) {
		// 位图工厂类
		// Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/x.jpg");
		// 将指定的文件进行编码,转化为位图
		// iv.setImageBitmap(bitmap);
		// 图片解析配置的类
		Options options = new Options();
		// 不会真的进行图片解析,只是获取到图片的头信息:宽X高 日期等
		options.inJustDecodeBounds = true;
		// 设置图片解析类的目标文件
		BitmapFactory.decodeFile("/sdcard/x.jpg", options);
		// 获取图片的高X宽
		int imageHeight = options.outHeight;
		int imageWidth = options.outWidth;
		System.out.println("图片的高:" + imageHeight + "图片的宽:" + imageWidth);

		// 使用图片的宽高和屏幕的宽高进行计算,算出比例
		int scaleX = imageWidth / windowWidth;
		int scaleY = imageHeight / windowHeight;

		// 缺省的比例
		int scale = 1;
		if (scaleX > scaleY & scaleY >= 1) {
			scale = scaleX;
		}
		if (scaleY > scaleX & scaleX >= 1) {
			scale = scaleY;
		}

		// 设置图片解析器真的去解析图片
		options.inJustDecodeBounds = false;
		// 设置解析的采样率,设置的值是缩放比例1/scale
		options.inSampleSize = scale;
		// 再次获取图片位图,并设置采样率
		Bitmap bitmap = BitmapFactory.decodeFile("/sdcard/x.jpg", options);
		iv.setImageBitmap(bitmap);

	}

}

DEMO下载:

http://download.csdn.net/detail/u011936142/7448597




Android下将图片加载到内存中,布布扣,bubuko.com

Android下将图片加载到内存中

标签:android基础

原文地址:http://blog.csdn.net/dong_martin/article/details/28588211

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!