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

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

分享到:
评论

相关推荐

    android 画图 bitmap drawable canvas paint

    在Android平台上,绘制图形是一项基本任务,涉及到多个关键类,如Bitmap、Drawable和Canvas,以及Paint。这些类共同构成了Android图形系统的核心,使得开发者能够创建丰富的用户界面和自定义视图。 首先,Bitmap是...

    Android中区别Drawable Bitmap Canvas Paint

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

    canvas、paint绘图

    在Android开发中,Canvas和Paint是两个至关重要的类,它们为开发者提供了丰富的图形绘制功能,使得我们可以自由地在屏幕上绘制各种形状、线条、文本以及图片。这篇文章将深入探讨Canvas和Paint在Android中的应用,...

    Android Drawable、Bitmap、byte、灰度 转换

    在Android开发中,图片资源的处理是常见的需求之一,涉及到多种数据类型之间的转换,包括`Drawable`、`Bitmap`、`byte[]`等。本文将详细介绍这些类型之间的转换方法,以及如何实现灰度图像的转换。 ### 1. `...

    Android Drawable、Bitmap、byte、灰度 之间的转换

    这段代码首先创建了一个与Drawable尺寸相同的Bitmap对象,然后通过Canvas将Drawable绘制到Bitmap上,最后返回这个Bitmap对象。 ### 2. 从资源中获取Bitmap 从Android资源中直接读取Bitmap,可以利用`BitmapFactory...

    Bitmap画圆形图片

    综上所述,实现Bitmap画圆形图片的关键在于自定义绘制逻辑,利用Canvas和Paint的特性。通过这种方式,不仅可以创建出美观的圆形头像效果,还可以根据需求进行更多的图形定制。在实际开发中,要兼顾性能和用户体验,...

    自定义Drawable实现圆形图片

    canvas.drawBitmap(bitmap, rect, rect, paint); return output; } @Override public void draw(Canvas canvas) { if (bitmap != null) { canvas.drawBitmap(bitmap, 0, 0, paint); } } // ...其他...

    文字转换成Drawable

    避免频繁创建新的Bitmap和Drawable对象,可以使用Bitmap.Config.ARGB_8888或Bitmap.Config.RGB_565来选择合适的位图配置以节省内存。 8. **兼容性**:确保在不同版本的Android系统上都能正常工作,可能需要适配API...

    android中的drawable集合

    在Android开发中,Drawable是图形和图像处理的重要组成部分,它是一种可以绘制到Canvas上的对象,广泛用于界面元素的装饰和状态表示。以下是对Android中drawable集合的详细解释: 1. **Bitmap Drawable**: Bitmap ...

    android bitMap

    接着创建一个`Bitmap` 和一个`Canvas`,并将`Drawable` 绘制到`Canvas` 上。 ##### 6. 获取圆角图片 ```java public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) { int w = bitmap....

    android Bitmap用法总结

    - 获取圆角Bitmap:`getRoundedCornerBitmap`方法利用Canvas和Paint创建圆角效果。 - 生成带倒影的Bitmap:`createReflectionImageWithOrigin`方法通过复制和翻转Bitmap并添加渐变效果实现。 以上就是Android中...

    代码实现drawable的selector效果

    canvas.drawBitmap(bitmap, 0, 0, paint); return output; } } ``` 这个自定义的`RoundImageView`会在绘制时自动将其内容转换为圆角图片。通过调整`cornerRadius`属性,你可以改变圆角的半径。 对于更复杂的...

    android 使用canvas把矩形图片变成圆角矩形显示

    在Android开发中,有时我们需要将一个矩形的图片转换为圆角矩形显示,以...总的来说,通过自定义View并结合Canvas的绘图能力,我们可以轻松地将矩形图片转换为圆角矩形,为Android应用添加更多个性化和美观的设计元素。

    安卓Android源码——截图,圆形,Canvas.zip

    在这个方法中,我们使用`canvas.drawCircle`和`PorterDuff.Mode.SRC_IN`来裁剪Bitmap为圆形。 ```java public class CircleImageView extends AppCompatImageView { @Override protected void onDraw(Canvas ...

    疯狂android资料:第七章图形与图像处理.doc

    在onDraw()方法中,可以使用Canvas的drawBitmap()、drawRect()等方法进行图像和形状的绘制,而Paint对象则决定了绘制的颜色、线条宽度、抗锯齿等效果。 举例来说,一个简单的自定义绘图View可能会这样实现: ```...

    Android编程中图片特效处理方法小结

    在Android中,`Drawable`是一个抽象类,它代表了屏幕上的可视元素,而`Bitmap`则是一个像素数组,可以直接用于绘制到Canvas上。将`Drawable`转换为`Bitmap`的代码如下: ```java public static Bitmap drawable2...

    安卓Android源码——(Canvas画布).zip

    在Android系统中,Canvas通常与其他类一起使用,比如Paint、Path和Drawable。Paint负责控制图形的外观,如颜色、风格、抗锯齿等;Path用于创建复杂路径,可以组合直线、曲线等元素;Drawable是可绘制对象的抽象接口...

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

    canvas.drawRect(0, 0, bitmap1.getWidth(), bitmap1.getHeight(), paint); // 在适当位置绘制第二个图片 paint = new Paint(); canvas.drawBitmap(bitmap2, Math.abs(bitmap1.getWidth() - bitmap2.getWidth()...

    Android 在Canvas指定区域绘制图片

    canvas.drawBitmap(bitmap, matrix, paint); ``` - **旋转图片**:同样,通过Matrix可以实现图片的旋转: ```java matrix.postRotate(45); // 旋转45度 ``` - **裁剪图片**:使用Canvas的clipRect()方法可以裁剪要在...

Global site tag (gtag.js) - Google Analytics