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. python练习程序(c100经典例3)

    题目: 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? for i in range(1,100000): a=i+100; b=a+168; sa=int ...

  2. swun 1388 你的背包

    解题思路:这题给人的第一反应是背包,第二反应是贪心,我用的是搜索,枚举就可以,要有这种意识, 题目数据只有8个,暴力是可以解决的. #include<cstdio> #include< ...

  3. svn sc create 命令行创建服务自启动

    今天重装了系统,Subversion服务也得重装.照例输入代码: sc create svnserve binpath="d:\PortableApps\svn\svnserve.exe - ...

  4. android.os.NetworkOnMainThreadException解决

    很早就知道Android4.0以后,要把耗时的网络操作放在多线程中,处理方法有: 1) setContentView(R.layout.activity_main)下面加上如下代码 if (andro ...

  5. 解决 RaspberryPi 树莓派 NTP服务异常 无法自动同步时间

    sudo nano /etc/ntp.conf 然后找到 # pool.ntp.org maps to about 1000 low-stratum NTP servers. Your server ...

  6. android 带边框的圆角按钮

    新建buttonstyle.xml 代码如下 <?xml version="1.0" encoding="UTF-8"?> <layer-li ...

  7. 大端小端(Big- Endian和Little-Endian)[转]

    原文出处: 字节序(Endian),大端(Big-Endian),小端(Little-Endian)  http://www.cppblog.com/tx7do/archive/2009/01/06/ ...

  8. ps教程-三分钟画齿轮

  9. Arduino+RFID RC522 +继电器

    博客园的第一篇博文就献给Arduino了.不知道能不能坚持自己喜欢的并且记录下来. 起码是个好的开始. 想实现一卡通代替钥匙开启电动车. 简单的原理,通过RC522模块读取一卡通的序列号,在程序中进行 ...

  10. .gitignore 文件列表

    GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在https://github.com/github/gitignore 找到它.