看看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_width="wrap_content"  

android:layout_height="wrap_content"

android:text="TestShapeButton"  

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 渐变!描边!圆角!示例详解的更多相关文章

  1. 史上最易懂——ReactNative分组列表SectionList使用详情及示例详解

    React Native系列 <逻辑性最强的React Native环境搭建与调试> <ReactNative开发工具有这一篇足矣> <解决React Native un ...

  2. Spring Boot 2.x 快速入门(下)HelloWorld示例详解

    上篇 Spring Boot 2.x 快速入门(上)HelloWorld示例 进行了Sprint Boot的快速入门,以实际的示例代码来练手,总比光看书要强很多嘛,最好的就是边看.边写.边记.边展示. ...

  3. Android 广播大全 Intent Action 事件详解

    Android 广播大全 Intent Action 事件详解 投稿:mrr 字体:[增加 减小] 类型:转载 时间:2015-10-20我要评论 这篇文章主要给大家介绍Android 广播大全 In ...

  4. jquery移除、绑定、触发元素事件使用示例详解

    这篇文章主要介绍了jquery移除.绑定.触发元素事件使用示例详解,需要的朋友可以参考下. unbind(type [,data]) //data是要移除的函数 $('#btn').unbind(&q ...

  5. gcc与g++的编译链接的示例详解

    一.编译方式的示例详解 1. 编译C代码 代码如下:main.c /*!  ************************************************************** ...

  6. Android EventBus 3.0 实例使用详解

    EventBus的使用和原理在网上有很多的博客了,其中泓洋大哥和启舰写的非常非常棒,我也是跟着他们的博客学会的EventBus,因为是第一次接触并使用EventBus,所以我写的更多是如何使用,源码解 ...

  7. Android开发:文本控件详解——TextView(一)基本属性

    一.简单实例: 新建的Android项目初始自带的Hello World!其实就是一个TextView. 在activity_main.xml中可以新建TextView,从左侧组件里拖拽到右侧预览界面 ...

  8. [置顶] xamarin android toolbar(踩坑完全入门详解)

    网上关于toolbar的教程有很多,很多新手,在使用toolbar的时候踩坑实在太多了,不好好总结一下,实在浪费.如果你想学习toolbar,你肯定会去去搜索androd toolbar,既然你能看到 ...

  9. VS2010 Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)

    步骤如下: 1. Chart控件(一)Chart控件在ASP.NET网站中的应用示例详解(C#语言)" title="VS2010 Chart控件(一)Chart控件在ASP.NE ...

  10. socket编程的同步、异步与阻塞、非阻塞示例详解

     socket编程的同步.异步与阻塞.非阻塞示例详解之一  分类: 架构设计与优化 简介图 1. 基本 Linux I/O 模型的简单矩阵 每个 I/O 模型都有自己的使用模式,它们对于特定的应用程序 ...

随机推荐

  1. linux或者windows下的文件拷贝

    #  上代码 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import shutil import tarfile base_dir ...

  2. 第三十九章 微服务CICD(1)- gitlab搭建与使用(docker版)

    一.下载docker镜像 前提:docker引擎已经安装好. docker pull gitlab/gitlab-ce gitlab是8.13.1版本. 二.启动应用 docker run -d -h ...

  3. Python3 多线程下载代码

    根据http://www.oschina.net/code/snippet_70229_2407修改而来的增强版.貌似原版源自Axel这个多线程下载工具. ''' Created on 2014-10 ...

  4. 循环不变量loop invariant 与 算法的正确性

    在论述插入排序的正确性的时候, 书中引入了循环不变量的概念, 刚开始稍微有点不太明白, 早上查了一波资料之后决定把自己的理解记录下来. 什么是循环不变量 ? 在我看来, 所谓循环不变量的就是一个在循环 ...

  5. shell脚本学习--shell中的变量$

    $$ :Shell本身的PID(ProcessID) $! :Shell最后运行的后台Process的PID $? :最后运行的命令的结束代码(返回值) $- :使用Set命令设定的Flag一览 $* ...

  6. ng-repeat指令应用

    1.ng-repeat 一看就知道跟foreach等指令类似,用于循环重复.一般用于列表和表格中.用法如下: <tr ng-repeat="data in dataList" ...

  7. Entity Framework 6.0 源码解读笔记(一)

    internal static TResult ExecuteSingle<TResult>(IEnumerable<TResult> query, Expression qu ...

  8. hdoj 2680 choose the best route

    Problem Description One day , Kiki wants to visit one of her friends. As she is liable to carsicknes ...

  9. noip2015-day1-t2

    题意:有n个同学(编号为1到n)正在玩一个信息传递的游戏.在游戏里每人都有一个固定的信息传递对象,其中,编号为i的同学的信息传递对象是编号为Ti同学.游戏开始时,每人都只知道自己的生日.之后每一轮中, ...

  10. IOS学习笔记之关键词@dynamic

    IOS学习笔记之关键词@dynamic @dynamic这个关键词,通常是用不到的. 它与@synthesize的区别在于: 使用@synthesize编译器会确实的产生getter和setter方法 ...