`
jguangyou
  • 浏览: 375660 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android 使用getDrawable和BitmapFactory.decodeResource加载图片资源区别

 
阅读更多

         在android中,使用this.getResources.getDrawable和BitmapFactory.decodeResource加载图片资源是有区别的,是用this.getResources.getDrawable方法加载图片资源时,无论对同一个资源加载多少次,堆内存的占用没有变化,也就是说再使用this.getResources.getDrawable加载同一个资源一次和加载100次,内存占用都是一样的(可能是共用一个堆内存,也就是你定义多个对象,但是这多个对象都指向同一个堆内存地址);但是使用BitmapFactory.decodeResource加载图片资源时,对同一个资源,每加载一次,都需要重新分配一下堆内存。

 

       我测试使用this.getResources.getDrawable加载同一个图片资源1000次,在ImageView中显示,使用DDMS查看堆内存时,变化微乎其微,但是使用BitmapFactory.decodeResource加载的时候,加载10多个就OOM了。

关于这个问题的具体原因,不知道上面说的对不对,请高手指点。

分享到:
评论

相关推荐

    Android 获得图片的方法

    无论是从应用内部加载图片资源,还是从外部存储读取图片,掌握正确的图片获取方法对于提升用户体验和程序性能都至关重要。本文将详细介绍几种在Android中获取图片资源的方法及其应用场景。 #### 二、从应用内部获取...

    android图片叠加

    - 首先,加载两张要叠加的图片资源,通常使用BitmapFactory.decodeResource()方法。 - 创建一个新Bitmap,大小为两张图片的宽度和高度之和,使用Bitmap.createBitmap()方法。 - 初始化一个Canvas对象,传入新创建...

    位图显示.rar

    这里,`R.drawable.my_image`是图片资源的ID,`BitmapFactory.decodeResource()`方法会解析资源并返回Bitmap对象。 2. **位图显示** 创建了Bitmap对象后,我们可以通过`ImageView`组件来显示位图。首先,我们需要...

    android ImageView网络图片加载、动态设置尺寸、圆角(绝对好用)

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), getDrawable().getConstantState().getId()); if (bitmap != null) { BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, ...

    Android textview 文字中间加上图片

    这里的`src`属性应该引用的是图片资源的URL或R.drawable中的ID。例如: ```xml <string name="html_text"><![CDATA[这是文字<img src="@drawable/my_icon"></p>]]> ``` 2. 使用SpannableString:通过创建`...

    Android实现图片叠加效果的两种方法

    在Android开发中,图片叠加效果是一种常见的视觉设计需求,它能增强用户界面的美观性和交互体验。本篇文章将深入探讨两种实现图片叠加效果的方法,并提供详细的代码示例。 首先,第一种方法是通过Canvas进行绘制。...

    android平台俄罗斯方块游戏完整代码

    - **加载图像资源**:使用`Resources`对象的`getDrawable()`方法加载图像资源到`Bitmap`对象。 - **优化图像**:可以使用`Canvas`和`Bitmap`进行图像的缩放、裁剪等操作。 - 示例代码片段: ```java public ...

    Android的TextView中显示图片和图像的方法

    可以使用`BitmapFactory.Options`的inSampleSize参数减小图片大小,或者使用Glide、Picasso等图片加载库进行异步加载和缓存管理。 总之,Android的TextView提供多种方式来显示图片和图像,开发者可以根据具体需求...

    Android bitmap

    总的来说,Android Bitmap的处理涵盖了从加载到保存、显示和优化等多个方面,理解其工作原理和最佳实践对于优化应用性能至关重要。在处理大量图像或高分辨率图像时,特别需要注意内存管理和性能优化。

    ImageView令图片变暗的方法

    在Android开发中,ImageView是用于显示图像的常见组件。当我们想要改变ImageView中图片的亮度,使其变暗,可以通过多种方式实现。本篇文章将详细介绍如何利用滤镜效果来达到这一目的,帮助开发者掌握调整图片亮度的...

    Android iconFile带图标的文件资源管理器.zip

    若要加载自定义图标,可以使用Drawable对象,例如,通过ContextCompat.getDrawable()方法从资源ID加载,或者使用BitmapFactory.decodeResource()解析本地资源文件。 对于文件资源管理器的界面设计,Android使用XML...

    自定义IamgeView解决不同分辨率下图片拉伸变形的问题

    BitmapFactory.decodeResource(getResources(), getDrawable().getResourceId(), options); imageWidth = options.outWidth; imageHeight = options.outHeight; // 计算缩放比例 float scale = Math.min(...

    从系统中读取位图的小例子

    这个“从系统中读取位图的小例子”是一个基础的教程,教你如何在Android应用中加载和使用位图资源。下面将详细解释相关知识点。 1. **位图(Bitmap)对象**: - Bitmap是Android中的一个类,用于表示图像数据。它...

    android 自定义图片合集(自定义控件)

    图片通常存储在项目的`res/drawable`目录下,可以通过`getDrawable(int resid)`或`BitmapFactory.decodeResource()`加载。确保正确处理资源的加载和释放,以避免内存泄漏。 4. **触摸事件处理**: 自定义控件可能...

    Volley加载网络图片到listView,自定义圆形图片

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), getDrawable().getResId()); if (bitmap != null) { BitmapShader shader = new BitmapShader(bitmap, BitmapShader.TileMode.CLAMP, ...

    Android图像介绍-利用bitmap加载图片文件并表示

    为此,Android提供了缩放Bitmap的功能,如`decodeResource()`和`decodeFile()`方法中的` BitmapFactory.Options`参数,可以设置inSampleSize来降低图片解析的分辨率。 在显示Bitmap时,我们通常会将其设置到...

    Android 实现图片/背景(半部分&全部)圆角 源码

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), getDrawable().getConstantState().getId()); BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP); ...

    安卓实现图片缩放

    首先,我们需要了解Android中的图片加载库,如Glide、Picasso和 Fresco等,它们都提供了便捷的图片缩放和加载功能。例如,Glide库通过`centerCrop()`和`fitCenter()`方法可以轻松调整图片缩放比例,使其填充或适应...

    Android裁剪图片为圆形图片Demo

    在Android中,我们可以使用`BitmapFactory`类来从资源文件、URI或字节数组加载图片。例如,从资源文件加载图片的代码如下: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable....

    Android 自定义imageview实现图片圆角

    // 获取图片资源 private int getImageResource() { return getDrawable() != null ? getDrawable().getResourceId() : -1; } // 创建圆角图片 private Bitmap getRoundedBitmap(Bitmap bitmap) { Bitmap ...

Global site tag (gtag.js) - Google Analytics