当前位置: 首页 > news >正文

个人网站开发与设计摘要企业营销策划心得体会

个人网站开发与设计摘要,企业营销策划心得体会,内容型网站的运营,建设部网站办事大厅转自#xff1a;http://my.oschina.net/rengwuxian/blog/182885 高效使用Bitmaps有什么好处#xff1f; 我 们常常提到的“Android程序优化”#xff0c;通常指的是性能和内存的优化#xff0c;即#xff1a;更快的响应速度#xff0c;更低的内存占用。Android程序的性能…转自http://my.oschina.net/rengwuxian/blog/182885 高效使用Bitmaps有什么好处 我 们常常提到的“Android程序优化”通常指的是性能和内存的优化即更快的响应速度更低的内存占用。Android程序的性能和内存问题大部 分都和图片紧密相关而图片的加载在很多情况下很用到Bitmap位图这个类。而由于Bitmap自身的特性将每个像素的属性全部保存在内存中 导致稍有不慎就会创建出一个占用内存非常大的Bitmap对象从而导致加载过慢还会有内存溢出的风险。所以Android程序要做优 化Bitmap的优化是必不可少的一步。 需要对Bitmap进行优化的情形 首先请看一行代码 1mImageView.setImageResource(R.drawable.my_image); 这是一行从资源文件中加载图片到ImageView的代码。通常这段代码没什么问 题但有些情况下你需要对这段代码进行优化。例如当图片的尺寸远远大于ImageView的尺寸时或者当你要在一个ListView或 GridView中批量加载一些大小未知的图片时。实际上以上这行代码会在运行时使用BitmapFactory.decodeStream()方法将 资源图片生成一个Bitmap然后由这个Bitmap生成一个Drawable最后再将这个Drawable设置到ImageView。由于在过程中 生成了Bitmap因此如果你使用的图片过大就会导致性能和内存占用的问题。另外需要优化的情形不止这一种这里就不再列举。 下面分步说明使用代码来减小Bitmap的尺寸从而达到减小内存占用的方法 1. 获取原图片尺寸 通常我们使用BitmapFactory.decodeResource()方法来从资源文件中读取一张 图片并生成一个Bitmap。但如果使用一个BitmapFactory.Options对象并把该对象的inJustDecodeBounds属性设 置为truedecodeResource()方法就不会生成Bitmap对象而仅仅是读取该图片的尺寸和类型信息     1BitmapFactory.Options options new BitmapFactory.Options(); 2options.inJustDecodeBounds true; 3BitmapFactory.decodeResource(getResources(), R.id.myimage, options); 4int imageHeight options.outHeight; 5int imageWidth options.outWidth; 6String imageType options.outMimeType; 2. 根据原图尺寸和目标区域的尺寸计算出合适的Bitmap尺寸 BitmapFactory.Options类有一个参数 inSampleSize该参数为int型他的值指示了在解析图片为Bitmap时在长宽两个方向上像素缩小的倍数。inSampleSize的默认 值和最小值为1当小于1时解码器将该值当做1来处理且在大于1时该值只能为2的幂当不为2的幂时解码器会取与该值最接近的2的幂。例如 当inSampleSize为2时一个2000*1000的图片将被缩小为1000*500相应地它的像素数和内存占用都被缩小为了原来的 1/4 01public static int calculateInSampleSize( 02            BitmapFactory.Options options, int reqWidth, int reqHeight) { 03    // 原始图片的宽高 04    final int height options.outHeight; 05    final int width options.outWidth; 06    int inSampleSize 1; 07  08    if (height reqHeight || width reqWidth) { 09  10        final int halfHeight height / 2; 11        final int halfWidth width / 2; 12  13        // 在保证解析出的bitmap宽高分别大于目标尺寸宽高的前提下取可能的inSampleSize的最大值 14        while ((halfHeight / inSampleSize) reqHeight 15                 (halfWidth / inSampleSize) reqWidth) { 16            inSampleSize * 2; 17        } 18    } 19  20    return inSampleSize; 21} 3. 根据计算出的inSampleSize生成Bitmap  01public static Bitmap decodeSampledBitmapFromResource(Resources res, int resId, 02        int reqWidth, int reqHeight) { 03  04    // 首先设置 inJustDecodeBoundstrue 来获取图片尺寸 05    final BitmapFactory.Options options new BitmapFactory.Options(); 06    options.inJustDecodeBounds true; 07    BitmapFactory.decodeResource(res, resId, options); 08  09    // 计算 inSampleSize 的值 10    options.inSampleSize calculateInSampleSize(options, reqWidth, reqHeight); 11  12    // 根据计算出的 inSampleSize 来解码图片生成Bitmap 13    options.inJustDecodeBounds false; 14    return BitmapFactory.decodeResource(res, resId, options); 15} 这里有一点要注意就是要在第二遍decode之前把inJustDecodeBounds设置回false。 4. 调用以上的decodeSampledBitmapFromResource方法使用自定尺寸的Bitmap。 如果你要将一张大图设置为一个100*100的缩略图执行以下代码 1mImageView.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 100)); 到此使用decodeResource()方法将一个大图解析为小尺寸bitmap的应用就完成了。同理还可以使用decodeStream()decodeFile()等方法做相同的事原理是一样的。 延伸一个Bitmap到底占用多大内存系统给每个应用程序分配多大内存 · Bitmap占用的内存为像素总数 * 每个像素占用的内存。在Android中Bitmap有四种像素类型ARGB_8888、ARGB_4444、ARGB_565、ALPHA_8他 们每个像素占用的字节数分别为4、2、2、1。因此一个2000*1000的ARGB_8888类型的Bitmap占用的内存为 2000*1000*48000000B8MB。 · Android根据设备屏幕尺寸和dpi的不同给系统分配的单应用程序内存大小也不同具体如下表表格取自Android 4.4 Compatibility Definition Document (CDD)                                                                                                       屏幕尺寸 DPI 应用内存 small / normal / large ldpi / mdpi 16MB small / normal / large tvdpi / hdpi 32MB small / normal / large xhdpi 64MB small / normal / large 400dpi 96MB small / normal / large xxhdpi 128MB xlarge mdpi 32MB xlarge tvdpi / hdpi 64MB xlarge xhdpi 128MB xlarge 400dpi 192MB xlarge xxhdpi 256MB
http://www.pierceye.com/news/363317/

