Android中区别Drawable Bitmap Canvas Paint

1.概念区别:

很多网友刚刚开始学习Android平台,对于Drawable、Bitmap、Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap、Canvas相关的都有所变化。

首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口。

Bitmap - 称作位图

一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565、RGB888。作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低。我们理解为一种存储对象比较好。

Drawable - 作为Android平下通用的图形对象

它可以装载常用格式的图像,比如GIF、PNG、JPG,当然也支持BMP,当然还提供一些高级的可视化对象,比如渐变、图形等。

Canvas - 名为画布

我们可以看作是一种处理过程,使用各种方法来管理Bitmap、GL或者Path路径,同时它可以配合Matrix矩阵类给图像做旋转、缩放等操作,同时Canvas类还提供了裁剪、选取等操作。

Paint - 我们可以把它看做一个画图工具

比如画笔、画刷。他管理了每个画图工具的字体、颜色、样式。

如果涉及一些Android游戏开发、显示特效可以通过这些底层图形类来高效实现自己的应用。

2.转换方法:

1)Bitmap 转化为 byte

ByteArrayOutputStream out = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 100, out); byte[] array= out.toByteArray();

2)byte转化为bitmap

final ContentResolver contentResolver = context.getContentResolver(); final PackageManager manager = context.getPackageManager(); final Cursor c = contentResolver.query(uri, null, null, null, null); final int icon3DIndex = c.getColumnIndexOrThrow(ColumnName); byte[] data = c.getBlob(icon3DIndex); Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

3)bitmap 转换 drawable

Bitmap bitmap = new Bitmap(...); Drawable drawable = new BitmapDrawable(bitmap); //Drawable drawable = new FastBitmapDrawable(bitmap);

4)Drawable to Bitmap

a. BitmapDrawable, FastBitmapDrawable直接用getBitmap

b. 其他类型的Drawable用Canvas画到一个bitmap上

Canvas canvas = new Canvas(bitmap) drawable.draw(canvas); Drawable d = ImagesList.get(0); Bitmap bitmap = ((BitmapDrawable)d).getBitmap();

以上就是对 Android 中 Drawable Bitmap Canvas Paint 之间的区别,Android开发者涉及此模块的同学可以参考下。

时间: 2024-09-20 12:28:23

Android中区别Drawable Bitmap Canvas Paint的相关文章

Android中区别Drawable Bitmap Canvas Paint_Android

1.概念区别: 很多网友刚刚开始学习Android平台,对于Drawable.Bitmap.Canvas和Paint它们之间的概念不是很清楚,其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap.Canvas相关的都有所变化. 首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口. Bitmap - 称作位图 一般位图的文件格式后缀为bm

canvas清零-Android中怎样清零canvas啊?也就是将画面恢复最初的模样,如下图

问题描述 Android中怎样清零canvas啊?也就是将画面恢复最初的模样,如下图 我做的是一个示波器雏形,想让波形从左画到右后就屏幕清零,以便再从左重新开始画一幅. OnClickListener listener=new OnClickListener() {//一个按钮的监听器,按钮被按,则开启画图示波任务. @Override public void onClick(View v) { // TODO Auto-generated method stub if(task!=null)

解析Android中View转换为Bitmap及getDrawingCache=null的解决方法_Android

1.前言 Android中经常会遇到把View转换为Bitmap的情形,比如,对整个屏幕视图进行截屏并生成图片:Coverflow中需要把一页一页的view转换为Bitmap.以便实现复杂的图形效果(阴影.倒影效果等):再比如一些动态的实时View为便于观察和记录数据.需要临时生成静态的Bitmap. 2.实现方法 1)下面是笔者经常用的一个转换方法 public static Bitmap convertViewToBitmap(View view, int bitmapWidth, int

解析Android中View转换为Bitmap及getDrawingCache=null的解决方法

1.前言 Android中经常会遇到把View转换为Bitmap的情形,比如,对整个屏幕视图进行截屏并生成图片:Coverflow中需要把一页一页的view转换为Bitmap.以便实现复杂的图形效果(阴影.倒影效果等):再比如一些动态的实时View为便于观察和记录数据.需要临时生成静态的Bitmap. 2.实现方法 1)下面是笔者经常用的一个转换方法 public static Bitmap convertViewToBitmap(View view, int bitmapWidth, int

改善用户体验,用图片的自身变化以及进度通知摆脱传统的进度条,okhttp,Canvas,Paint实现

转载请注明出处:王亟亟的大牛之路 从最开始的白页面等待,到后来的进度条告知用户,到现在的WebBO/微信这种先下缩略图点击才重新下大图的方式,我们开发者对用户感知的注意度越来越高,昨天刷微博的时候看到他们是用一个灰色转圈圈的实现,所以就萌生的今天要做的内容的启发(我是在不知道给这种实现取什么名字,就写了一大堆,感觉在哪见过类似的但是,忘了出自于哪了) 先上下效果: GIF软件继续把我的效果给吃了..大家可以自己跑一下,看效果. HOW to do? 1.我们的图片来自于网络,如果是本地,也不需要

Android中Bitmap和Drawable用法详解

一.相关概念 1.Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象2.Canvas画布,绘图的目的区域,用于绘图3.Bitmap位图,用于图的处理4.Matrix矩阵二.Bitmap 1.从资源中获取Bitmap Resources res = getResources(); Bitmap bmp = BitmapFacto

Android中Canvas绘图基础详解(附源码下载)

Android中,如果我们想绘制复杂的自定义View或游戏,我们就需要熟悉绘图API.Android通过Canvas类暴露了很多drawXXX方法,我们可以通过这些方法绘制各种各样的图形.Canvas绘图有三个基本要素:Canvas.绘图坐标系以及Paint.Canvas是画布,我们通过Canvas的各种drawXXX方法将图形绘制到Canvas上面,在drawXXX方法中我们需要传入要绘制的图形的坐标形状,还要传入一个画笔Paint.drawXXX方法以及传入其中的坐标决定了要绘制的图形的形状

我的Android进阶之旅------>Android中Drawable分类汇总详解

Android把可绘制的对象抽象为Drawable,不同的图形图像资源就代表着不同的drawable类型.Android FrameWork提供了一些具体的Drawable实现,通常在代码中都不会直接接触Drawable的实现类.         在实际的开发过程中,会把使用到的资源都放置在res/drawable目录,剩下的工作交给Android SDK 就行了,当需要使用图片资源的时候,可以使用@drawable标志在xml中引用drawable资源就行,也可以在代码中使用id引用这些dra

android中的图形图像-访问图片drawable

 一.如何获取 res 中的资源数据包package:android.content.res主要类:Resources其主要接口按照功能,划分为以下三部分: getXXXX() 例如: int getColor(int id) Drawable getDrawable(int id) String getString(int id)  直接获取res中存放的资源 InputStream openRawResource(int id)  获取资源的数据流,读取资源数据 void parseBund