Android资源----ShapeDrawable

    直入主题,程序开发的时候回使用ShapeDrawable在drawable资源下定义,各种图形(圆,矩形等)以及它们的颜色等,这样可以让我们的按钮等比较友好的显示。

    首先看看在xml文件中定义方式

    1.定义各种图形

<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle"
    >
<solid
    android:color="#FFD39B"/>
</shape>
    它的的根源元素Shape,android:shape用来声明图形的形状,它的值有oval、ring、line、rectangle.

     <solid/>元素是用来申明图形单种颜色。其他的定义如下:

    2.定义图形四个角的弧度

<corners
    android:radius="1dp"
    android:topLeftRadius="1dp"
    android:topRightRadius="1dp"
    android:bottomLeftRadius="1dp"
    android:bottomRightRadius="1dp"
    />

         android:radius 是一次设置四个角的半径,z值越大圆角弧度越大,它与其余四个值同时存在时,它会失效不起作用,其余的四个属性分别定义对应角的弧度。

   3.定义图形的内边距

<padding
    android:top="1dp"
    android:left="1dp"
    android:bottom="1dp"
    android:right="1dp"
    />
   4.设置图形的大小

<size
    android:width="10dp"
    android:dashwidth="1dp"
    android:dashwidth="1dp"
    android:dashGap="1px"
            />
    5.绘制图形的边框

<stroke
    android:width="10dp"
    android:dashwidth="1dp"
    android:dashGap="1px"
    />
   android:width设置边框的的宽度,android:dashwidth设置破折线的长度,android:dashGap设置破线之间的空间,为0时就会变成实线。

   6.设置渐变色

<gradient
  android:angle="#FFFFFF"
    android:centerY="#FFFFFF"
    android:startColor="#FFFFFF"
    android:centerColor="#FFFFFF"
    android:endColor="#FFFFFF"
    android:gradientRadius="#FFFFFF"
    android:type="linear"
    android:useLevel="false"
    />
    android:startColor、android:centerColor、android:endColor分别为起始、中间和和结束结束颜色,android:angle设置渐变颜色的角度,android:type颜色渐变的方式,它的值有radial(径向渐变)、linear(线性渐变)、sweep默认值是 linear。

      我们实现一个小例子,在drawable文件夹下定义两个xml文件rect.xml和rect_grad.xml  

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
<solid
    android:color="#FFD39B"/>
    <corners
        android:radius="10dp"/>
    <stroke
        android:color="#FFF0F5"
        android:dashGap="5px"
        android:dashWidth="30dp"
        android:width="5dp"
        />
</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    >
   <gradient
       android:startColor="#FF8C69"
       android:centerColor="#FFFF00"
       android:endColor="#FF7256"
       android:angle="45"
       android:type="linear"
       />
    <padding
        android:top="5dp"
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"

        />
</shape>
     最后在layout布局文件中使用我们刚才定义的两个文件

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"
    android:orientation="vertical">
    <TextView
        android:layout_width="300dp"
        android:layout_height="40dp"
        android:text="圆角矩形"
        android:gravity="center"
        android:background="@drawable/rect"
        />
    <TextView
        android:layout_width="300dp"
        android:layout_height="40dp"
        android:text="颜色渐变"
        android:gravity="center"
        android:background="@drawable/rect_grad"
        />
</LinearLayout>
      布局超简单,没什么多说的,我们就是看看shape实现的效果  

     

 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值