首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用ARGB_8888时,Android DrawBitMap非常慢

使用ARGB_8888时,Android DrawBitmap非常慢是因为ARGB_8888是一种颜色格式,它使用8位来表示每个颜色通道(Alpha、Red、Green、Blue),总共需要32位来表示一个像素。这种颜色格式具有较高的图像质量,但也会占用更多的内存和计算资源。

由于ARGB_8888需要处理更多的数据,因此在绘制大型位图时会导致性能下降。这可能会导致绘制操作变慢,特别是在频繁绘制的情况下,例如在动画或滚动过程中。

为了提高绘制性能,可以考虑以下几点:

  1. 使用更低的颜色格式:如果图像质量不是关键问题,可以考虑使用其他颜色格式,如RGB_565。这种格式只使用16位来表示一个像素,可以减少内存和计算资源的消耗,从而提高绘制性能。
  2. 缩小图像尺寸:如果可能的话,可以将图像的尺寸缩小到实际显示大小。这样可以减少需要处理的像素数量,从而提高绘制性能。
  3. 使用硬件加速:Android提供了硬件加速功能,可以通过开启硬件加速来提高绘制性能。可以在AndroidManifest.xml文件中的application标签下添加如下代码来开启硬件加速:
代码语言:xml
复制

<application android:hardwareAccelerated="true" ...>

代码语言:txt
复制

注意:硬件加速可能会因为设备兼容性问题而导致绘制错误,因此在开启硬件加速之前,建议进行充分的测试。

  1. 使用Bitmap的缓存:如果需要频繁绘制相同的位图,可以考虑将位图缓存起来,避免重复创建和绘制。可以使用LruCache等缓存机制来实现位图的缓存。

总结起来,当使用ARGB_8888时,Android DrawBitmap可能会变得非常慢。为了提高绘制性能,可以考虑使用更低的颜色格式、缩小图像尺寸、开启硬件加速以及使用位图缓存等方法。具体的优化策略需要根据实际情况进行调整和测试。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android Studio导入项目非常的解决办法

然而在实际使用时,依然有不少不爽的地方。...Android Studio原生支持使用Gradle来构建项目本是个不错的想法,使用动态语言Groovy定义项目构建过程,避免了build.xml文件的繁琐定义。...当用户导入项目工程,会自动到远程服务器上下载Gradle包。这样解决了客户端版本不一致的问题,但是也带来了一个新的问题:国内连接到远程服务器下载Gradle包的速度非常!...所以,每当从Github下载下来一个新项目导入到Android Studio,都会卡在这个界面: ?    ...这一点做的非常不友善。实际上,之所以卡在这,就是因为后台在服务器下载Gradle包。而这个Gradle包往往有几十兆,在网络环境不太好的情况下,可能要下很久才能完成。

