一起学习android图像缩放资源 (27)
效果图:
在平时载入图片时,我会使用SetImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张图
片通过以上方法来设置图片时。会通过Java层的createBitmap来完毕。这种话会消耗非常多内存。easy导致
OOM(Out Of Memory),因此推荐使用BitmapFactory.Options这个类来设置一张资源图。
參看下面代码:
public class MainActivity extends Activity {
	private ImageView imageView1;
	private ImageView imageView2;
	Bitmap mBitmap;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.image);
		initView();
	}
	private void initView(){
		imageView1=(ImageView)findViewById(R.id.imageView1);
		imageView2=(ImageView)findViewById(R.id.imageView2);
		//读取资源图片
		mBitmap=readBitMap();
		//对资源图片进行缩放
		imageView2.setImageBitmap(zoomBitmap(mBitmap, mBitmap.getWidth()/4, mBitmap.getHeight()/4));
	}
	/**
	 * 读取资源图片
	 * @return
	 */
	private Bitmap readBitMap(){
		BitmapFactory.Options opt=new BitmapFactory.Options();
		/*
		 * 设置让解码器以最佳方式解码
		 */
		opt.inPreferredConfig=Bitmap.Config.RGB_565;
		//以下两个字段须要组合使用
		opt.inPurgeable=true;
		opt.inInputShareable=true;
		/*
		 * 获取资源图片
		 */
		InputStream is=this.getResources().openRawResource(R.drawable.mei);
		return BitmapFactory.decodeStream(is, null, opt);
	}
	/**
	 * 缩放图片
	 * @param bitmap
	 * @param w
	 * @param h
	 * @return
	 */
	public  Bitmap zoomBitmap(Bitmap bitmap, int w, int h) {
		int width = bitmap.getWidth();
		int height = bitmap.getHeight();
		Matrix matrix = new Matrix();
		float scaleWidht = ((float) w / width);
		float scaleHeight = ((float) h / height);
		/*
		 * 通过Matrix类的postScale方法进行缩放
		 */
		matrix.postScale(scaleWidht, scaleHeight);
		Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
		return newbmp;
	}
}
image.xml:
<?xml version="1.0" encoding="utf-8"? >
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" > <ImageView
android:id="@+id/imageView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/mei" /> <ImageView
android:id="@+id/imageView2"
android:layout_width="wrap_content"
android:layout_below="@+id/imageView1"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:src="@drawable/mei" /> </RelativeLayout>
转载请注明出处:http://blog.csdn.net/hai_qing_xu_kong/article/details/44281087情绪控_
版权声明:本文博主原创文章,博客,未经同意不得转载。
一起学习android图像缩放资源 (27)的更多相关文章
- opencv学习笔记——图像缩放函数resize
		opencv提供了一种图像缩放函数 功能:实现对输入图像缩放到指定大小 函数原型: void cv::resize ( InputArray src, OutputArray dst, Size ds ... 
- Android应用程序资源的查找过程分析
		文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8806798 我们知道,在Android系统中, ... 
- OpenCV计算机视觉学习(11)——图像空间几何变换(图像缩放,图像旋转,图像翻转,图像平移,仿射变换,镜像变换)
		如果需要处理的原图及代码,请移步小编的GitHub地址 传送门:请点击我 如果点击有误:https://github.com/LeBron-Jian/ComputerVisionPractice 图像 ... 
- Android资源之图像资源(图像级别资源)
		图像状态资源仅仅能定义有限的几种状态. 假设须要很多其它的状态,就要使用图像级别资源. 在该资源文件里能够定义随意多个图像级别. 每一个图像级别是一个整数区间,能够通过ImageView.setIma ... 
- Android应用程序资源的编译和打包过程分析
		文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8744683 我们知道,在一个APK文件中,除了 ... 
- 一培训机构设计的学习android课程内容:供大家参考
		转自:http://www.cnblogs.com/csj007523/archive/2011/06/16/2082682.html 一培训机构设计的学习android课程内容:供大家参考 第一阶段 ... 
- 一起来学习Android自定义控件1
		概述 Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了.自定义控件对于初学者总是感觉是一种复杂的技术.因为里面涉及到的知识点会 ... 
- Andorid-如何为你的Android应用缩放图片
		很难为你的应用程序得到正确的图像缩放吗?是你的图片过大,造成内存问题?还是图片不正确缩放造成不良用户体验的结果?为了寻求一个好的解决方案,我们咨询了Andreas Agvard(索尼爱立信软件部门), ... 
- android学习——android架构
		android架构:在了解全局的情况下进行细致化的分析才能更有效的学习android的运行原理,才能更深刻的理解android开发: 1.架构图直观 2.架构详解 2.1.Linux Kernel 2 ... 
随机推荐
- 读书笔记:《重来REWORK》
			读书笔记:<重来REWORK> <重来Rework--更为简单有效的商业思维>这本书是看了别人的书单而购买的,初 拿到这本书翻看时,感觉有两点与平常的书不同,一是每个小节非常短 ... 
- Linux内核——进程管理与调度
			进程的管理与调度 进程管理 进程描写叙述符及任务结构 进程存放在叫做任务队列(tasklist)的双向循环链表中.链表中的每一项包括一个详细进程的全部信息,类型为task_struct,称为进程描写叙 ... 
- JAVA逆向&反混淆-追查Burpsuite的破解原理(转)
			0x00 摘要: 本系列文章通过对BurpLoader的几个版本的逆向分析,分析Burpsuite的破解原理,分析Burpsuite认证体系存在的安全漏洞. 0x01 JD-GUI的用途与缺陷: JD ... 
- pygame写的弹力球
			这是pygame写的弹力球 运行效果: ======================================================== 代码部分: ================= ... 
- JAVA 命令参数详解System.setProperty(
			JAVA 命令参数详解: 1.-D<name>=<value> set a system property 设置系统属性. java -D参数简化加入多个jar java命令 ... 
- WPF换肤之一:创建圆角窗体
			原文:WPF换肤之一:创建圆角窗体 我们都期望自己的软件能够有一套看上去很吸引人眼球的外衣,使得别人看上去既专业又有美感.这个系列就带领着大家一步一步的讲解如何设计出一套自己的WPF的窗体皮肤,如果文 ... 
- BZOJ 1975 SDOI2010 魔法猪学院 A*k短路
			题目大意:给定一个值E 求起点到终点的最多条路径 使长度之和不超过E k短路的A*算法--每一个点有一个估价函数=g[x]+h[x] 当中g[x]是从源点出发已经走了的长度 h[x]是从这个点到汇点的 ... 
- NET 分布式架构开发项目实战
			.NET 分布式架构开发项目实战 从头到尾,一步一步讲述一个真实的项目实战,关注点主要是架构的思考和实现,以及如何解决平时项目遇到的一些问题. 同时也司公布源代码. 如何构建高性能,稳定SOA应用之- ... 
- Androidclient和server第一种方法端数据交换
			网上有一个非常不同的情况来证明Android客户端和server如何结束的数据,但这些实施例大多相互作用更复杂,对于那些谁刚开始学习它是有害的,现在介绍一些简单的代码.逻辑清晰的互动样本,首先介绍本博 ... 
- Parallel Python——一个简单的分布式计算系统
			如何建立一个高速的分布式计算平台?Parallel python此目的. Parallel Python(http://www.parallelpython.com/content/view/15/3 ... 
