Android中shape属性详解:(设置圆角、设置渐变)

Android中shape属性详解:(设置圆角、设置渐变)

一、使用:

1、新建shape文件

首先在res/drawable文件夹下,新建一个文件,命名为:shape_radius.xml:
内容:

先简单介绍下shape是如何使用的,下面会有各个属性的详细解释

<?xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"    
android:shape="rectangle"    
android:layout_height="24dp"    
android:layout_width="50dp">    
<corners android:radius="10dp" />    
<solid android:color="#ffffff" />    
<stroke        
android:width="1dip"        
android:color="@color/line_gray" />
</shape>

2、添加到控件中

在定义好shape文件后,下一步就是将其添加到控件中或者添加到布局中,添加时,一般是使用设置background属性,将其为控件背景。

android:background="@drawable/window_dialog_border"

二、基本属性

corners:定义圆角
gradient:定义渐变色
padding:内边距(控件本身也可以实现)
size:大小(控件本身也可以实现)
solid:指定内部填充色
stroke:描边属性,可以定义描边的宽度,颜色,虚实线

详解:

Corners:

注:dimension:dp值

Corners标签里的子标签及其所具有的属性:

<corners    //定义圆角   
android:radius="dimension"      //全部的圆角半径   
android:topLeftRadius="dimension"   //左上角的圆角半径   
android:topRightRadius="dimension"  //右上角的圆角半径   
android:bottomLeftRadius="dimension"    //左下角的圆角半径   
android:bottomRightRadius="dimension" />    //右下角的圆角半径 

Corners标签是用来字义圆角的,其中radius与其它四个并不能共同使用

例如,该布局定义四个圆角半径为20,背景颜色为#ffffffff

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <corners android:radius="20dip"/>
    <solid android:color="#ffffffff"/>
</shape>

使用:

<TextView
        android:id="@+id/tv_save_rlectronicreceipt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/window_dialog_border"
      />

就能设置TextView四个角设置为半径20dp圆角,控件内部填充色为黑色。

2、solid

solid用以指定内部填充色

只有一个属性:
使用:设置为全黑的背景

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

3、gradient

gradient用以定义渐变色,可以定义两色渐变和三色渐变,及渐变样式,它的属性有下面几个:

<gradient  
android:type=["linear" | "radial" | "sweep"]    //共有3中渐变类型,线性渐变(默认)/放射渐变/扫描式渐变   

仅对线性渐变有效
android:angle="integer"     //渐变角度,必须为45的倍数,0为从左到右,90为从上到下,-90位从下到上, 


仅当渐变类型为放射渐变时有效
android:centerX="float"     //渐变中心X的相当位置,范围为0~1   
android:centerY="float"     //渐变中心Y的相当位置,范围为0~1   


android:startColor="color"   //渐变开始点的颜色   
android:centerColor="color"  //渐变中间点的颜色,在开始与结束点之间   
android:endColor="color"    //渐变结束点的颜色   

只有当渐变类型为radial时才能使用
android:gradientRadius="float"  //渐变的半径,   

useLevel属性通常不使用。该属性用于指定是否将该shape当成一个LevelListDrawable来使用,默认值为false
android:useLevel=["true" | "false"] />  //使用LevelListDrawable时就要设置为true。设为false时才有渐变效果   

4、stroke

这是描边属性,可以定义描边的宽度,颜色,虚实线等

使用

<stroke        
android:width="dimension"   //描边的宽度   
android:color="color"   //描边的颜色   

// 以下两个属性设置虚线   
android:dashWidth="dimension"   //虚线的宽度,值为0时是实线   
android:dashGap="dimension" />      //虚线的间隔 

5、size和padding

这两个基本上不怎么用,因为他们所具有的功能,控件本身也能实现。 size:是用来定义图形的大小的。

<size  
    android:width="dimension"  
    android:height="dimension" />

padding:用来定义内部边距:

<padding    
android:left="dimension"   
android:top="dimension"   
android:right="dimension"   
android:bottom="dimension" /> 

三、Shape的属性
Shape文件本身也具有一些属性

shape的形状,默认为矩形,可以设置为矩形(rectangle)、椭圆形(oval)、线性形状(line)、环形(ring)
android:shape=["rectangle" | "oval" | "line" | "ring"]  
  
下面的属性只有在android:shape="ring时可用:  
android:innerRadius         尺寸,内环的半径。  
android:innerRadiusRatio    浮点型,以环的宽度比率来表示内环的半径,  
android:thickness           尺寸,环的厚度  
android:thicknessRatio      浮点型,以环的宽度比率来表示环的厚度,例如,如果android:thicknessRatio="2",  
android:useLevel            boolean值,如果当做是LevelListDrawable使用时值为true,否则为false. 

可见,只有第一个shape是可用的,其它五个都是shape等于ring时所特有的。

注:
1、当不指定shape形状时,默认是矩形
2、当shape形状指定为环形(ring)时,一定要设置 android:useLevel = false 不然没有效果

发布了43 篇原创文章 · 获赞 22 · 访问量 5941

猜你喜欢

转载自blog.csdn.net/qq_41466437/article/details/102730301
今日推荐