Android shape 渐变!描边!圆角!示例详解
Android 中常常使用shape来定义控件的一些显示属性,今天看了一些shape的使用,对shape有了大体的了解,稍作总结:
- 先看下面的代码:
<!-- 实心 -->
<solid android:color="#ff9d77"/> <!-- 渐变 -->
<gradient android:startColor="#ff8c00"
android:endColor="#FFFFFF" android:angle="270" />
<!-- 描边 --> <stroke
android:width="2dp" android:color="#dcdcdc" />
<!-- 圆角 --> <corners
android:radius="2dp" /> <padding
android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
solid:实心,就是填充的意思
android:color指定填充的颜色
gradient:渐变
android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。
stroke:描边
android:width="2dp" 描边的宽度,android:color 描边的颜色。
我们还可以把描边弄成虚线的形式,设置方式为:
android:dashWidth="5dp"
android:dashGap="3dp"
其中android:dashWidth表示'-'这样一个横线的宽度,android:dashGap表示之间隔开的距离。
corners:圆角
android:radius为角的弧度,值越大角越圆。
我们还可以把四个角设定成不同的角度,方法为:
<corners
android:topRightRadius="20dp" 右上角
[/list]android:bottomLeftRadius="20dp" 右下角
android:topLeftRadius="1dp" 左上角
android:bottomRightRadius="0dp" 左下角
[list=1]
[align=left]/> [/align]
这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,这个有点郁闷,不过不影响使用,记得别搞错了就行。
还有网上看到有人说设置成0dp无效,不过我在测试中发现是可以的,我用的是2.2,可能修复了这个问题吧,如果无效的话那就只能设成1dp了。
- padding:间隔
- 这个就不用多说了,XML布局文件中经常用到。
- 大体的就是这样,以下是一个使用的具体示例:用在Selector中作为Button的背景,分别定义了按钮的一般状态、获得焦点状态和按下时的状态,具体代码如下:
- main.xml:
<Button
android:layout_height="wrap_content"
android:background="@drawable/button_selector"
/>
button_selector.xml:
[/align][/list][align=left]<?xml version="1.0" encoding="utf-8"?> [/align]<selector
[align=left] xmlns:android="http://schemas.android.com/apk/res/android"> [/align] <item android:state_pressed="true" >
[align=left] <shape>
[/align] <!-- 渐变 -->
[align=left] <gradient [/align] android:startColor="#ff8c00"
[align=left] android:endColor="#FFFFFF" [/align] android:type="radial"
[align=left] android:gradientRadius="50" />
[/align] <!-- 描边 -->
[align=left] <stroke [/align] android:width="2dp"
[align=left] android:color="#dcdcdc" [/align] android:dashWidth="5dp"
[align=left] android:dashGap="3dp" />
[/align] <!-- 圆角 -->
[align=left] <corners [/align] android:radius="2dp" />
[align=left] <padding [/align] android:left="10dp"
[align=left] android:top="10dp" [/align] android:right="10dp"
[align=left] android:bottom="10dp" />
[/align] </shape>
[align=left] </item> [/align] <item android:state_focused="true" >
[align=left] <shape>
[/align] <gradient
[align=left] android:startColor="#ffc2b7" [/align] android:endColor="#ffc2b7"
[align=left] android:angle="270" />
[/align] <stroke
[align=left] android:width="2dp" [/align]android:color="#dcdcdc" /> <corners
android:radius="2dp" /> [align=left]<padding [/align]android:left="10dp"
[align=left]android:top="10dp" [/align]android:right="10dp"
[align=left]android:bottom="10dp" /> </shape> [/align][align=left]</item> [/align]<item>
<shape>
<solid android:color="#ff9d77"/> [align=left]<stroke [/align]android:width="2dp"
[align=left]android:color="#fad3cf" />
[/align]<corners
[align=left]android:topRightRadius="5dp"
android:bottomLeftRadius="5dp" [/align][align=left]android:topLeftRadius="0dp"
android:bottomRightRadius="0dp" [/align][align=left]/>
[/align]<padding
[align=left]android:left="10dp" [/align]android:top="10dp"
[align=left]android:right="10dp" [/align]android:bottom="10dp" />
[align=left]</shape>
</item> [/align][align=left]</selector> [/align][list=1]
[align=left]
- 运行效果如下图:
- 一般状态:
- <IGNORE_JS_OP style="WORD-WRAP: break-word">

