zoukankan      html  css  js  c++  java
  • android shape(如自定义Button)

    Shape

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

    先来看一段代码:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:shape="rectangle" >
     4 
     5     <solid android:color="#FFF0F5" />
     6 
     7     <stroke
     8         android:width="2dp"
     9         android:color="#6A5ACD" />
    10 
    11     <corners android:radius="16dp" />
    12 
    13     <gradient
    14         android:angle="270"
    15         android:endColor="#B0E0E6"
    16         android:startColor="#000080"
    17         android:type="linear" >
    18     </gradient>
    19 
    20     <padding
    21         android:left="50dp"
    22         android:top="50dp" />
    23 
    24 </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    这是按钮没有被点击时候的样式:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:shape="rectangle" >
     4 
     5     <solid android:color="#FFF0F5" />
     6 
     7     <stroke
     8         android:width="2dp"
     9         android:color="#6A5ACD" />
    10 
    11     <corners android:radius="16dp" />
    12 
    13     <gradient
    14         android:angle="270"
    15         android:endColor="#B0E0E6"
    16         android:startColor="#000080"
    17         android:type="linear" >
    18     </gradient>
    19 
    20     <padding
    21         android:left="50dp"
    22         android:top="50dp" />
    23 
    24 </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 :

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

    activity的XML文件:

     1 <LinearLayout 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     android:gravity="center"
     6     android:orientation="vertical"
     7     tools:context=".MainActivity" >
     8 
     9     <Button
    10         android:id="@+id/btn"
    11         android:layout_width="150dp"
    12         android:layout_height="150dp"
    13         android:background="@drawable/btn_style"
    14         android:text="改变形状"
    15         android:textColor="@drawable/text_style" />
    16 
    17 </LinearLayout>


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

    源码下载:源码

  • 相关阅读:
    JS魔法堂:阻止元素被选中
    JS魔法堂之实战:纯前端的图片预览
    CentOS6.5菜鸟之旅:纯转载Linux目录结构
    Vim杂记:Sublime的配色方案
    Vim杂记:markdown插件
    CentOS6.5菜鸟之旅:中文编辑器忍痛放弃Sublime
    JS魔法堂:Data URI Scheme介绍
    CentOS6.5菜鸟之旅:安装ATI显卡驱动
    JS魔法堂:获取当前脚本文件的绝对路径
    腊八蒜
  • 原文地址:https://www.cnblogs.com/liangstudyhome/p/3715259.html
Copyright © 2011-2022 走看看