android资源文件之:shape详解

文章出处:https://blog.csdn.net/shift_wwx/article/details/38706989


目前发现shape是用于TextView、EditText、Button的background用,当然也可以配合selector使用,简单说就跟一般的图片是一样的,只不过这里变成了手动绘制了。


先show上code:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
       android:shape="rectangle" >
    
    <solid android:color="#FFFFAEB9" />
    
    <stroke 
        android:width="8dp"
        android:color="@android:color/white"/>
    
    <padding 
        android:left="20dp"
        android:right="20dp"
        android:top="20dp"
        android:bottom="20dp"/>
    
    <corners 
        android:radius="5dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"/>
    
    <gradient 
        android:startColor="#FFFFD700"
        android:endColor="#FF483D8B"
        android:angle="42"
        android:type="radial"
        android:gradientRadius="40"/>   
</shape>

android:shape

属性值有:"rectangle" | "oval" | "line" | "ring"

rectangle是矩形,也是默认值

oval是椭圆形,如果设置为这个属性corners就没有效果了

line是直线,ring是环形

1) solid :填充颜色

只有一个属性android:color,表示需要填充的颜色,默认应该是是全透明色。

即跟

android:color="@android:color/transparent"

效果是一样的。


2) stroke:边框、描边

    <stroke 
        android:width="8dp"
        android:color="@android:color/white"/>
android:width 表示实线框的宽度

android:color 表示边框的颜色

另外,还有两个属性代表虚线框:

android:dashWidth="5dp"   表示虚线框的宽度

android:dashGap="3dp"     表示虚线框的虚线之间的间隔

这两个属性任意一个属性为0时,代表的是实线


3) padding:间隔

    <padding 
        android:left="8dp"
        android:right="8dp"
        android:top="8dp"
        android:bottom="8dp"/>
相当于背景沿着上、下、左、右分别拉伸一定的间隔,也就是说中间的填充分别向四个方向拉伸一定间隔


4) corners:圆角

    <corners 
        android:radius="5dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"/>
android:radius:radius是半径的意思,可以想象一个半径越小,这个弧度应该越小,半径越大这个弧度也是越大的,但是肯定有个上限,超过了就看不到效果了

android:topLeftRadius:左上角弧度

android:topRightRadius:右上角弧度

android:bottomLeftRadius:左下角弧度,网上的很多资料应该是sdk版本比较旧,这个属性当时是右下角,但是我在4.4上是左下角,google应该是修正过来了

android:bottomRightRadius:右下角


5) gradient:渐变

   <gradient 
        android:startColor="#FFFFD700"
        android:endColor="#FF483D8B"
        android:angle="45"
        android:type="sweep"/>
gradient的属性稍微繁琐一点。

android:startColor:渐变的起始色,如果只设置这个不设置endColor,会向底图颜色渐变

android:endColor: 渐变的终止色,同样如果没有设置startColor,会以底图颜色为起点色

android:angle:        配合渐变,这个值为0-315,设置必须为45的倍数,不然会报错的。0就是左边,45就是左下角,逆时针依次增加

android:type:           渐变方式,属性有linear、sweep、radial,默认是linear即线性渐变。angle属性也只有在type是linear的时候有效,其他的时候是没有效果的。radial的意思是从中心渐变,如果type的属性值为radial的时候,必须要设置渐变半径即另一个属性gradientRadius。

android:gradientRadius:渐变半径配合type为radial使用

另外还有三个属性需要看一下source code解释,暂时未知

android:centerX

android:centerY

android:useLevel





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

私房菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值