返回
深入剖析Android Drawable,揭秘图形绘制的艺术
Android
2023-09-12 14:07:09
Android的Drawable详解
前言
本篇文章是《Android开发艺术探索》第6章的读后感和实践Demo,是关于Android的Drawable的相关知识。
在之前写Bitmap的文章时,有个很有意思的问题,就是在Android中,我们一般用Bitmap来做图片处理,但是在Drawable中,我们却可以用Bitmap来创建Drawable对象。这不禁让我对Drawable产生了浓厚的兴趣,于是就有了这篇文章。
Drawable是什么?
Drawable是Android图形绘制的基础,它定义了如何将图形绘制到Canvas上。Drawable可以是Bitmap、Shape、LayerDrawable、LevelListDrawable、GradientDrawable、StateListDrawable、AnimatedStateListDrawable等。
Drawable的种类
Drawable的种类非常多,主要包括:
- BitmapDrawable :使用Bitmap创建的Drawable对象。
- ShapeDrawable :使用Shape创建的Drawable对象。
- LayerDrawable :将多个Drawable对象组合成一个Drawable对象。
- LevelListDrawable :根据不同的level值显示不同的Drawable对象。
- GradientDrawable :使用渐变色创建的Drawable对象。
- StateListDrawable :根据不同的state值显示不同的Drawable对象。
- AnimatedStateListDrawable :根据不同的state值显示不同的动画Drawable对象。
Drawable的属性
Drawable的属性有很多,主要包括:
- bounds :Drawable的边界。
- intrinsicWidth :Drawable的固有宽度。
- intrinsicHeight :Drawable的固有高度。
- opacity :Drawable的透明度。
- colorFilter :Drawable的颜色过滤器。
- padding :Drawable的内边距。
- mirrored :Drawable是否镜像。
- tileMode :Drawable的平铺模式。
- alpha :Drawable的透明度。
- state :Drawable的状态。
Drawable的绘制过程
Drawable的绘制过程如下:
- 调用Drawable的draw()方法。
- Drawable调用Canvas的save()方法保存当前Canvas的状态。
- Drawable将自身绘制到Canvas上。
- Drawable调用Canvas的restore()方法恢复Canvas的状态。
Drawable的实例
以下是一些使用Drawable创建图形的实例:
<!-- 使用Bitmap创建Drawable -->
<ImageView
android:src="@drawable/my_image" />
<!-- 使用Shape创建Drawable -->
<ShapeDrawable
android:shape="rectangle"
android:color="#ff0000" />
<!-- 使用LayerDrawable创建Drawable -->
<LayerDrawable
android:drawable="@drawable/my_image"
android:drawable="@drawable/my_text" />
<!-- 使用LevelListDrawable创建Drawable -->
<LevelListDrawable>
<item
android:drawable="@drawable/my_image_1"
android:maxLevel="0" />
<item
android:drawable="@drawable/my_image_2"
android:minLevel="1" />
</LevelListDrawable>
<!-- 使用GradientDrawable创建Drawable -->
<GradientDrawable
android:shape="rectangle"
android:startColor="#ff0000"
android:endColor="#00ff00" />
<!-- 使用StateListDrawable创建Drawable -->
<StateListDrawable>
<item
android:drawable="@drawable/my_image_1"
android:state_pressed="true" />
<item
android:drawable="@drawable/my_image_2" />
</StateListDrawable>
<!-- 使用AnimatedStateListDrawable创建Drawable -->
<AnimatedStateListDrawable>
<item
android:drawable="@drawable/my_image_1"
android:state_pressed="true" />
<item
android:drawable="@drawable/my_image_2" />
<transition
android:fromId="@drawable/my_image_1"
android:toId="@drawable/my_image_2" />
</AnimatedStateListDrawable>
结语
Drawable是Android图形绘制的基础,它提供了丰富的功能和种类,可以帮助开发者创建各种各样的图形。希望本文对广大Android开发者有所帮助。