Android shape的属性介绍

shape有四种类型分别是rectangle 矩形,oval 椭圆,ring 环形,line 线;

下面就分不同图形来分别介绍一下各个属性

1.首先讲一下rectangle矩形

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

    <stroke android:width="1dp" android:dashGap="5dp" android:dashWidth="10dp"></stroke>

    <corners android:radius="10dp"></corners>

    <solid android:color="#ff0000"></solid>

    <size android:width="50dp"
        android:height="50dp"/>

</shape>

Stroke :边框标签, width边框宽度 dashGap虚线间隙 dashWidth虚线的宽度(当dash为0的时候为实线)

corners:圆角, radius四边圆角半径(另外有topLeftRadius,topRightRadius,bottomLeftRadius,bottomRightRadius 可以只设置其中的一个圆角

:填充色

size:默认大小



渐变属性介绍(线性渐变:(linear)

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

<stroke android:width="1dp" ></stroke>

<corners android:radius="5dp"></corners>


<size android:width="50dp"
    android:height="50dp"/>
<gradient android:type="linear" android:angle="0"   android:startColor="#ff0000" android:endColor="#0000ff"  ></gradient>


</shape>


gradient:表示渐变属性 type 表示渐变的样式 
type="linear|sweep|radial" 三种渐变模式

angle:线性渐变的方向(值为45的整数倍)0为从左往右,45:左下45度到右上,90:从下往上 ,180从右往左,以此类推
startColor:开始位置的颜色
centerColor:中间位置的颜色
endColor:介绍位置的渐变颜色

angle:角度如下图



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

    <stroke android:width="1dp" android:dashGap="5dp" android:dashWidth="10dp"></stroke>

    <corners android:radius="10dp"></corners>

    <solid android:color="#fff"></solid>

    <size android:width="50dp"
        android:height="50dp"/>
    <gradient android:type="sweep"  android:centerColor="#00ff00"   android:startColor="#ff000000" android:endColor="#0000ff"  ></gradient>


</shape>
gradient:表示渐变属性 type 表示渐变的样式 
type=“sweep”角度渐变
startColor:开始位置的颜色
centerColor:中间位置的颜色
endColor:介绍位置的渐变颜色



gradient:表示渐变属性 type 表示渐变的样式 
type=“radial”镜像渐变

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
    >
<stroke android:width="1dp" ></stroke>
<size android:width="70dp"
    android:height="50dp"/>
<gradient android:type="radial" android:gradientRadius="25dp"   android:startColor="#ff0000" android:centerColor="#fff" android:endColor="#0000ff"  ></gradient>

</shape>


gradientRadius:和镜像属性结合使用的也是必须要设定的属性
表示镜像半径的大小

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"
    >
<stroke android:width="1dp" ></stroke>
<size android:width="70dp"
    android:height="50dp"/>
<gradient android:type="radial" android:gradientRadius="25dp"  android:centerX="0.9" android:centerY="0.5" android:startColor="#ff0000" android:centerColor="#fff" android:endColor="#0000ff"  ></gradient>

</shape>


android:centerX
   
   
    Float。渐变中心的相对X坐标,在0到1.0之间。
android:centerY
    Float。渐变中心的相对Y坐标,在0到1.0之间。

3.ring环形
    android:shape="ring"
环形图形
    android:innerRadius="25dp"
内环的半径。一个尺寸值(dip等等)或者一个尺寸资源
    android:innerRadiusRatio="9"
 Float类型。这个值表示内部环的比例,例如,如果android:innerRadiusRatio = " 5 ",那么内部的半径等于环的宽度除以5。这个值会被android:innerRadius重写。 默认值是9。( innerRaiusRatio=view的宽度/半径)

    android:thickness="10dp"
 尺寸。环的厚度,是一个尺寸值或尺寸的资源。
    android:thicknessRatio="3"
 Float类型。厚度的比例。例如,如果android:thicknessRatio= " 2 ",然后厚度等于环的宽度除以2。这个值是被android:innerRadius重写, 默认值是3。(thickenessRatio=View的宽度/环厚度

    android:useLevel="false"
     Boolean类型。如果用在 LevelListDrawable里,那么就是true。如果通常不出现则为false。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:thickness="2dp"
    android:useLevel="false"
    >

    <gradient android:type="sweep" android:startColor="#ff0000" android:endColor="#00000000"></gradient>

    <size android:width="100dp"
        android:height="100dp"/>
</shape>



<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadius="15dp"
    android:thickness="10dp"
    android:useLevel="false"
    >

    <solid android:color="#ff0000"></solid>
    <size android:width="100dp"
        android:height="100dp"/>

</shape>


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadius="30dp"
    android:thicknessRatio="9"
    android:useLevel="false"
    >

    <solid android:color="#ff0000"></solid>
    <size android:width="100dp"
        android:height="100dp"/>

</shape>


4.line线
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line"
    android:useLevel="false"
    >
    <stroke android:color="#ff0000" android:dashGap="1dp" android:dashWidth="2dp" android:width="2dp"></stroke>


<size android:width="100dp"
    android:height="50dp"/>

</shape>



备注:

shape写line虚线的时候发现4.0以上机型很多都没办法显示,后来在xml中

  1. android:layerType="software"  

代码中可以添加:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. line.setLayerType(View.LAYER_TYPE_SOFTWARE, null);  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值