1.3K90
  • Bitmap 详解

    ARGB_4444:每个像素占用2byte内存 ARGB_8888:每个像素占用4byte内存 RGB_565:每个像素占用2byte内存 Android默认的色彩模式为ARGB_8888...缺省值是ARGB_8888。...)信息   选取合适的采样率   将BitmapFacpry.Options的inSampleSize参数设为false并重新加载图片     使用Bitmap的一些注意事项 Bitmap recycler...在Android2.3代,Bitmap的引用是放在堆中的,而Bitmap的数据部分是放在栈中的,需要用户调用recycle方法手动进行内存回收,而在Android2.3之后,整个Bitmap,包括数据和引用...但是Android推出RenderScript之后,我们就有了新的选择,测试表明,使用RenderScript的渲染效率和使用C/C++不相上下,但是使用RenderScript却比使用JNI简单地多!

    2.1K20

    2--安卓多媒体之Bitmap操作全解析

    本篇将介绍: 1.用Bitmap获取图片的一些信息 2.利用已知的Bitmap对象使用canvas生成新的Bitmap 3.图象形状的Matrix矩阵变换的分析 4.图象颜色的ColorMatrix...是一个安卓对图片的封装类,名称便是位图,它可以解析二进制的图片文件(如,宽、高、每个像素点等) 二进制流的来源可以是多种多样的(文件、网络、项目资源、二进制流、字节数组等),其实本质是一样的 安卓中使用位图工厂...bitmap.getWidth() + L.l());//宽:500 L.d(bitmap.getHeight() + L.l());//高:400 L.d(bitmap.getConfig() + L.l());//配置:ARGB...就像一把剑,没有人用就没有意义一样 最常用的展示方式就是使用ImageView的setImageBitmap()方法 mIdIvShow.setImageBitmap(bitmap); 3.如何根据已知...Matrix.png ---- 下节讲述Android自身对Matrix的封装函数

    95820

    Android中的Bitmap的详细介绍

    Android中图片有四种颜色格式 颜色格式 每个像素占用内存(单位byte) 每个像素占用内存(单位bit) ALPHA_8 1 8 ARGB_8888(默认) 4 32 ARGB_4444 2 16...在实际应用中而言,建议使用ARGB_8888以及RGB_565。 如果你不需要透明度,那么就选择RGB_565,可以减少一半的内存占用....在用Canvas绘制位图,一般地,我们使用drawBitmap函数家族, 在这些函数中,都有一个Paint参数, 要做到防止锯齿,我们就要使用到这个参数。...第一个函数是用来防止边缘的锯齿, (true图像边缘相对清晰一点,锯齿痕迹不那么明显, false,写上去的字不饱满,不美观,看地不太清楚)。 第二个函数是用来对位图进行滤波处理。...最后,在画图的时候,调用drawBitmap函数,只需要将整个Paint传入即可。 有时候,当你做RotateAnimation, 你会发现,讨厌的锯齿又出现了。

    2.4K10

    Android使用Opengl录像添加水印

    使用的是OpenGL开发的,刚开始实现的是静态水印,后面才实现的动态水印。 先上效果图,左下角的是静态水印,中间偏下的是时间水印(动态水印): ?...一、静态水印 实现原理:录像是通过OpenGL把图像渲染到GLSurfaceView上的,通俗的讲,就是把图片画到一块画布上,然后展示出来。添加图片水印,就是把水印图片跟录制的图像一起画到画布上。...这是加载纹理跟阴影的Java类 package com.audiovideo.camera.blog; import android.opengl.GLES20; /** * Created by fenghaitao...绘图到glsurface * 我们将rendermode设置为glsurfaceview.rendermode_when_dirty, * 仅当调用requestrender时调用此方法(=需要更新纹理)...* 如果不在脏设置rendermode,则此方法的最大调用速度为60fps。

    1.5K10

    navicat远程连接数据库,闲置一段时间,再次操作,反应非常的解决方案

    1、问题描叙:每次用 navicat 连接成功数据库后,如果出现一段时间没有任何操作,再次刷新数据库、打开某一个表、执行 Sql 语句,界面会出现加载中……,要么就是卡顿现象。...当我们打开一张表的时候,navicat还是使用旧的连接去请求数据,发现旧的连接超时不能用了,最后又申请了一个新的连接,再去请求数据。...3、打开navicat界面,右键》连接属性》高级 目录 1、问题描叙:每次用 navicat 连接成功数据库后,如果出现一段时间没有任何操作,再次刷新数据库、打开某一个表、执行 Sql 语句,界面会出现加载中...当我们打开一张表的时候,navicat还是使用旧的连接去请求数据,发现旧的连接超时不能用了,最后又申请了一个新的连接,再去请求数据。...结语:我这个是自己搭建的Mysql-8.0.27数据库,才出现的这个问题,在此之前,我连接阿里云的Mysql数据库,并没有出现这种问题。

    2.3K10

    高性能图片优化方案

    那么开发中一般选择哪一种比较合适呢Android 中的图片在加载,默认的色彩格式是 ARGB_8888,也就是每个像素占用 4 个字节空间,一张 2700 1900 像素的照片,加载到内存就需要 19.6M...如果图片在 UI 组件中显示,不需要太高的图片质量,例如显示一张缩略图(不透明图片)等场景,这时,我们就没必要使用 ARGB_8888 的色彩格式了,只需要使用 RGB_565 模式即可满足显示的需要...当然从磁盘读取图片会比从内存要,而且由于磁盘读取操作时间是不可预期的,读取操作需要在后台线程中处理。...然后调用canvas.drawBitmap方法绘制图片第三步:对画笔进行修饰,设置画笔颜色属性,这里使用到了ColorMatrix,核心就是设置饱和度为0,即可绘制灰色内容7.4 如何处理图片旋转呢在Android...,设计师出的原图通常都非常大,他们通常会使用工具,经过一定的压缩,缩减到比较小一些的大小。

    80930

    Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?

    由于结果已经非常接近,我们很自然地想到精度问题。...这方面还是要酌情选择,前几年做了一段时间 Cocos2dx,由于资源非常多,项目组要求统一使用 png,可能就是出于这方面的考虑。 嗯,跑题了,我们其实想说的是怎么减少内存占用的。。...上必须关闭硬件加速 canvas.concat(matrix); canvas.drawBitmap(bitmap, 0,0, paint); 需要注意的是,在使用搭载 5.1.1 原生系统的 Nexus6...进行测试发现,如果使用 Canvas 的 setMatrix 方法,可能会导致与矩阵相关的元素的绘制存在问题,本例当中如果使用 setMatrix 方法,bitmap 将不会出现在屏幕上。...我们先看下有多少种格式可选: 格式 描述 ALPHA_8 只有一个alpha通道 ARGB_4444 这个从API 13开始不建议使用,因为质量太差 ARGB_8888 ARGB四个通道,每个通道8bit

    3.3K111

    Android开发中Bitmap高效加载使用详解

    由于Android对单个应用所施加的内存限制,比如16MB,这导致加载Bitmap的时候很容易出现内存溢出,本文主要包含2个方面的内容分析Bitmap内存和Bitmap高效加载 一、占用内存 获取bitmap...的内存,android提供的方法bitmap.getByteCount() 假如现在mipmap-xhdpi 目录下,有一个 200 * 200 像素的图片,运行加载它,看它输出的尺寸。...使用不透明的位图,不要求高的色彩保真度使用此配置是不错的选择。 Bitmap.Config ARGB_4444 这个参数每个像素占用2字节的空间。...能够满足最好的位图质量,在内存充足的情况下,十分推荐使用这个。...=2,采样后的图片宽,高均为原图大小的1/2,而像素数为原图的1/4,假定图片原有的内存是4MB,如果把它的inSampleSize设为2,它的内存就会变成1MB 具体实现代码如下 public

    94420

    Bitmap优化详解

    2.图片分辨率越高,消耗的内存越大,当加载高分辨率图片的时候,将会非常占用内存,一旦处理不当就会OOM。例如,一张分辨率为:1920x1080的图片。...如果Bitmap使用 ARGB_8888 32位来平铺显示的话,占用的内存是1920x1080x4个字节,占用将近8M内存,可想而知,如果不对图片进行处理的话,就会OOM。...Rect rect = new Rect(0, 0, bmp.getWidth() / ratio, bmp.getHeight() / ratio); canvas.drawBitmap...当inSampleSize为1,采样后的图片大小为图片的原始大小;当inSampleSize大于1,比如2,那么采样后的图片宽高均为原图大小的1/2,像素数为原图的1/4,其占有的内存大小也为原图的...这样,我们就不用频繁的去网络中载入图片,为了非常好的控制内存问题,则会考虑使用LruCache作为Bitmap在内存中的存放容器,在sd卡则使用DiskLruCache来统一管理磁盘上的图片缓存。

    1.9K20

    Android图片压缩质量参数Bitmap.Config RGB_565、 ARGB_8888的含义及用法

    android中的大图片一般都要经过压缩才显示,不然容易发生oom,一般我们压缩的时候都只关注其尺寸方面的大小,其实除了尺寸之外,影响一个图片占用空间的还有其色彩细节。...打开Android.graphics.Bitmap类里有一个内部类Bitmap.Config类,在Bitmap类里createBitmap(intwidth, int height, Bitmap.Config...Bitmap.Config ALPHA_8 public static final Bitmap.Config ARGB_4444 public static final Bitmap.Config ARGB..._8888 public static final Bitmap.Config RGB_565 一看,有点蒙了,ALPHA_8, ARGB_4444,ARGB_8888,RGB_565 到底是什么呢...使用RGB_565会比使用ARGB_8888少消耗2倍的内存,很多时候默认是ARGB_8888,所以我们需要主动设置为RGB_565.

    1.2K20

    突破自定义View性能瓶颈

    Android应用程序中,自定义View是一个非常常见的需求。自定义View可以帮助您创建独特的UI元素,以满足您的应用程序的特定需求。...在本篇文章中,我们将探讨一些Android自定义View性能优化的技巧,以确保您的应用程序在处理自定义View保持高效和稳定。我们将从以下几个方面进行讨论: 1....使用正确的布局 在创建自定义View,正确的布局是至关重要的。使用正确的布局可以帮助您最大限度地减少布局层次结构,从而提高您的应用程序的性能。...当您使用自定义View,通常需要创建多个实例。如果您没有正确地缓存这些实例,那么您的应用程序可能会变得非常。 为了缓存视图,您可以使用Android的ViewHolder模式或使用自定义缓存对象。...如果您的自定义View需要大量的绘制操作,那么您的应用程序可能会变得非常。 为了避免过多的绘制操作,您可以使用View的setWillNotDraw方法来禁用不必要的绘制。

    23130
    领券