相关文章:

  • 做网站那个程序好国内做网站哪家公司好
  • 自己做网站优化以下属于购物搜索广告的是
  • 做外单网站有哪些鸿科经纬教网店运营推广
  • 网站开发的项目网站开发文档总结
  • 做网站小程序源码临沂h5建站
  • 旅游网站建设计划书wordpress弱密码
  • 网站建设项目报价网站开发与设计结课论文
  • 公司做网站企业做网站需注意什么
  • 已经注册了域名 怎么做网站自己注册一家公司需要多少钱
  • 沈阳做网站的电话网站 扩展
  • 健身俱乐部网站开发文档重庆 企业网站建设
  • 深圳航空公司官方网站招聘做网站广告公司
  • .php的网站是怎么做的最美情侣免费视频
  • v9网站模板学做西点的网站
  • 网站查询空间商工厂生产erp管理系统
  • 365房产南京网站响应式wordpress主题
  • 上海网站建设 app开发佛山黄页企业名录
  • 网站优化文档天津建设厅网站
  • 网站建设自适应网站电商网站运营规划
  • 做网站如何报价泰州建设局网站质监站
  • 做家具网站电影网站做流量吗
  • 免费1级做看网站制作单页网站要网址
  • 网站返回首页怎么做的好看自贡网站优化
  • 自己的网站如何做推广wordpress积分与奖励
  • 产品包装设计网站网站建设 中企动力宜昌
  • 英语营销型网站建设北京pk10网站开发
  • 交换链接适合哪些网站东莞小程序开发制作
  • 医院网站建设网站阿里巴巴网站是用什么技术做的
  • 潍坊 餐饮网站建设淘宝seo优化
  • 樟木头镇网站建设公司WordPress企业响应式主题