在Android程序开发中,我们经常会去用到Shape这个东西去定义各种各样的形状,首先我们了解一下Shape下面有哪些标签,都代表什么意思:

           solid:填充
android:color指定填充的颜色

 

            gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,

android:angle是渐变角度,必须为45的整数倍
另外渐变默认的模式为android:type="linear",即线性渐变,

可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

angle值对应的位置如图:

 

 

stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp" 
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离

 

            corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,

同时设置五个属性,则Radius属性无效

android:Radius="20dp"                           设置四个角的半径

android:topLeftRadius="20dp"                设置左上角的半径 
android:topRightRadius="20dp"              设置右上角的半径 
android:bottomLeftRadius="20dp"          设置右下角的半径 
android:bottomRightRadius="20dp"        设置左下角的半径

 

       padding:间隔
可以设置上下左右四个方向的间隔

 

在这里我们来看一个简单的小例子,ShapDemo,在drawable文件夹下面先定义两个xml文件:

button_bg.xml的内容如下:

 

[html]  view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.       
  4.       
  5.     <solid android:color="#ff9d77" />   
  6.       
  7.       
  8.     <stroke  
  9.         android:width="2dp"   
  10.         android:color="#fad3cf" />   
  11.       
  12.       
  13.     <corners  
  14.         android:bottomLeftRadius="5dp"  
  15.         android:bottomRightRadius="5dp"  
  16.         android:topLeftRadius="5dp"  
  17.         android:topRightRadius="5dp" />   
  18.       
  19.       
  20.     <padding  
  21.         android:bottom="10dp"  
  22.         android:left="10dp"  
  23.         android:right="10dp"  
  24.         android:top="10dp" />   
  25.   
  26. shape>  


button_pressed_bg.xml的内容如下:

 

 

[html]  view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.   
  4.       
  5.     <gradient  
  6.         android:endColor="#FFFFFF"  
  7.         android:gradientRadius="50"  
  8.         android:startColor="#ff8c00"  
  9.         android:type="radial" />  
  10.       
  11.       
  12.     <stroke  
  13.         android:dashGap="3dp"  
  14.         android:dashWidth="5dp"  
  15.         android:width="2dp"  
  16.         android:color="#dcdcdc" />  
  17.       
  18.       
  19.     <corners android:radius="5dp" />  
  20.       
  21.       
  22.     <padding  
  23.         android:bottom="10dp"  
  24.         android:left="10dp"  
  25.         android:right="10dp"  
  26.         android:top="10dp" />  
  27.   
  28. shape>  


这里说明一点,在描边里面设置了dash参数,使得图形的边变成了虚线

 

在drawable文件夹下添加一个button.xml文件,内容如下:

 

[html]  view plain copy  
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">  
  3.   
  4.     <item android:drawable="@drawable/button_pressed_bg" android:state_pressed="true">item>  
  5.     <item android:drawable="@drawable/button_bg">item>  
  6.   
  7. selector>  


这个文件的意思以前讲过,normal(正常)情况下就显示button_bg,被press(按下)情况下就显示button_pressed_bg。

 

 

我们再来看一下layout目录下的activity_main.xml的内容:

 

[html]  view plain copy  
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent" >  
  5.   
  6.     <Button  
  7.         android:layout_width="wrap_content"  
  8.         android:layout_height="wrap_content"  
  9.         android:background="@drawable/button"  
  10.         android:text="TestShapeButton" />  
  11.   
  12. RelativeLayout>  


直接将background指定为drawable文件夹下的button.xml。

 

 

程序运行截图如下:

 

PS:粗浅的认识

转载于:https://www.cnblogs.com/oreal/p/4570027.html

更多相关文章

  1. android 各种控件颜色值
  2. 改变进度栏的颜色 progress bar 的背景色
  3. 修改EditText的光标颜色
  4. 关于文字颜色/图片背景---selector状态列表
  5. 3、android颜色取值
  6. Android RGB颜色查询对照表
  7. android中各种颜色在drawable.xml的值
  8. android中颜色对应的值
  9. Android中如何修改CheckBox的颜色

随机推荐

  1. android编译时出现'Unable to resolve ta
  2. OpenGL ES for Android 相机预览
  3. Android File存储
  4. Android 开源组件无限循环ViewPager
  5. 仿ios沉浸式头部
  6. Android 官方文档:(一)动画和图像 —— 1.5
  7. 如何将一个Activity设置成窗口的样式
  8. Android关于Bitmap内存溢出的一点想法
  9. android顶部栏属性ActionBar Options
  10. Android中对TextView中的部分内容的字体