(七)android的绘图机制&&Drawable

来源:互联网 发布:mac笔记本键盘打不出字 编辑:程序博客网 时间:2024/05/16 08:46
首先是关于cavans的save和restore方法,save是保存状态。restore是恢复保存之前的状态, 防止save后对Canvas执行的操作对后续的绘制有影响。如:先save(状态1,坐标左上角为0,0),再调用rotate方法做操作(画线之类)(状态2 坐标系旋转90度 右上角为0,0),再调用restore方法恢复到状态1(坐标左上角为0,0  但 所画的线还在,不变).

SurfaceView与View的区别:
      View用于主动更新的情况下,SurfaceView主要适应于被动更新,频繁刷新
      View在主线程对画面刷新,SurfaceView会通过一个子线程对页面刷新
      View在绘图时没有双缓冲机制,SurfaceView在底层实现了双缓冲机制

在XML中定义BimapDrawable:


在XML中定义ShapeDrawable:



LayerDrawable的XML定义:

StateListDrawable对应与<selector/>标签。
LevelListDrawwable对应于<level-list/>标签。表示一个Drawable集合,集合中每个Drawable都有一个等级概念,根据不同等级,切换对应的Drawable。
TransitionDrawable,对应与<transition>标签,用于实现两个Drawable之间的淡入淡出的效果。代码中开启效果。
InsetDrawable对应与<inset>标签,当一个View希望自己的背景比自己的实际区域小时,可以使用inset实现。
ScaleDrawable标签,对应<scale>标签,根据自己的等级(level)将指定的Drawable缩放到一定比例。偏向于缩小。好得在代码中设置等级。
ClipDrawable对应于<clip>标签,根据自己当前的等级裁剪另一个Drawable。受clipOrientation和gravity影响。

自定义Drawable
   自定义的Drawable无法在xml中使用。关键重写draw方法。


原创粉丝点击