Android小知识——xml、shape知识点记录1

本文详细解析了Android Shape组件的属性说明及使用方法,包括填充、描边、圆角、间隔、大小、渐变等核心内容。通过实际代码示例,帮助开发者快速掌握如何在Android应用中灵活运用Shape组件,实现界面的个性化设计。
摘要由CSDN通过智能技术生成

来至:http://www.2cto.com/kf/201412/358878.html(这个好像不是源,是网页抓取的吧,没找到原网页)
来源:http://www.cnblogs.com/ylligang/articles/2272352.html

gradient – 对应颜色渐变。 startcolor、endcolor就不多说了。 android:angle 是指从哪个角度开始变。
solid – 填充。
stroke – 描边。
corners – 圆角。
padding – 定义内容离边界的距离。 与android:padding_left、android:padding_right这些是一个道理。

与Java类的对应关系
父节点 shape – ShapeDrawable
[子节点] gradient –
[子节点] padding –
[子节点] corners – setCornerRadius 、setCornerRadii
[子节点] solid –
[子节点] stroke – setStroke
[子节点] size – setSize

<?xml version="1.0" encoding="utf-8"?>
    <shape
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape=["rectangle" | "oval" | "line" | "ring"] >
        <!--"rectangle"     矩阵,这也是默认的shape-->
        <!--"oval"        椭圆-->
        <!--"line"        一条水平的直线。这种shape必须使用<stroke> 元素来定义这条线的宽度-->
        <!--"ring"        圆环-->

        <corners
            android:radius="integer"
            android:topLeftRadius="integer"
            android:topRightRadius="integer"
            android:bottomLeftRadius="integer"
            android:bottomRightRadius="integer" />
        <gradient
            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"] />
        <padding
            android:left="integer"
            android:top="integer"
            android:right="integer"
            android:bottom="integer" />
        <size
            android:width="integer"
            android:height="integer" />
        <solid
            android:color="color" />
        <stroke
            android:width="integer"
            android:color="color"
            android:dashWidth="integer"
            android:dashGap="integer" />
    </shape>

上面这段就是shape使用的格式,来看一下如何使用:

下面的属性只有当 android:shape=”ring”才使用:

  1. android:innerRadius
    尺寸。 内环的半径。一个尺寸值(dip等等)或者一个尺寸资源。
  2. android:innerRadiusRatio
    Float类型。这个值表示内部环的比例,例如,如果android:innerRadiusRatio = ” 5 “,那么内部的半径等于环的宽度除以5。这个值会被android:innerRadius重写。 默认值是9。
  3. android:thickness
    尺寸。环的厚度,是一个尺寸值或尺寸的资源。
  4. android:thicknessRatio
    Float类型。厚度的比例。例如,如果android:thicknessRatio= ” 2 “,然后厚度等于环的宽度除以2。这个值是被android:innerRadius重写, 默认值是3。
  5. android:useLevel
    Boolean类型。如果用在 LevelListDrawable里,那么就是true。如果通常不出现则为false。

corners 为Shape创建一个圆角,只有shape是rectangle时候才使用。

  1. android:radius
    Dimension。圆角的半径。会被下面每个特定的圆角属性重写。
  2. android:topLeftRadius
    Dimension。top-left 设置左上角的半径
  3. . android:topRightRadius
    Dimension。top-right 设置右上角的半径
  4. android:bottomLeftRadius
    Dimension。 设置右下角的半径
  5. android:bottomRightRadius
    Dimension。设置左下角的半径

gradient指定这个shape的渐变颜色。

  1. android:angle
    Integer。渐变的角度。 0 代表从 left 到 right。90 代表bottom到 top。必须是45的倍数,默认为0
  2. android:centerX
    Float。渐变中心的相对X坐标,在0到1.0之间。
  3. android:centerY
    Float。渐变中心的相对Y坐标,在0到1.0之间。
  4. android:centerColor
    Color。可选的颜色值。基于startColor和endColor之间。
  5. android:endColor
    Color。 结束的颜色。
  6. android:gradientRadius
    Float 。渐变的半径。只有在 android:type=”radial”才使用
  7. android:startColor
    Color。开始的颜色值。
  8. android:type
    Keyword。渐变的模式,下面值之一: “linear” 线形渐变。这也是默认的模式 “radial” 辐射渐变。startColor即辐射中心的颜色 “sweep” 扫描线渐变。
  9. android:useLevel
    Boolean。如果在LevelListDrawable中使用,则为true

padding内容与视图边界的距离

  1. android:left Dimension。左边填充距离.
  2. android:top Dimension。顶部填充距离.
  3. android:right Dimension。右边填充距离.
  4. android:bottom Dimension。底部填充距离.

size这个shape的大小。

  1. android:height Dimension。这个shape的高度。
  2. android:width Dimension。这个shape的宽度。

注意:默认情况下,这个shape会缩放到与他所在容器大小成正比。当你在一个ImageView中使用这个shape,你可以使用
android:scaleType=”center”来限制这种缩放。

solid填充这个shape的纯色
android:color
Color。颜色值,十六进制数,或者一个Color资源

stroke这个shape使用的笔画,当android:shape=”line”的时候,必须设置该元素。
1. android:width
   Dimension。笔画的粗细。
2. android:color
   Color。笔画的颜色
3. android:dashGap
  Dimension。每画一条线就间隔多少。只有当
4. android:dashWidth也设置了才有效。 android:dashWidth
Dimension。每画一条线的长度。只有当 android:dashGap也设置了才有效。
5.android:dashGap和android:dashWidth设置这条线为虚线的,其中android:dashWidth表示’-‘这样一个横线的宽度,android:dashGap表示之间隔开的距离,

使用别人的一段代码:
button_bg.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 填充 -->
    <solid android:color="#ff9d77" /> <!-- 定义填充的颜色值 -->

    <!-- 描边 -->
    <stroke
        android:width="2dp"    
        android:color="#fad3cf" /> <!-- 定义描边的宽度和描边的颜色值 -->

    <!-- 圆角 -->
    <corners
        android:bottomLeftRadius="5dp"
        android:bottomRightRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp" /> <!-- 设置四个角的半径 -->

      <!-- 间隔 -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" /> <!-- 设置各个方向的间隔 -->

</shape>

button_pressed_bg.xml的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <!-- 渐变 -->
    <gradient
        android:endColor="#FFFFFF"
        android:gradientRadius="50"
        android:startColor="#ff8c00"
        android:type="radial" />
     <!-- radial-辐射渐变 -->   
     <!-- “linear” 线形渐变 -->
     <!-- “sweep” 扫描线渐变 -->
    <!-- 描边 -->
    <stroke
        android:dashGap="3dp"
        android:dashWidth="5dp"
        android:width="2dp"
        android:color="#dcdcdc" />

    <!-- 圆角 -->
    <corners android:radius="5dp" />

    <!-- 间隔  -->
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />

</shape>

如何使用,看下面的代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/button_pressed_bg" android:state_pressed="true"></item>
    <item android:drawable="@drawable/button_bg"></item>

</selector>

说明:这篇文章是自己用来记录xml–shape的一些属性说明的;平常开发老忘记,一直去查,有些麻烦,这篇文章会一直更新,一直精简,一直添加

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值