由于本人英文能力实在有限,不足之初敬请谅解
本博客只要没有注明“转”,那么均为原创,转贴请注明本博客链接链接
Displaying Bitmaps Efficiently
高效显示Bitmap
Learn how to use common techniques to process and load Bitmap objects in a way that keeps your user interface (UI) components responsive and avoids exceeding your application memory limit.
If you're not careful, bitmaps can quickly consume your available memory budget leading to an application crash due to the dreaded exception:
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
学习如何使用常规技术来处理和加载Bitmap对象,在一定程度上可以保持你的UI组件响应性以及避免超过应用内存限制。
如果你不小心,bitmap能很快消费光你的可用内存,由于下面可怕的异常导致应用崩溃
java.lang.OutofMemoryError: bitmap size exceeds VM budget.
There are a number of reasons why loading bitmaps in your Android application is tricky:
一些原因是为什么在你的android应用里加载bitmap是需要技巧的:
Mobile devices typically have constrained system resources.
Android devices can have as little as 16MB of memory available to a single application.
The Android Compatibility Definition Document (CDD), Section 3.7. Virtual Machine Compatibility gives the required minimum application memory for various screen sizes and densities.
Applications should be optimized to perform under this minimum memory limit.
However, keep in mind many devices are configured with higher limits.
移动设备往往资源系统有限
android设备对一个应用来说至少有16MB的可用内存。
Android Compatibility Definition Document (CDD),章节3.7,Virtual Machine Compatibility
应用在这种最小内存限制下,应该最优化的被执行
然而,有很多设备配置了更高的限制
Bitmaps take up a lot of memory, especially for rich images like photographs.
For example, the camera on the Galaxy Nexus takes photos up to 2592x1936 pixels (5 megapixels).
If the bitmap configuration used is ARGB_8888 (the default from the Android 2.3 onward) then loading this image into memory takes about 19MB of memory (2592*1936*4 bytes), immediately exhausting the per-app limit on some devices.
Bitmap占用大量内存,尤其是像照片一类色彩丰富的图片
例如:Galaxy Nexus上面的相机拍出的照片需要2592x1936像素(5 megapixels).
如果bitmap使用ARGB_8888做配置(android2.3之前的默认配置),那么加载这张图片到内存中大概需要19MB(2592*1936*4 bytes),在一些设备上,马上就耗尽了单个app限制
Android app UI’s frequently require several bitmaps to be loaded at once.
Components such as ListView, GridView and ViewPager commonly include multiple bitmaps on-screen at once with many more potentially off-screen ready to show at the flick of a finger.
android应用UI频繁的需要一次同时加载多张图片
像ListView,ridView 和 ViewPager这样的组件,通常一次同时含有多张图片在屏幕上,还有很多在屏幕外准备当手指滑动时显示的图片
(下面提到了5篇文章已经翻译完,链接直接链到我翻译后的文章)
Lessons
Loading Large Bitmaps Efficiently
This lesson walks you through decoding large bitmaps without exceeding the per application memory limit.
这节教你如何不超出单个应用内存限制解码大图片
Processing Bitmaps Off the UI Thread
Bitmap processing (resizing, downloading from a remote source, etc.) should never take place on the main UI thread.
This lesson walks you through processing bitmaps in a background thread using AsyncTask and explains how to handle concurrency issues.
bitmap处理(缩放、从远程下载等)绝不应该在主线程中发生
这一节教你使用AsyncTask如何在后台线程处理bitmap,并且解释如何处理并发问题
This lesson walks you through using a memory and disk bitmap cache to improve the responsiveness and fluidity of your UI when loading multiple bitmaps.
这一节教你当加载多bitmap时,使用内存bitmap缓存和磁盘bitmap缓存来改进你你的UI响应性和流畅度
This lesson explains how to manage bitmap memory to maximize your app's performance.
这一节解释如何管理bitmap内存来最大化你应用的性能
This lesson brings everything together, showing you how to load multiple bitmaps into components like ViewPager and GridView using a background thread and bitmap cache.
这节把所有事情放到一起,展示如何使用后台线程和bitmap缓存加载多图片到ViewPager 和 GridView组件中
原文地址如下,英文水平实在有限,希望拍砖同时能给予指正。
http://developer.android.com/training/displaying-bitmaps/index.html
转贴请保留以下链接
本人blog地址
相关推荐
包含翻译后的API文档:RoaringBitmap-0.7.45-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.roaringbitmap:RoaringBitmap:0.7.45; 标签:roaringbitmap、RoaringBitmap、中英对照文档、jar包、java...
包含翻译后的API文档:RoaringBitmap-0.5.11-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.roaringbitmap:RoaringBitmap:0.5.11; 标签:roaringbitmap、RoaringBitmap、jar包、java、中文文档; 使用方法:...
包含翻译后的API文档:RoaringBitmap-0.5.11-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:org.roaringbitmap:RoaringBitmap:0.5.11; 标签:roaringbitmap、RoaringBitmap、jar包、java、API文档、...
包含翻译后的API文档:RoaringBitmap-0.7.45-javadoc-API文档-中文(简体)版.zip; Maven坐标:org.roaringbitmap:RoaringBitmap:0.7.45; 标签:roaringbitmap、RoaringBitmap、中文文档、jar包、java; 使用方法:...
在Android开发中,Bitmap是处理图像的基本类,用于在内存中表示位图图像。当我们需要对图片进行裁剪、缩放或进行其他操作时,Bitmap提供了丰富的功能。本篇文章将详细探讨如何在Android环境下利用Bitmap来切割图片。...
This project came about as part of my blog post: http://www.senab.co.uk/2012/07/01/android-bitmap-caching-revisited/ Android-BitmapCache is a specialised cache, for use with Android Bitmap objects. I...
在Android平台上,多媒体开发是构建丰富用户体验的关键组成部分。Android系统为开发者提供了强大的API,支持音频、视频、图像处理以及相机功能。以下是对Android多媒体开发的详细介绍: 1. **多媒体文件支持**:...
在Android开发中,Bitmap是用于表示图像数据的基本对象,它是一种内存中的图片表示形式。而当我们需要在应用程序中展示带有圆角的图片时,通常会用到Bitmap的处理技巧。本篇文章将深入探讨如何在Android中对Bitmap...
若是从内存中读取到的Bitmap为空,则在磁盘缓存中读取。 若是从磁盘中读取到的Bitmap为空,则从起始资源中读取 2.开启工作线程,执行从起始资源中读取bitmap的任务 3.计算合适比例,读取适屏的bitmap 4.检查...
这个名为"Android--开发--常用图片特效处理.rar"的压缩包很可能包含了实现各种图片特效的技术文档、示例代码或库资源。下面我们将详细探讨一些Android平台上常见的图片特效处理技术。 1. **图片裁剪与旋转**: 在...
在Android开发中,Canvas是用于在屏幕上绘制图形和图像的核心组件。`drawBitmap()`方法是Canvas的一个关键函数,用于在Canvas上绘制Bitmap图像。本文将深入解析`drawBitmap()`方法的参数及其用法,并通过实例来说明...
BitmapFunc 是一个与Android应用程序开发相关的主题,特别聚焦在Bitmap对象的使用和处理。Bitmap是Android平台中用于存储和操作图像的基本类,它在UI设计、图像加载、图像处理等场景中扮演着重要角色。本压缩包可能...
首先,`GLSurfaceView`是Android系统为了高效地显示OpenGL ES图形而设计的特殊视图。它包含了两个核心组件:`GLSurfaceView.Renderer`和`EGLContext`。`Renderer`是用户自定义的类,负责绘制图形,而`EGLContext`则...
在Android开发中,Bitmap是用于图像处理的基本对象,它存储并表示了图像的数据。而Matrix则是Android图形系统中的一个关键类,它允许我们对图像进行各种变换操作,如旋转、缩放、平移和倾斜等。这个教程将深入探讨...
android 通过surfacetexture绘制Bitmap,使用ISurfaceComposerClient创建新图层
在Android开发中,处理图像数据是一项常见的任务,而Bitmap和String是两个核心的数据类型,分别代表位图图像和文本字符串。Bitmap对象用于存储和显示图像,而String则常用于保存和传输文本信息。本篇文章将深入探讨...
在 Android 开发中,bitmap 图片处理是一个非常重要的方面,特别是在图片颜色修改方面,今天我们将介绍如何实现把 bitmap 图片的某一部分的颜色改成其他颜色。 首先,我们需要了解什么是 bitmap 图片,bitmap 图片...
在Android应用开发中,"Gallery"通常指的是一个用于展示图像的控件,用户可以通过左右滑动来浏览图片。本教程将聚焦于如何从SD卡(外部存储)中获取图片并用Gallery显示。以下是对这个主题的详细讲解: 1. **...
在Android开发中,有时我们需要将Bitmap对象转换成不同的图片格式,比如BMP。BMP(Bitmap File Format)是一种常见的位图文件格式,但它并不像JPEG或PNG那样被Android SDK直接支持。本文将详细介绍如何在Android中将...
在Android开发中,Bitmap是用于表示图像数据的核心类,它在UI显示和图像处理中扮演着重要角色。然而,由于Bitmap对象通常占用大量的内存,不当的处理可能导致内存溢出(Out Of Memory)问题,因此对Bitmap进行高效...