- 获得焦点状态:
- <IGNORE_JS_OP style="WORD-WRAP: break-word">

- 按下状态:
- <IGNORE_JS_OP style="WORD-WRAP: break-word">

Android shape 渐变!描边!圆角!示例详解的更多相关文章
- 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解
React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...
- Spring Boot 2.x 快速入门(下)HelloWorld示例详解
上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...
- Android 广播大全 Intent Action 事件详解
Android 广播大全 Intent Action 事件详解 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2015-10-20我要评论 这篇文章主要给大家介绍Android 广播大全 In ...
- jquery移除、绑定、触发元素事件使用示例详解
这篇文章主要介绍了jquery移除.绑定.触发元素事件使用示例详解,需要的朋友可以参考下. unbind(type [,data]) //data是要移除的函数 $('#btn').unbind(&q ...
- gcc与g++的编译链接的示例详解
一.编译方式的示例详解 1. 编译C代码 代码如下:main.c /*! ************************************************************** ...
- Android EventBus 3.0 实例使用详解
EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...
- Android开发:文本控件详解——TextView(一)基本属性
一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...
- [置顶]
xamarin android toolbar(踩坑完全入门详解)
网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...
- VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)
步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...
- socket编程的同步、异步与阻塞、非阻塞示例详解
socket编程的同步.异步与阻塞.非阻塞示例详解之一 分类: 架构设计与优化 简介图 1. 基本 Linux I/O 模型的简单矩阵 每个 I/O 模型都有自己的使用模式,它们对于特定的应用程序 ...
随机推荐
- AIX主机信任关系配置
1.配置主机信任关系的时候,需要先在两台主机/etc/hosts文件中添加要信任主机的IP,假设有(192.168.8.190 aix190,192.168.8.191 aix191)2个主机,在19 ...
- IOS网络请求原理
1,为什么要用到网络, 只有通过网络跟外界进行数据交互,数据更新,应用才能保持哦新鲜.活力 如果没有网络,也就缺少数据变化.变成一滩死水. 2, 良好的移动网络应用 = 良好的UI + 良好的用户体 ...
- Daily Scrum 12.3
今日完成任务: 与安卓组进行商量对数据库修改的方案.现在在等他们最终确认,确认之后进行整理以及源代码的调试. 对资源功能的代码进行阅读. 遇到困难: 关于整合,爬虫组爬到的内容和网站定位有所不符,所以 ...
- iOS改变NavigationBar的返回键和标题颜色、大小
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [UIPubic initHeadViewBackImgWithBt ...
- linux 系统下开机自动启动oracle 监听和实例 (亲测有效)
[oracle@oracle11g ~]$ dbstartORACLE_HOME_LISTNER is not SET, unable to auto-start Oracle Net Listene ...
- 【JSP】自定义标签开发入门
JSP 自定义标签 自定义标签是用户定义的JSP语言元素.当JSP页面包含一个自定义标签时将被转化为servlet,标签转化为对被 称为tag handler的对象的操作,即当servlet执行时We ...
- 【OpenGL】VS2010环境配置 [转]
基于OpenGL标准开发的应用程序运行时需有动态链接库OpenGL32.DLL.Glu32.DLL,这两个文件在安装Windows NT时已自动装载到C:\WINDOWS\SYSTEM32目录下(这里 ...
- canvas,制作炫酷的时钟和倒计时
html部分 p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 30.0px Consolas; color: #2b7ec3 } p.p2 { margin ...
- Programming Assignment 4: 8 Puzzle
The Problem. 求解8数码问题.用最少的移动次数能使8数码还原. Best-first search.使用A*算法来解决,我们定义一个Seach Node,它是当前搜索局面的一种状态,记录了 ...
- Rhythmbox中文乱码
今天在网络上找到了一个比较好的解决Rhythmbox中文乱码的问题的方法 进入你的音乐文件夹执行如下代码: mid3iconv -e GBK *.mp3 如果没有提示多试几次, 有可能系统会提示: p ...