很多Android应用在运行时,会遇到运行缓慢,不流畅等影响用户体验问题,这有一部分原因与图片有密切关系。当android应用需要加载较大较多的照片时,经常反应迟缓,甚至由于OOM,造成系统奔溃。下面将提供一种可行的解决方案。

1.获取图片的宽高属性

1 BitmapFactory.Options options=new BitmapFactory.Options();2 options.inJustDecodeBounds=true;3 BitmapFactory.decodeFile(filepath, options);

inJustDecodeBounds为true;decodeFile 返回的Bitmap 为null,图片不会加载到内存中,但可以获得file的高度和宽度以及其他属性。

2.设置inSampleSize值

inSampleSize值是Options其中一个属性,主要是在解析Bitmap时将长宽像素缩放到原来的1/inSampleSize,相应的占用的空间缩小到原来1/(inSampleSize^2)。所有inSampleSize取值为最近的2的幂,默认值为1,即不缩放。

 1     //获取inSampleSize 2     private static int getInSampleSize(BitmapFactory.Options options,int width,int height){ 3         //获取原图的宽高 4         int mwidth=options.outWidth; 5         int mheight=options.outHeight; 6         //初始inSampleSize=1;不缩放   如果n(2的幂) 宽和搞都为原来的1/n 减小到原来的1/n^2 7         int inSampleSize=1; 8         if(mheight>height || mwidth>width){ 9             int hwidth=mwidth/2;10             int hheight=mheight/2;11             while((hwidth/inSampleSize)>width && (hheight/inSampleSize)>height){12                 inSampleSize=inSampleSize*2;13             }14         }        15         return inSampleSize;16     }

3.根据inSampleSize解析出Bitmap

1 //在解码获取Bitmap之前将inJustDecodeBounds设置为false;2 options.inJustDecodeBounds=false;3 Bitmap bitmap=BitmapFactory.decodeFile(filepath, options);

4.根据ImageView控件指定Bitmap宽高

1 bitmap=Bitmap.createScaledBitmap(bitmap, width, height, true);  

5.设置ImageView属性

1 image=(ImageView) findViewById(R.id.image);2 image.setImageBitmap(BitmapTools.getSampleBitmap(path, 100, 100));

以上是对图片处理基本步骤,将图片压缩到某个比例,减少内存。这过程在Android中设计大量的图片时,该过程是很有效果的。

更多相关文章

  1. Android(安卓)中的ellipsize
  2. eclipse导入android的jar包
  3. 【Android开发】基本组件-图像视图
  4. EditText 的一些属性设置
  5. 新浪微博客户端源码 android
  6. Android中Gallery图片与视频选择冲突的原因
  7. android bitmap compress(图片压缩)
  8. TextVview的属性
  9. Android(安卓)中TextView 添加超链接

随机推荐

  1. php中$this的用法介绍
  2. 了解PHP中self关键字的相关知识
  3. 使用PHP求最大奇约数的和
  4. PHP代码优化的53个细节和优化策略
  5. 浅谈PHP面向对象的继承
  6. 谈谈关于PHP内存溢出的思考
  7. PHP实现根据出生年月日计算年龄的功能(代
  8. php之var_dump(1...9)会输出什么?
  9. php中的include,require,include_once,requi
  10. 分析一下PHP中的Trait机制原理与用法