Android 自定义样式 shape


Android 的 shape 标签能够定义控件的样式.在 shape 的标签下,有6个子标签,分别是:

  • corners 设置圆角的弧度

  • gardient 颜色渐变

  • padding 内容与控件边距的距离

  • size 长宽

  • solid 填充物,颜色属性

  • stroke 描边颜色.


    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape=["rectangle" | "oval" | "line" | "ring"] >
    android:radius="integer"
    android:topLeftRadius="integer"
    android:topRightRadius="integer"
    android:bottomLeftRadius="integer"
    android:bottomRightRadius="integer" />
    android: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"] />
    android:left="integer"
    android:top="integer"
    android:right="integer"
    android:bottom="integer" />
    android:width="integer"
    android:height="integer" />
    android:color="color" />
    android:width="integer"
    android:color="color"
    android:dashWidth="integer"
    android:dashGap="integer" />

    这是 Google 的一个完整的 shape 的示例文件,列举了常见的 属性.下面将属性详细的进行讲解.

corners

Creates rounded corners for the shape. Applies only when the shape is a rectangle.

用来创建角落的形状.仅适用于控件的形状是一个长方形.

@radius = "20dp" -> 角的弧度,越大越圆
topRight@ -> 右上角
bottomLeft@ -> 右下角
topLeft@ -> 左上角
bottomRight@ -> 左下角

gardient

Specifies a gardient color for the shape

指定一个渐变颜色的形状.

startColor = "#ffffff" -> 起始颜色
endColor -> 结束颜色
centerColor -> 中心的颜色
type -> 渐变模式,默认为 linear 线性渐变
angle -> 渐变角度,必须为45的整数倍
gradientRadius = "50" -> 径向渐变需要指定半径
useLevel -> 暂时未知

padding

定义控件内容距离边界的距离.

bottom/left/right/top
这几个没什么好说的啦

solid

a solid color to fill the shape

填充控件的背景色

color = "#ffffff" -> 颜色的16进制

stroke

a stroke line for the shape

width = "2dp" -> 边框的宽度
color -> 颜色
dashWidth -> 虚线的宽度. - - - - 
dashGap -> 两个虚线之间的距离 -  -  -

shape 的部分就这么多了,用这些属性就可以自定义控件的样式了.


补充一下 selector 的使用方法

Android 中能够将若干个 shape 文件组合到一起,实现控件能够对不同的事件做出响应.这个其实不算很复杂.selector 主要有如下几个:

pressed
focused
selectd
checkable
checked
enabled
window_focused
default

匹配原则:讲匹配的第一项作为控件的样式,所以一般情况下都将 default 放到最后一个.
不是所有的 View 子类都拥有八种状态,比如 Button 对象,拥有 pressed、enabled、window_focused、default 四种状态,如果设置 selected 是无效的,所以要根据组件的具体情况设置。

状态的顺序排放:
pressed->focused->selected->checkable->checked->enabled->window_focused->default

android:state_enabled

View 对象没有被禁用时触发,即 android:enabled="true",否则失效。

android:state_window_focused

当前 Activity 拥有用户输入焦点时被触发,即显示在最前端,如果有退出后台或者弹出 Dialog 会失效。

其他的,都没啥啦~~

你可能感兴趣的:(Android 自定义样式 shape)