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.绘图:
效果: