shape

在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 plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <!-- 填充 -->
  4. <solid android:color="#ff9d77" /> <!-- 定义填充的颜色值 -->
  5. <!-- 描边 -->
  6. <stroke
  7. android:width="2dp"
  8. android:color="#fad3cf" /> <!-- 定义描边的宽度和描边的颜色值 -->
  9. <!-- 圆角 -->
  10. <corners
  11. android:bottomLeftRadius="5dp"
  12. android:bottomRightRadius="5dp"
  13. android:topLeftRadius="5dp"
  14. android:topRightRadius="5dp" /> <!-- 设置四个角的半径 -->
  15. <!-- 间隔 -->
  16. <padding
  17. android:bottom="10dp"
  18. android:left="10dp"
  19. android:right="10dp"
  20. android:top="10dp" /> <!-- 设置各个方向的间隔 -->
  21. </shape>

button_pressed_bg.xml的内容如下:

[html] view plaincopy

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <shape xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <!-- 渐变 -->
  4. <gradient
  5. android:endColor="#FFFFFF"
  6. android:gradientRadius="50"
  7. android:startColor="#ff8c00"
  8. android:type="radial" />
  9. <!-- 描边 -->
  10. <stroke
  11. android:dashGap="3dp"
  12. android:dashWidth="5dp"
  13. android:width="2dp"
  14. android:color="#dcdcdc" />
  15. <!-- 圆角 -->
  16. <corners android:radius="5dp" />
  17. <!-- 间隔  -->
  18. <padding
  19. android:bottom="10dp"
  20. android:left="10dp"
  21. android:right="10dp"
  22. android:top="10dp" />
  23. </shape>

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

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

[html] view plaincopy

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

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

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

[html] view plaincopy

  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. <Button
  6. android:layout_width="wrap_content"
  7. android:layout_height="wrap_content"
  8. android:background="@drawable/button"
  9. android:text="TestShapeButton" />
  10. </RelativeLayout>

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

程序运行截图如下:

时间: 2025-01-13 16:01:51

shape的相关文章

android shape的使用

shape用于设定形状,可以在selector,layout等里面使用,有6个子标签,各属性如下: <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 圆角 --> <corners android:radius="9dp&q

Android Selector 与 Shape 基本用法

分类: Android2011-07-19 11:07 7513人阅读 评论(4) 收藏 举报 androidencodingbutton测试c 1:Selector drawable的item中可以有以下属性: android:drawable="@[package:]drawable/drawable_resource" android:state_pressed=["true" | "false"] android:state_focuse

时空地图TimeGIS 可编辑ArcGIS的Shape矢量文件的地理信息系统

时空地图 TimeGIS 6.0 是一个地理信息系统软件,它可以显示网络地图,编辑ArcGIS的SHP矢量文件格式,显示NETCDF等栅格文件,管理图层等. 在它的基础上,可以二次开发各种GIS应用,如历史GIS,土地GIS,水利GIS,交通GIS,GPS软件,气象GIS等等. 时空地图 TimeGIS 6.0 功能介绍 提供网络地图,如Bing Map, Open street map等,用户可以在此地图基础上创建自己的Shape文件 显示和编辑ArcGIS的SHP矢量文件格式 显示NETCD

Android shape和selector完全总结

shape和selector嵌套版 <?xml version="1.0" encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"> <!-- 非触摸模式下获得焦点并单击时的背景图片 --><item android:state_focused="true" androi

[转]Android Shape渲染的使用(经典,学习研究不后悔)

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://mzh3344258.blog.51cto.com/1823534/1215749 感觉好久都没有写博文了,感觉自己变懒了,真对不起…-_-…   也有部分原因是因为我想写的东 西网上已经有了,再加上还有很多方面小马我也正在学习,所以….这段时间一直暂停更新我的博客文 章,看到博客的访问量一天天的增加,很开心 ...O_O...这一阵子也看了各种各样的书籍,技 术类的.非技术类的

android shape

shape使用.渐变色.分割线.边框.半透明.半透明阴影效果. http://www.tuicool.com/articles/Q7Vree <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape=["rectangle" | &

Android 自定义shape圆形按钮

Shape的属性: solid 描述:内部填充 属性:android:color 填充颜色 size 描述:大小 属性: android:width 宽 android:height 高 gradient 描述:渐变色 属性: android:startColor渐变起始颜色 android:endColor渐变结束颜色 android:centerColor渐变中间颜色 android:angle 渐变的角度,angle=0时,渐变色是从左向右,然后逆时针方向转:当angle=90时,渐变色从

Android开发:shape和selector和layer-list的(详细说明)

shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和selector在美化控件中的作用是至关重要的. 1.Shape 简介 作用:XML中定义的几何形状 位置:res/drawable/文件的名称.xml 使用的方法: Java代码中:R.drawable.文件的名称 XML中:Android:background="@drawable/文件的名称&

在使用shape的同时,用代码修改shape的颜色属性

Android里面经常会使用shape来定制一些View的背景 可以修改View的背景颜色,形状等属性 一般情况下,shape都是在xml文件里面写死了,今天遇到一个需求,View的形状是圆角的,但是颜色是在代码里面设置的 最开始的思路是先在代码里给View设置颜色,再在shape里面设置solid属性为透明色 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="htt

Android之用自定义的shape去实现shadow效果

直接上xml文件, 并且附上相应的解析: <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <layer-list> <!-- 相当于p