《Andorid开发艺术探索第六章》-Drawable
2016-08-10 13:00
211 查看
http://blog.csdn.net/guolin_blog/article/details/44171115
http://hujiaweibujidao.github.io/blog/2015/11/30/Art-of-Android-Development-Reading-Notes-6/
http://blog.csdn.net/lmj623565791/article/details/45022631
Drawable简介
Drawable的分类
自定义Drawable
repeat表示简单的水平和竖直方向上的平铺模效果。
mirror表示一种在水平和竖直方向上的镜面投影效果
clamp表示图片第四周的效果会扩展到周围区域
NinePatchDrawable和BitmaoDrawable一样
2. ShapeDrawable
3. LayerDrawable
Layer-list有层次的概念,下面的item会覆盖上面的item.通过合理的分层,可以实现一些特殊的叠加效果。
4. StateListDrawable
StateListDrawable对应于
5.* LevelListDrawable*
对应于
6. TransitionDrawable
TransitionDrawable对应于
7. InsetDrawable
对应于
8. ScaleDrawable
对应于
9. ClipDrawable
可以根据自己当前的等级来裁剪另一个Deawable,裁剪的方向可以通过android:clipOrientation和android:gravity这两个属性来共同控制
Drawable的内部大小不等于Drawable的实际区域大小,Drawable的实际区域大小可以通过它的getBounds方法来得到,一般来说它和view的尺寸相同。
参考: Android Drawable 那些不为人知的高效用法
Android样式的开发:shape篇
Android样式的开发:layer-list篇
Android样式的开发:selector篇
Android样式的开发:drawable汇总篇
Android样式的开发:Style篇
http://hujiaweibujidao.github.io/blog/2015/11/30/Art-of-Android-Development-Reading-Notes-6/
http://blog.csdn.net/lmj623565791/article/details/45022631
Drawable简介
Drawable的分类
自定义Drawable
Drawable简介
Drawable的内部宽/高这个参数比较重要,通过getIntrinsicWIdth和
getIntrinsicHeight这两个方法可以获取到它们,而图片和颜色所形成的Drawable则不可以这样计算
Drawable的分类
* BItmapDrawable和NinepatchDrawable*<?xml version="1.0" encoding="utf-8"?> <bitmap / nine-patch xmlns:android="http://schemas.android.com/apk/res/android" android:src="@[package:]drawable/drawable_resource" android:antialias=["true" | "false"] android:dither=["true" | "false"] android:filter=["true" | "false"] android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" | "fill_vertical" | "center_horizontal" | "fill_horizontal" | "center" | "fill" | "clip_vertical" | "clip_horizontal"] android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />
android:antialias是否开启图片抗锯齿功能,开启后会让图片变得平滑,同时也会在一定程度上降低图片的清晰度,应该开启。
android:dither是否开启抖动,当图片的像素配置和手机屏幕的像素配置不一致时,开启这个选项可以让高质量的图片在低质量的屏幕上还能保持较好的显示效果。建议开启
android:filter是否开启过滤效果。当图片尺寸被拉伸或者压缩时,开启过滤效果可以保持较好的显示效果。建议开启。
android:tileMode平铺模式。有如下几个值:
["disabled"|"clamp"|"repeat"|"mirror"|],其中disable表好关闭平铺模式,这也是默认值。
repeat表示简单的水平和竖直方向上的平铺模效果。
mirror表示一种在水平和竖直方向上的镜面投影效果
clamp表示图片第四周的效果会扩展到周围区域
NinePatchDrawable和BitmaoDrawable一样
2. ShapeDrawable
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | "oval" | "line" | "ring"] > <corners //当shape为rectangle时使用 android:radius="integer" //半径值会被后面的单个半径属性覆盖,默认为1dp android:topLeftRadius="integer" android:topRightRadius="integer" android:bottomLeftRadius="integer" android:bottomRightRadius="integer" /> <gradient //渐变 andr bf7d oid:angle="integer" android:centerX="integer" android:centerY="integer" android:centerColor="integer" android:endColor="color" android:gradientRadius="integer" android:startColor="color" android:type=["linear" | "radial" | "sweep"] android:useLevel=["true" | "false"] /> <padding //内边距 android:left="integer" android:top="integer" android:right="integer" android:bottom="integer" /> <size //指定大小,一般用在imageview配合scaleType属性使用 android:width="integer" android:height="integer" /> <solid //填充颜色 android:color="color" /> <stroke //边框 android:width="integer" android:color="color" android:dashWidth="integer" android:dashGap="integer" /> </shape>
其实体实际上是GradientDrawable
andorid:shape表示图片的形状:有四个选项:rectangle(矩形)、oval(椭圆)、line(横线)、ring(圆环)
corners表示shape的四个角的角度,只适用于矩形shape
<gradient>表示渐变效果,其中渐变的角度默认为0
<solid>表示纯色填充
<stoke>表示描边,其中abdroud:dashWidth和android:dashGap有任何一个为0,那么虚线效果将不能生效。
3. LayerDrawable
<layer_list> ... <item andorid:drawable = "@[package:]drawable/drawable_resource" ahdroid=... ... > </layer - list>
Layer-list有层次的概念,下面的item会覆盖上面的item.通过合理的分层,可以实现一些特殊的叠加效果。
4. StateListDrawable
StateListDrawable对应于
<selecor>标签,主要永固设置可单击的View的背景。一般来说默认的irem都应该放在selector的最后一条并且不附带任何状态。
5.* LevelListDrawable*
对应于
<level-list>标签,同样表示一个Drawable集合,集合中的每个Drawable都有一个等级(level)概念。(
Drawable的等级是由范围的,即0~10000,最小的等级是0,这也是默认值,最大等级是10000)
6. TransitionDrawable
TransitionDrawable对应于
<transition>标签,它用于实现两个Drawable之间的淡入淡出效果。
7. InsetDrawable
对应于
<inset>标签,它可以将其他Drawable内嵌到自己当中,并可以给四周留出一定的间距。
8. ScaleDrawable
对应于
<scale>标签,它可以根据自己的等级将指定的Drawable缩放到一定的比例。默认情况下:
等级对于ScaleDrawable的影响,等级为0表示ScaleDrawable不可见,这是默认值。要让它使用等级不能等于0.等级越高,缩放比例越大
9. ClipDrawable
可以根据自己当前的等级来裁剪另一个Deawable,裁剪的方向可以通过android:clipOrientation和android:gravity这两个属性来共同控制
<clip xmlns:android="http://schemas.android.com/apk/res/android" android:clipOrientation="vertical" android:drawable="@drawable/image1" android:gravity="bottom" />
自定义Drawable
Drawable的工作原理核心是Draw方法,其中setAlpha、
setColorFilter、
getOpactity是必须实现的
Drawable的内部大小不等于Drawable的实际区域大小,Drawable的实际区域大小可以通过它的getBounds方法来得到,一般来说它和view的尺寸相同。
参考: Android Drawable 那些不为人知的高效用法
Android样式的开发:shape篇
Android样式的开发:layer-list篇
Android样式的开发:selector篇
Android样式的开发:drawable汇总篇
Android样式的开发:Style篇
相关文章推荐
- 第六章Andorid的Drawable(Android开发艺术探索)
- Android 开发艺术探索笔记 第六章 Android的Drawable
- Android开发艺术探索第六章——Android的Drawable
- [Andorid开发艺术探索 读书笔记]View的事件体系(三)
- Android开发艺术探索<Drawable系列之二ShapeDrawable>
- 【读书笔记】【Android 开发艺术探索】第 6 章 Android 的 Drawable
- 第七章Andorid动画深入分析(Android开发艺术探索)
- 读书笔记:Android开发艺术探索之第6章 android的Drawable
- Android开发艺术探索<Drawable系列之五ScaleDrawable >
- [Andorid开发艺术探索 读书笔记]View的事件体系(一)
- Android开发艺术探索<Drawable系列之一BitmapDrawable>
- [Andorid开发艺术探索 读书笔记]Activity的生命周期和启动模式 (一)
- 开发艺术探索-- Drawable
- Andorid开发艺术探索读书笔记--Android四大组件
- Android开发艺术探索<Drawable系列之六ClipDrawabe >
- Android开发艺术探索<Drawable系列之四StateListDrawable >
- Android开发艺术探索 第六章 第七章
- [Andorid开发艺术探索 读书笔记]View的事件体系(二)
- Android开发艺术-第六章Drawable读书笔记
- Android开发艺术探索_Android的Drawable(六)