一、Shape
1. 作用
ShapeDrawable 用于定义一个基本的几何图形,ShapeDrawable 对象的 XML 文件的根元素为<shape>。
2. 相关概念
摘自《疯狂Android-李刚》
(1)<shape>标签的属性
-
android:shape=["rectangle" | "oval" | "line" | "ring"]
定义 shape 时该属性必须指定,默认为矩形 -
以下
<shape>标签的属性只有android:shape="ring"时可用
android:innerRadius 尺寸,内环的半径。
android:innerRadiusRatio 浮点型,以环的宽度比率来表示内环的半径,
android:thickness 尺寸,环的厚度
android:thicknessRatio 浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",
android:useLevel boolean值,如果当做是LevelListDrawable使用时值为true,否则为false.
(2)<shape>标签的子标签
<corners>
作用:定义圆角
该标签下属性:
<corners //定义圆角
android:radius="dimension" //全部的圆角半径
android:topLeftRadius="dimension" //左上角的圆角半径
android:topRightRadius="dimension" //右上角的圆角半径
android:bottomLeftRadius="dimension" //左下角的圆角半径
android:bottomRightRadius="dimension" /> //右下角的圆角半径
<solid>
作用:定义内部填充色
该标签下属性:
<solid android:color="color" />
<gradient>
作用:定义渐变色
该标签下属性:
android:type=["linear" | "radial" | "sweep"] //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变
android:type="linear"时可用属性:
android:angle="integer" //渐变角度,必须为45的倍数,0为从左到右,90为从上到下
android:type="radial"(放射)时可用属性:
android:centerX="float" //渐变中心X的相当位置,范围为0~1
android:centerY="float" //渐变中心Y的相当位置,范围为0~1
android:gradientRadius="float" //渐变的半径,只有当渐变类型为radial时才能使用
android:type="sweep"(放射)时可用属性:
android:type=["linear" | "radial" | "sweep"]时均可用属性:
android: startColor = "color"//渐变开始点的颜色
android: centerColor = "color"//渐变中间点的颜色,在开始与结束点之间
android: endColor = "color" //渐变结束点的颜色
<stroke>
作用:定义描边,可定义宽度、颜色、虚实。
该标签下属性:
<stroke
android:width="dimension" //描边的宽度
android:color="color" //描边的颜色
// 以下两个属性设置虚线
android:dashWidth="dimension" //虚线的宽度,值为0时是实线
android:dashGap="dimension" /> //虚线的间隔
-
<size>和<padding>不常用
3. 使用
(1)新建 shape.xml文件,一般放在res/drawable/
(2)写写写
- 首先要指定
android:shape属性 - 然后设置相应的其他属性及子标签
(3)将 shape 应用到目标控件
二、Selector
1. 作用
StateListDrawable 用于组织多个 Drawable 资源,当使用 StateListDrawable 作为目标组件的背景、前景图片时,StateListDrawable 所显示的 Drawable 对象会随目标组件状态的改变而自动切换。
2. 相关概念
StateListDrawable 对象的 XML 文件的根元素为<selector>。
(1)<selector>标签的属性
无特别属性
(2)<selector>标签的子标签
<selector>可包含多个<item>标签。<item>标签的属性有:
-
android:color或android:drawable
指定颜色或 drawable 对象 -
android:state_xxx
指定一个特定状态
摘自《疯狂Android-李刚》
3. 使用
(1)新建 rselectot.xml文件,一般放在res/drawable/`
(2)写写写
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--获取焦点时颜色-->
<item android:color="#111" android:state_focused="true" />
<!--失去焦点时颜色-->
<item android:color="#112" android:state_focused="false" />
</selector>
(3)将 selector 应用到目标控件
<EditText
android:id="@+id/username"
android:text="账号"
android:textColor="@drawable/selector"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
三、Android 布局文件中涉及到的单位
四、Android 布局中的基线
五、不透明度
Android设置控件的透明度(半透明效果)
Android控件设置透明度的三种方法










网友评论