Android绘图机制与处理技巧

本文是《Android群英传》的读书笔记

屏幕的尺寸信息

屏幕参数

屏幕大小:指屏幕对角线的长度,通常使用“寸”来度量。

分辨率:分辨率是指手机屏幕的像素点个数。

PPI:每英寸像素(Pixels Per Inch)又被称为DPI(Dots Per Inch)。它是由对角线的像素点数除以屏幕的大小得到的。

系统屏幕密度

系统屏幕密度

独立像素密度dp

Android系统使用mdpi即密度值为160的屏幕作为标准,在这个屏幕上1px=1dp。

换算:ldpi:mdpi:hdpi:xhdpi:xxhpi=3:4:6:8:12

单位转换

过几天再写

2D绘图基础

drawPoint(点)、drawLine(线)、drawRect(矩形)、drawVertices(多边形)、drawArc(弧)、drawCircle(圆)

setAnitAlias();//设置画笔的抗锯齿效果

setColor();//设置画笔的颜色

setARGB();//设置画笔的A、R、G、B值

setAlpha();//设置画笔的Alpha();//设置画笔的Alpha值

setTextSize();//设置字体的尺寸

setStyle();//设置画笔的风格(空心或实心)

setStrokeWidth();//设置空心边框的宽度

Android XML绘图

Bitmap

Shape

Layer

代码
效果

Selector

Android绘图技巧

canvas

Canvas.save()

Canvas.restore()

Canvas.translate()

Canvas.rotate()

新建类,继承View,重写onDraw()方法

1.画圆

以屏幕中心为中心

2.画刻度指针

每15°画一条小竖线

3.画表针

以屏幕中心为中心,画表针
效果

SurfaceView

如果你的自定义View需要频繁刷新,或者刷新时数据处理量比较大,那么你就可以考虑使用SurfaceView来取代View了。

模板代码:

1.新建一个继承自SurfaceView的类,重写三个构造方法。

2.创建

3.初始化

4.在SurfaceView的三个回调方法中:

5.在SurfaceCreated()的子线程中:

6.子线程中的draw()方法:

SurfaceView实例

正弦曲线:

1.写出模板。

2.声明绘制正弦曲线要用到的东西:

3.在init()方法中初始化他们:

4.在子线程中计算正弦曲线坐标:

5.绘图:

效果:

数位板

1.写出模板。

2.声明绘制正弦曲线要用到的东西:

3.在init()方法中初始化他们:

4.重写onTouchEvent()方法,得到触摸路径:

5.在子线程中可以进行一些优化:

但有时候绘制也不用这么频繁。因此我们可以在子线程中,进行sleep操作,尽可能地节省系统资源。


6.绘图:

效果:

你可能感兴趣的:(Android绘图机制与处理技巧)