Android Graphics专题(1)--- Canvas基础

本文介绍了Android UI核心技术Canvas的基础知识,包括Canvas在Android控件体系中的作用,以及如何在自定义控件中使用Canvas进行图形和图像的绘制。通过分析View和ViewGroup的源码,阐述了Canvas的来源。同时,列举了常用的Canvas API,如drawBitmap、drawColor等,并通过两个示例展示了如何绘制Bitmap和实现变形效果。文章作为Android Graphics专题的开篇,为后续深入讨论Canvas和其他相关概念奠定了基础。
摘要由CSDN通过智能技术生成

作为Android Graphics专题的开篇,毫无疑问,我们将讨论Android UI技术的核心概念——Canvas

CanvasAndroid UI框架的基础,在Android的控件体系中,所有容器类、控件类在实现上都依赖于Canvas,界面的绘制实质上都是Canvas绘制的。本文将讨论Canvs的由来,并通过实例展示Canvas的基础用法。

对于应用开发而言,我们可以不去深究CanvasAndroid 控件体系的实现细节,但明白Canvas与控件的关联有助于我们更好的使用CanvasAndroid控件体系不是了解的朋友可以参见博文《Android原理揭秘系列之ViewViewGroup》。

先看下Android所有控件的基类——View.java的代码片段:

…
protected void onDraw(Canvas canvas) {
 }
….

熟悉Andriod应用开发的人对onDraw方法一定不会陌生。View基类里onDraw方法里是空的,但请注意,方法传入了形参——Canvas对象,也就是说,Canvas对象是UI体系流程中已经创建好的,我们直接拿来用即可,一般不需要自己构造。Canvas的典型使用场景是,在自定义控件重载基类的onDraw方法,并在onDraw方法中通过Canvas绘制我们想要的图形、图片等效果。

我们再看看容器类的基类——ViewGroup.javadispatchDraw方法的代码片段:

protected void dispatchDraw(Canvas canvas) {
         …
            for (int i = 0; i < count; i++) {
             …
                    more |= drawChild(canvas, child, drawingTime);
        } 
          …
}

dispatchDraw方法是ViewGroup分发绘制子View的核心函数,其通过drawChild方法具体绘制各个子View。这里我们只需要注意Canvas对象的出现位置,同样,Canvas作为形参从dispatchDraw方法传入,并传给drawChild方法用以绘制子view

通过ViewViewGroup两个核心函数的代码片段分析,我们能够非常清晰的明确Canvas在控件体系中的作用,以及我们接下来将讨论的Canvas用法的canvas对象来自何处。

Canvas在概念上可以理解为其它编程语言中的画布,在画布中,我们可以绘制各种图形,也可以绘制图片,更深层次的,如上ViewGroupdispatchDraw方法所描述的,我们可以通过变换Canvas,进而在容器内中自定义的绘制子控件。

本文只讨论Canvas的基础用法,即在自定义控件重载的onDraw方法中,使用Canvas来绘制基本的图形、图像等基础用法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值