android drawable
android.graphics.drawable.Drawable是个虚类。
它的直接子类有
BitmapDrawable, ClipDrawable, ColorDrawable, DrawableContainer, GradientDrawable,
InsetDrawable, LayerDrawable, NinePatchDrawable, PictureDrawable, RotateDrawable,
ScaleDrawable, ShapeDrawable
间接子类有
AnimationDrawable, LevelListDrawable, PaintDrawable, StateListDrawable, TransitionDrawable
Class Overview
A Drawable is a general abstraction for "something that can be drawn." Most often you will deal with Drawable as the type of resource retrieved for drawing things to the screen; the Drawable class provides a generic API for dealing with an underlying visual resource that may take a variety of forms. Unlike a View
, a Drawable does not have any facility to receive events or otherwise interact with the user.
In addition to simple drawing, Drawable provides a number of generic mechanisms for its client to interact with what is being drawn:
- The
setBounds(Rect)
method must be called to tell the Drawable where it is drawn and how large it should be. All Drawables should respect the requested size, often simply by scaling their imagery. A client can find the preferred size for some Drawables with thegetIntrinsicHeight()
andgetIntrinsicWidth()
methods.这个用来设置Drawable要画好大 - The
getPadding(Rect)
method can return from some Drawables information about how to frame content that is placed inside of them. For example, a Drawable that is intended to be the frame for a button widget would need to return padding that correctly places the label inside of itself.这个接口用于返回padding,这个padding其实表示的是控件的content的padding - The
setState(int[])
method allows the client to tell the Drawable in which state it is to be drawn, such as "focused", "selected", etc. Some drawables may modify their imagery based on the selected state. - The
setLevel(int)
method allows the client to supply a single continuous controller that can modify the Drawable is displayed, such as a battery level or progress level. Some drawables may modify their imagery based on the current level. - A Drawable can perform animations by calling back to its client through the
Drawable.Callback
interface. All clients should support this interface (viasetCallback(Drawable.Callback)
) so that animations will work. A simple way to do this is through the system facilities such assetBackgroundDrawable(Drawable)
andImageView
.
Drawable定义了一个可画的对象一些接口。 它是抽象类。我们只能实例化它的实现类。Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的可画对象。
注意1:如果要手动调用draw(Canvas canvas)来画Drawable, 一定要在之前通过 void setBounds(Rect bounds) 来设置其需要画到的区域。 注意2: 可通过setCallback(Drawable.Callback)来实现动画。
构造函数
Public Constructors | |
---|---|
Drawable() |
主要函数
Public Methods | |
---|---|
void |
clearColorFilter() |
final Rect |
copyBounds() Return a copy of the drawable's bounds in a new Rect. |
final void |
copyBounds(Rect bounds) Return a copy of the drawable's bounds in the specified Rect (allocated by the caller). |
static Drawable |
createFromPath(String pathName) Create a drawable from file path name. |
static Drawable |
createFromResourceStream(Resources res, TypedValue value, InputStream is, String srcName, BitmapFactory.Options opts) Create a drawable from an inputstream, using the given resources and value to determine density information. |
static Drawable |
createFromResourceStream(Resources res, TypedValue value, InputStream is, String srcName) Create a drawable from an inputstream, using the given resources and value to determine density information. |
static Drawable |
createFromStream(InputStream is, String srcName) Create a drawable from an inputstream |
static Drawable |
createFromXml(Resources r, XmlPullParser parser) Create a drawable from an XML document. |
static Drawable |
createFromXmlInner(Resources r, XmlPullParser parser, AttributeSet attrs) Create from inside an XML document. |
abstract void |
draw(Canvas canvas) Draw in its bounds (set via setBounds) respecting optional effects such as alpha (set via setAlpha) and color filter (set via setColorFilter). |
final Rect |
getBounds() Return the drawable's bounds Rect. |
Drawable.Callback |
getCallback() Return the current Drawable.Callback implementation attached to this Drawable. |
int |
getChangingConfigurations() Return a mask of the configuration parameters for which this drawable may change, requiring that it be re-created. |
Drawable.ConstantState |
getConstantState() Return a Drawable.ConstantState instance that holds the shared state of this Drawable. |
Drawable |
getCurrent() |
int |
getIntrinsicHeight() Return the intrinsic height of the underlying drawable object. |
int |
getIntrinsicWidth() Return the intrinsic width of the underlying drawable object. |
final int |
getLevel() Retrieve the current level. |
int |
getMinimumHeight() Returns the minimum height suggested by this Drawable. |
int |
getMinimumWidth() Returns the minimum width suggested by this Drawable. |
abstract int |
getOpacity() Return the opacity/transparency of this Drawable. |
boolean |
getPadding(Rect padding) Return in padding the insets suggested by this Drawable for placing content inside the drawable's bounds. |
int[] |
getState() Describes the current state, as a union of primitve states, such as state_focused, state_selected, etc. |
Region |
getTransparentRegion() Returns a Region representing the part of the Drawable that is completely transparent. |
void |
inflate(Resources r, XmlPullParser parser, AttributeSet attrs) Inflate this Drawable from an XML resource. |
void |
invalidateSelf() Use the current Drawable.Callback implementation to have this Drawable redrawn. |
boolean |
isStateful() Indicates whether this view will change its appearance based on state. |
final boolean |
isVisible() |
void |
jumpToCurrentState() If this Drawable does transition animations between states, ask that it immediately jump to the current state and skip any active animations. |
Drawable |
mutate() Make this drawable mutable. |
static int |
resolveOpacity(int op1, int op2) Return the appropriate opacity value for two source opacities. |
void |
scheduleSelf(Runnable what, long when) Use the current Drawable.Callback implementation to have this Drawable scheduled. |
abstract void |
setAlpha(int alpha) Specify an alpha value for the drawable. |
void |
setBounds(int left, int top, int right, int bottom) Specify a bounding rectangle for the Drawable. |
void |
setBounds(Rect bounds) Specify a bounding rectangle for the Drawable. |
final void |
setCallback(Drawable.Callback cb) Bind a Drawable.Callback object to this Drawable. |
void |
setChangingConfigurations(int configs) Set a mask of the configuration parameters for which this drawable may change, requiring that it be re-created. |
abstract void |
setColorFilter(ColorFilter cf) Specify an optional colorFilter for the drawable. |
void |
setColorFilter(int color, PorterDuff.Mode mode) Specify a color and porterduff mode to be the colorfilter for this drawable. |
void |
setDither(boolean dither) Set to true to have the drawable dither its colors when drawn to a device with fewer than 8-bits per color component. |
void |
setFilterBitmap(boolean filter) Set to true to have the drawable filter its bitmap when scaled or rotated (for drawables that use bitmaps). |
final boolean |
setLevel(int level) Specify the level for the drawable. |
boolean |
setState(int[] stateSet) Specify a set of states for the drawable. |
boolean |
setVisible(boolean visible, boolean restart) Set whether this Drawable is visible. |
void |
unscheduleSelf(Runnable what) Use the current Drawable.Callback implementation to have this Drawable unscheduled. |
Protected Methods | |
---|---|
void |
onBoundsChange(Rect bounds) Override this in your subclass to change appearance if you recognize the specified state. |
boolean |
onLevelChange(int level) Override this in your subclass to change appearance if you vary based on level. |
boolean |
onStateChange(int[] state) Override this in your subclass to change appearance if you recognize the specified state. |
直接子类 BitmapDrawable A Drawable that wraps a bitmap. You can create a BitmapDrawable from a file path, an input stream, through XML inflation, or from a Bitmap object. 它的本质是个bitmap,它提供了针对bitmap的实现。 注意:Android supports bitmap files in a three formats: .png (preferred), .jpg (acceptable), .gif (discouraged). 也是说Android把.png,.jpg,.gif都是看为BitmapDrawable,Android应该是把这三种图片转为bitmap来处理。 其实任何图片绘画时最后都是转为bitmap来处理 BitmapDrawable bitmapDrawable=(BitmapDrawable)context.getResources().getDrawable(R.drawable.icon); Bitmap bitmap=bitmapDrawable.getBitmap(); 可以通过上面的形式把BitmapDrawable转化为Bitmap ClipDrawable A Drawable that clips another Drawable based on this Drawable's current level value. 具体参照《ClipDrawable》 ColorDrawable A specialized Drawable that fills the Canvas with a specified color, with respect to the clip region. DrawableContainer 它应该是专门用来存放Drawable的。 如何直接使用它还不知道。它不能在XML文件中定义。 它的子类AnimationDrawable, LevelListDrawable, StateListDrawable GradientDrawable A Drawable with a color gradient for buttons, backgrounds, etc. It can be defined in an XML file with the <shape> element. For more information。 InsetDrawable A Drawable that insets another Drawable by a specified distance. LayerDrawable A Drawable that manages an array of other Drawables. NinePatchDrawable A resizeable bitmap, with stretchable areas that you define. 它对应的是.9.png文件。关于此请参考《个性缩放图片NinePatchDrawable》
PictureDrawable Drawable subclass that wraps a Picture, allowing the picture to be used whereever a Drawable is supported. RotateDrawable A Drawable that can rotate another Drawable based on the current level value. ScaleDrawable A Drawable that changes the size of another Drawable based on its current level value. ShapeDrawable A Drawable object that draws primitive shapes. 关于此请参考《ShapeDrawable》
ColorDrawable
A specialized Drawable that fills the Canvas with a specified color,
with respect to the clip region. Note that a ColorDrawable ignores the ColorFilter.
It also ignores the Bounds, meaning it will draw everywhere in the current clip,
even if setBounds(...) was called with a smaller area.
It can be defined in an XML file with the <color> element.
注意1:它会忽略掉ColorFilter和Bounds,它会把整个clip区域都填充成指定的颜色。
在XML中定义和引用ColorDrawable
A color resource can also be used as a drawable in XML. For example,
when creating a state list drawable, you can reference a color resource for the android:drawable attribute
(android:drawable="@color/green
在values下的Colors.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<resources>
<color name="red">#FFFF0000</color>
</resources>
像引用Drawable一样引用它
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@color/red"
/>
- python基础知识——内置数据结构(列表)
- 【Go 语言社区】Go语言Slice去重
- 【Go 语言社区】Golang 语言再谈接口
- 【Go 语言社区】Golang 语言再谈常量
- 【Go 语言社区】HTML5 Canvas+JS控制电脑或手机上的摄像头实例
- MySQL Profile在5.7的简单测试(r10笔记第50天)
- 【Go 语言社区】Golang中interface判断nil问题
- 有趣的rownum测试(r10笔记第49天)
- 【Go 语言社区】关于Golang 数据缓存到redis内存数据库遇到的问题
- go中的读写锁RWMutex
- Centos7.4 版本环境下安装Mysql5.7操作记录
- 你必须知道的23个最有用的Elasticseaerch检索技巧
- Elasticsearch Jest实战深入详解
- 在oracle中计算时间差
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- R语言实现生物序列的降维比对
- Tomcat NIO(9)-IO线程-Overall流程和关键类
- 有限元平面四边形等差单元python编程
- 动图演示:手撸堆栈的两种实现方法!
- [Go] 实战项目在线客服GO-FLY -在gin框架使用IP识别库转换IP为城市
- leetcode1552题解【二分+贪心】
- 这三年被分布式坑惨了,曝光十大坑
- 为什么删数据也提示空间不足呢?
- 前端踩坑系列《六》——让人又爱又恨的npm包
- docker运行Tomcat后访问首页报404(详细永久解决步骤)
- vue.js如何快速入门第1篇
- 3.列表-HTML基础
- 启动时间的一些分析
- 1.HTML基础知识-HTML进阶
- 浅析一个postgresql的死锁问题