Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法

刚刚开始学习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游戏开发、显示特效可以通过这些底层图形类来高效实现自己的应用。

1.Drawable -> Bitmap


1

((BitmapDrawable)res.getDrawable(R.drawable.youricon)).getBitmap();

2.Bitmap -> Drawable


1

Drawable
d =
new BitmapDrawable(bitmap);

3.从资源中获取Bitmap

a.通过decodeResource,这种方式不可取,

因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。

b.通过BitmapFactory.de


1

2

3

Resources
res=getResources();  

Bitmap
bmp=BitmapFactory.decodeResource(res, R.drawable.pic);

codeStream方法,创建出一个bitmap


1

2

InputStream
is = context.getResources().openRawResource(R.drawable.app_sample_code);

Bitmap
bmp = BitmapFactory.decodeStream(is);

4.Bitmap → byte[]


1

2

3

4

5

private byte[]
Bitmap2Bytes(Bitmap bm){  

    ByteArrayOutputStream
baos =
new ByteArrayOutputStream();    

    bm.compress(Bitmap.CompressFormat.PNG,
100,
baos);    

return baos.toByteArray();  

}

5.byte[] → Bitmap


1

2

3

4

5

6

7

8

private Bitmap
Bytes2Bimap(
byte[]
b){  

if(b.length!=0){  

return BitmapFactory.decodeByteArray(b,
0,
b.length);  

            }  

else {  

return null;  

            }  

 }

时间: 2024-08-04 00:30:30

Drawable、Bitmap、Canvas和Paint的关系以及部分使用方法的相关文章

Android--Drawable、Bitmap、Canvas和Paint的关系

Drawable.Bitmap.Canvas和Paint 除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap.Canvas相关的都有所变化. 首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口. (1)Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高

安卓开发应该知道的Drawable、Bitmap、Canvas和Paint的关系

首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口. Bitmap - 称作位图,一般位图的文件格式后缀为bmp,当然编码器也有很多如RGB565.RGB888.作为一种逐像素的显示对象执行效率高,但是缺点也很明显存储效率低.我们理解为一种存储对象比较好. Drawable - 作为Android平下通用的图形对象,它可以装载常用格式的图像,比如GIF.PNG.JPG,当然也支持BMP,当

Android中android.graphics下面的绘制图形类Canvas,Paint,Bitmap,Drawable

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

android在设计界面 drawable,canvas,和Bitmap

一.drawable  图形对象,可以转载常用格式的图像,可能是(位图)Bitmapdrawable,或者shapedrawable(图形),还可能是多种其他图片格式GIF,PNG,JEPG 二.Bitmap 就是位图,用于图片的处理 三.Canvas 意为画布,就是绘画的目标区域,用来管理Bitmp或者path路径 下面就是讲到drawable转换成Bitmap的方法 我所知有两种方法(两种方法谁好谁坏,得看情况) (1)常见的一种方法就是创建个Bitmap出来,再用画布绑定这个位图,将dra

【Android】21.2 Canvas和Paint

分类:C#.Android.VS2015: 创建日期:2016-03-19 一.Canvas对象简介 画布(Canvas对象)是与System.Drawing或iOS核心图形等传统框架非常类似的另一种图形图像绘制技术,该对象提供了创建2D图形的最大控制,利用它可解决难以处理画板资源的情况.例如,绘制自定义滑块控件的外观等. 可以把Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套绘图API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的

canvas和paint常用方法

效果图: 页面代码: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); mPaint = new Paint(); mPaint.setColor(Color.BLACK);//设置画笔颜色 mPaint.setTextSize(14);//设置字体大小 canvas.drawText(actionStr, 100, 100, mPaint);//写字 mPaint.setStrokeWidth(10);

Android查缺补漏(View篇)--自定义View利器Canvas和Paint详解

上篇文章介绍了自定义View的创建流程,从宏观上给出了一个自定义View的创建步骤,本篇是上一篇文章的延续,介绍了自定义View中两个必不可少的工具Canvas和Paint,从细节上更进一步的讲解自定义View的详细绘制方法.如果把自定义View比作盖一座房子,那么上篇文章就相当于教会了我们怎么一步步的搭建房子的骨架,而本篇文章将要教会我们的是为房子的骨架添砖加瓦直至成型,甚至是怎么装修. Canvas 为了后文更为方便的讲解Canvas的常用方法的使用,我们先来做一些准备工作,创建一个自定义V

Android使用学习之画图(Canvas,Paint)与手势感应及其应用(乒乓球小游戏)

作为一个没有学习Android的菜鸟,近期一直在工作之外努力地学习的Android的使用. 这周看了下Android的画图.主要是Canvas,Paint等,感觉须要实践下.下午正好有空,就想整一个乒乓球的游戏,算是巩固学的知识. 首先,须要了解下Android的画图须要掌握的经常使用类.包含Canvas,就像一个画板一样,全部的东西都是在其上画的.Paint就是画笔.用其能够画各种基本图形和文字.       Canvas和Paint经常使用的方法就不列举了,这种东西网上到处是.有了这两个东西

Android -- Drawable && Bitmap

Bitmap转Drawable Bitmap bm=xxx; BitmapDrawable bd=new BitmapDrawable(bm); 因为BtimapDrawable是Drawable的子类,最终直接使用bd对象即可. Drawable转Bitmap Drawable d=xxx; BitmapDrawable bd = (BitmapDrawable) d; Bitmap bm = bd.getBitmap(); 最终bm就是我们需要的Bitmap对象了. 从资源中获取Bitmap