Android高级进阶

Drawable--学习笔记

2016-03-11  本文已影响41人  Kevin_Curry

什么是drawable? drawable和bitmap有什么不同?    

    Drawable表示的是一种可以在Canvas上绘制的抽象概念。drawable是一个抽象类

 Bitmap对象是一张bitmap格式image的表示 Drawable对象是“那些能够在其上面图画的任意对象”,

 它也许是一个bitmap对象,也可能是一个solid color、一个其他Drawable对象的集合,亦或是某种结构

Drawable的分类

BitmapDrawable  表示一张图片

android:src 就是图片资源

android:antialias  是否开启图片的抗锯齿功能

android:dither  是否开启抖动效果

android:filter 是否开启过滤效果

android:gravity   当图片小于容器的尺寸时 此选项用于对图片的定位;

android:mipMap  这是一种图片的相关的处理技术

android:tileMode  平铺模式  开启后 gravity 属性会被忽略;

ShapeDrawable  通过颜色来构建图形;

android:shape 表示图形的形状 默认为矩形 可以有rectangle(矩形) oval(椭圆) line (横线)ring(圆形)四个选项  line 和ring必须要通过<Stroke>标签来指定线的 宽度和颜色等信息

<corners>表示shape的四个角的角度 只使用于矩形 px表示

<gradient> 它和<solid>是互相排斥的 solid表示的是纯色填充gradient表示的是渐变效果

<stroke>表示描边

<padding> 表示空白

<size>表示 shape的大小

LayerDrawable  表示层次化的drawable集合 

对应的xml标签是<layer-list> 一个layer-list中可以有多个item没一个item表示一个drawable;

StateListDrawable 它也表示的是drawable的集合 每个drawable对应着view的一种状态对应的是<selector>标签 

android:constantSize  默认false 表示stateListDrawable的固有大小是否会随着状态的改变而改变

android:dither  是否开启抖动效果  默认为true

android:variablePadding  不建议开启此项 默认false;

LevelListDrawable 同样表示drawable的集合 对应xml标签<level-list>

集合中的没一个drawable都有一个等级的概念 根据不同的level切换不同的drawable;  

TransitionDrawable  表示两个drawable间淡入淡出的效果 对应标签<transition>

insetDrawable  对应<inset>标签 可以将其他drawable内嵌到自己当中 并可以在四周留出一定的间距

ScaleDrawable  对应<scale>标签  它可以根据自己的等级将指定的drawable 缩放到一定的比例

ClipDrawable   对应<clip>标签  它可以根据自己的等级来裁剪另一个drawable 裁剪的方向可以通过属性控制

BitmapShader 

BitmapShader 是Shader的子类,可以通过Paint.setShader(Shader shader)进行设置

BitmapShader,构造方法:

mBitmapShader = new BitmapShader(bitmap, TileMode.CLAMP, TileMode.CLAMP);

参数1:bitmap

参数2,参数3:TileMode;

TileMode的取值有三种:

CLAMP 拉伸

REPEAT 重复 

MIRROR 镜像

Xfermode

上一篇下一篇

猜你喜欢

热点阅读