Shape

前言:有时候会去自己去画一些Button的样式来展现在UI当中,其中主要用到的就是Shape

先来看一段代码:

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > <solid android:color="#FFF0F5" /> <stroke
android:width="2dp"
android:color="#6A5ACD" /> <corners android:radius="16dp" /> <gradient
android:angle="270"
android:endColor="#B0E0E6"
android:startColor="#000080"
android:type="linear" >
</gradient> <padding
android:left="50dp"
android:top="50dp" /> </shape>

1)solid:实心,就是填充的意思
  android:color指定填充的颜色

2)gradient:渐变
  android:startColor和android:endColor分别为起始和结束颜色,ndroid:angle是渐变角度,必须为45的整数倍。
  另外渐变默认的模式为android:type="linear",即线性渐变,可以指定渐变为径向渐变,android:type="radial",径向渐变需要指定半径android:gradientRadius="50"。

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

4)corners:圆角
  android:radius为角的弧度,值越大角越圆。
  我们还可以把四个角设定成不同的角度,方法为:
  <corners 
        android:topRightRadius="20dp"    右上角
        android:bottomLeftRadius="20dp"    右下角
        android:topLeftRadius="1dp"    左上角
        android:bottomRightRadius="0dp"    左下角
   />
  这里有个地方需要注意,bottomLeftRadius是右下角,而不是左下角,

5)padding:间隔
    就是框内的内容离边框的距离

6)下面就通过一个例子来说明:

当Button没有被点击时候是这个样式的:                                               被点击是时候的样式:

                                

在drawable文件夹下default_shape.xml    这是按钮没有被点击时候的样式:

 <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > <solid android:color="#FFF0F5" /> <stroke
android:width="2dp"
android:color="#6A5ACD" /> <corners android:radius="16dp" /> <gradient
android:angle="270"
android:endColor="#B0E0E6"
android:startColor="#000080"
android:type="linear" >
</gradient> <padding
android:left="50dp"
android:top="50dp" /> </shape>

drawable文件夹下pressed_shape.xml    这是按钮被点击时候的样式:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" > <!-- 填充的颜色 -->
<solid android:color="#d1d1d1" />
<!-- 边框 -->
<stroke
android:width="2dp"
android:color="#FFB6C1" />
<!-- 定义成圆角的 -->
<corners android:radius="30dp" /> <gradient
android:endColor="#F5FFFA"
android:startColor="#FFB6C1"
android:type="linear" >
</gradient> </shape>

drawable中按钮的selector的xml文件,btn_style.xml :

 <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/pressed_shape" android:state_pressed="true"></item>
<item android:drawable="@drawable/default_shape"></item> </selector>

activity的XML文件:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".MainActivity" > <Button
android:id="@+id/btn"
android:layout_width="150dp"
android:layout_height="150dp"
android:background="@drawable/btn_style"
android:text="改变形状"
android:textColor="@drawable/text_style" /> </LinearLayout>

主要程序就在上面了,然后运行程序就可以看见前面如图所示的效果

源码下载:源码

android shape(如自定义Button)的更多相关文章

  1. android shape图形优化Button效果

    android shape可以让我们通过定义xml文件的方式创建图形,当然只能实现一些比较简单的图形(圆形,矩形,椭圆,线段),但是已经相当不错了,通过shape创建的图形作为控件的背景已经基本可以满 ...

  2. android 自定义Button,抛弃写shape文件

      标签: android 控件  自定义 2017年05月27日 17:52:13 611人阅读 评论(0) 收藏 举报 分类: 自定义View(2) 作者同类文章 X 版权声明:本文为博主原创文章 ...

  3. Android Shape自定义纯色圆角按钮

    版权声明:分享技术,传播快乐.如果本博客对你有帮助,请在我的博客首页为我打赏吧! 在Android开发中,为响应美化应用中控件的效果,使用Shape定义图形效果,可以解决图片过多的问题. 首先看一下效 ...

  4. Android 自定义Button按钮显示样式(正常、按下、获取焦点)

    现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天学习自定义Button按钮样式.Button样式修改的是Button的背景 ...

  5. android中样式和自定义button样式

    1)自定义button样式 一.采用图片方式 首先新建Android XML文件,类型选Drawable,根结点选selector,自定义一个文件名. 随后,开发环境自动在新建的文件里加了select ...

  6. Android自定义Button按钮显示样式

    关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法. 首先android的selector是在 ...

  7. 【Android开发日记】之入门篇(十四)——Button控件+自定义Button控件

        好久不见,又是一个新的学期开始了,为什么我感觉好惆怅啊!这一周也发生了不少事情,节假日放了三天的假(好久没有这么悠闲过了),实习公司那边被组长半强制性的要求去解决一个后台登陆的问题,结果就是把 ...

  8. Android开发问题集锦-Button初始为disable状态时自定义的selector不生效问题

    1.下面是不生效的布局: selector_btn_red.xml: <?xml version="1.0" encoding="utf-8"?> ...

  9. Android shape自定义形状,设置渐变色

      <?xml version="1.0" encoding="utf-8"?> <!-- android:shape=["rect ...

随机推荐

  1. The Robust Fuzzy C-means

    摘要: 基于FCM的在图像处理方面对噪声敏感的不足,本文通过引入空间模型建立空间模糊C均值聚类提高算法的鲁棒性,在此基础上,结合抑制式对算法进一步优化.最后,给图像加不同程度的噪声,通过MATLAB编 ...

  2. MySQL5.6 ALTER TABLE 分析和测试

    在MySQL5.5和之前版本,在运行的生产环境对大表(超过数百万纪录)执行Alter操作是一件很困难的事情.因为将重建表和锁表,影响用户者的使用.因此知道Alter操作何时结束对我们是非常重要的.甚至 ...

  3. 【转】bzero, memset ,setmem 区别

    原文网址:http://blog.csdn.net/agathe/article/details/6066157 bzero  原型: extern void bzero(void *s, int n ...

  4. yeoman bower grunt等安装

    grunt-beginner前端自动化工具:http://www.imooc.com/learn/30 grunt的安装 官方站点:http://gruntjs.com/ 安装指令: sudo npm ...

  5. Arduino "Card failed, or not present"(即找不到SD卡)错误解决方案

    http://forum.arduino.cc/index.php?topic=28763.0 Arduino SD自带的例程都是有一个BUG的,必须在pinMode后面加上如下的第二行代码 pinM ...

  6. hdu 2177(威佐夫博奕)

    题意:容易理解,在威佐夫博奕的基础上新增加了一条要求:就是如果在赢得条件下,输出第一步怎么走. 分析:使用暴力判断,详细见代码. 代码: #include<stdio.h> #includ ...

  7. N人报数第M人出列游戏问题(约瑟夫问题)

    这是一道华为的机试题,后来才知道也叫约瑟夫问题,题目是这样的:有n个人围成一圈,玩一个游戏,规则为将该n个人编号为1,2,......n, 从编号为1的人开始依次循环报数,报道第m的时候将第m个人从队 ...

  8. Nginx工作原理和优化、漏洞

    1.  Nginx的模块与工作原理 第三方模块:HTTP Upstream Request Hash模块.Notice模块和HTTP Access Key模块. 图1-1展示了Nginx模块常规的HT ...

  9. XML序列化成对象

    这个是和ALM上传测试结果结合使用的//把xml序列化成对象以及把对象序列化成xml using System; using System.Data; using System.Configurati ...

  10. [转]linux之less命令

    转自:http://www.cnblogs.com/peida/archive/2012/11/02/2750588.html less 工具也是对文件或其它输出进行分页显示的工具,应该说是linux ...