美文网首页Android开发
各种样式Button记录(支持点击/触摸变色)

各种样式Button记录(支持点击/触摸变色)

作者: 筱宓dawnLing | 来源:发表于2018-05-21 10:12 被阅读160次

    基本每个项目都会遇到各种各样的按钮样式


    GIF.gif

    1.xml布局代码activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:padding="10dp"
        tools:context=".MainActivity">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="2dp">
    
            <Button
                android:id="@+id/button1"
                style="@style/AppTheme.btnStyle.Primary"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                android:layout_alignParentLeft="true"
                android:layout_centerVertical="true"
                android:text="边框按钮" />
    
            <Button
                style="@style/AppTheme.btnStyle.RoundPrimary"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                android:layout_marginTop="10dp"
                android:layout_centerVertical="true"
                android:layout_centerHorizontal="true"
                android:text="边框按钮" />
    
            <Button
                style="@style/AppTheme.btnStyle.RoundPrimaryAll"
                android:layout_marginTop="10dp"
                android:paddingLeft="15dp"
                android:paddingRight="15dp"
                android:paddingTop="5dp"
                android:paddingBottom="5dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:text="边框按钮" />
    
        </RelativeLayout>
    
        <Button
            style="@style/AppTheme.btnStyle.Normal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/rlData"
            android:layout_marginTop="10dp"
            android:text="正常按钮" />
    
        <Button
            style="@style/AppTheme.btnStyle.Normal.Round"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/rlData"
            android:layout_marginTop="10dp"
            android:text="背景色按钮" />
    
        <Button
            style="@style/AppTheme.btnStyle.Normal.RoundAll"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="圆框按钮" />
    
        <Button
            style="@style/AppTheme.btnStyle.Normal.GreenDotted.Normal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="虚线按钮" />
    
        <Button
            style="@style/AppTheme.btnStyle.Normal.GreenDotted"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="虚线按钮" />
    
        <Button
            style="@style/AppTheme.btnStyle.Normal.GreenDottedRound"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:text="虚线按钮" />
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/recyclerView"
            android:layout_marginTop="5dp"
            android:orientation="horizontal">
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:layout_alignParentBottom="true"
                android:background="@drawable/btn_normal_darktop"
                android:text="关闭"
                android:textColor="@color/colorwhite"
                android:textSize="15sp"
                android:layout_centerHorizontal="true"
                android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:layout_alignParentBottom="true"
                android:background="@drawable/btn_normal_primarytop"
                android:text="立即升级"
                android:textColor="@color/colorBar"
                android:textSize="15sp"
                android:layout_centerHorizontal="true"
                android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
    
        </LinearLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/recyclerView"
            android:layout_marginTop="5dp"
            android:orientation="horizontal">
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:layout_alignParentBottom="true"
                android:background="@drawable/btn_normal_dark"
                android:text="关闭"
                android:textColor="@color/colorwhite"
                android:textSize="15sp"
                android:layout_centerHorizontal="true"
                android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
    
            <Button
                android:layout_width="match_parent"
                android:layout_height="40dp"
                android:layout_weight="1"
                android:layout_alignParentBottom="true"
                android:background="@drawable/btn_normal_primary"
                android:text="立即升级"
                android:textColor="@color/colorBar"
                android:textSize="15sp"
                android:layout_centerHorizontal="true"
                android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
    
        </LinearLayout>
    
    </LinearLayout>
    

    2.按钮风格styles.xml:

    <resources>
        <!-- 自定义Button -->
        <style name="AppTheme.btnStyle">
            <item name="android:textAllCaps">false</item>
            <item name="android:gravity">center</item>
            <item name="android:layout_width">120dp</item>
            <item name="android:layout_height">48dp</item>
            <item name="android:paddingTop">5dp</item>
            <item name="android:paddingRight">10dp</item>
            <item name="android:paddingBottom">5dp</item>
            <item name="android:paddingLeft">10dp</item>
        </style>
    
        <!-- 正常的按钮 -->
        <style name="AppTheme.btnStyle.Normal">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">45dp</item>
            <item name="android:background">@drawable/btn_normal</item>
            <item name="android:textColor">@android:color/white</item>
            <item name="android:textSize">16sp</item>
        </style>
    
        <!-- 正常的按钮圆角 -->
        <style name="AppTheme.btnStyle.Normal.Round">
            <item name="android:background">@drawable/btn_normal_round</item>
        </style>
    
        <!-- 正常的按钮圆角 白底 主色边框-->
        <style name="AppTheme.btnStyle.Normal.RoundStork">
            <item name="android:background">@drawable/btn_round_green</item>
        </style>
    
        <!-- 正常的按钮圆角 25角度-->
        <style name="AppTheme.btnStyle.Normal.RoundAll">
            <item name="android:background">@drawable/btn_normal_round_all</item>
        </style>
    
        <!-- 正常白底  主色边框/字 按钮 -->
        <style name="AppTheme.btnStyle.Primary">
            <item name="android:layout_width">wrap_content</item>
            <item name="android:layout_height">30dp</item>
            <item name="android:background">@drawable/btn_normal_green</item>
            <item name="android:textColor">@color/colorPrimary</item>
            <item name="android:textSize">14sp</item>
        </style>
    
        <!-- 正常白底  主色边框/字 半圆角按钮 -->
        <style name="AppTheme.btnStyle.RoundPrimary">
            <item name="android:layout_width">wrap_content</item>
            <item name="android:layout_height">30dp</item>
            <item name="android:background">@drawable/btn_round_green</item>
            <item name="android:textColor">@color/colorPrimary</item>
            <item name="android:textSize">14sp</item>
        </style>
    
        <!-- 正常白底  主色边框/字圆角按钮 -->
        <style name="AppTheme.btnStyle.RoundPrimaryAll">
            <item name="android:layout_width">wrap_content</item>
            <item name="android:layout_height">30dp</item>
            <item name="android:background">@drawable/btn_round_green_all</item>
            <item name="android:textColor">@color/colorPrimary</item>
            <item name="android:textSize">14sp</item>
        </style>
    
        <!-- 主色框/字 虚线按钮 -->
        <style name="AppTheme.btnStyle.Normal.GreenDotted.Normal">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">45dp</item>
            <item name="android:background">@drawable/btn_dotted_normal</item>
            <item name="android:textColor">@color/colorPrimary</item>
            <item name="android:textSize">15sp</item>
        </style>
    
        <!-- 主色框/字 虚线按钮 -->
        <style name="AppTheme.btnStyle.Normal.GreenDotted">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">45dp</item>
            <item name="android:background">@drawable/btn_dotted_white</item>
            <item name="android:textColor">@color/colorPrimary</item>
            <item name="android:textSize">15sp</item>
        </style>
    
        <!-- 主色框/字 虚线全圆按钮 -->
        <style name="AppTheme.btnStyle.Normal.GreenDottedRound">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">45dp</item>
            <item name="android:background">@drawable/btn_dotted_round_white</item>
            <item name="android:textColor">@color/colorPrimary</item>
            <item name="android:textSize">15sp</item>
        </style>
    
    </resources>
    

    3.接下去是drawable文件列表:


    drawable文件列表.png

    btn_dotted_normal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <!-- 填充颜色 -->
        <solid android:color="@color/colorwhite"></solid>
    
        <!-- 线的宽度,颜色灰色 -->
        <stroke
            android:width="1dp"
            android:color="@color/colorPrimary"
            android:dashGap="3dp"
            android:dashWidth="6dp"></stroke>
    
    </shape>
    

    btn_dotted_round_white.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <!-- 填充颜色 -->
        <solid android:color="@color/colorwhite"></solid>
    
        <!-- 线的宽度,颜色灰色 -->
        <stroke
            android:width="1dp"
            android:color="@color/colorPrimary"
            android:dashGap="3dp"
            android:dashWidth="6dp"></stroke>
    
        <!-- 矩形的圆角半径 -->
        <corners android:radius="50dp" />
    
    </shape>
    

    btn_dotted_white.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
        <!-- 填充颜色 -->
        <solid android:color="@color/colorwhite"></solid>
    
        <!-- 线的宽度,颜色灰色 -->
        <stroke
            android:width="1dp"
            android:color="@color/colorPrimary"
            android:dashGap="3dp"
            android:dashWidth="6dp"></stroke>
    
        <!-- 矩形的圆角半径 -->
        <corners android:radius="5dp" />
    
    </shape>
    

    btn_normal.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <solid android:color="@color/colorEnableMore" />
            </shape>
        </item>
    
        <item android:state_pressed="true">
            <shape>
                <solid android:color="@color/colorPrimaryDark" />
            </shape>
        </item>
    
        <item>
            <shape>
                <solid android:color="@color/colorPrimary" />
            </shape>
        </item>
    
    </selector>
    

    btn_normal_dark.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 填充的颜色:这里设置为红色 -->
        <solid android:color="@color/colorBarLight"/>
        <!-- 设置按钮的四个角为弧形   android:radius 弧形的半径 -->
        <corners android:bottomLeftRadius="5dp"
            android:topLeftRadius="0dp"
            android:bottomRightRadius="0dp"
            android:topRightRadius="0dp"/>
    </shape>
    

    btn_normal_darktop.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 填充的颜色:这里设置为红色 -->
        <solid android:color="@color/colorBarLight"/>
        <!-- 设置按钮的四个角为弧形   android:radius 弧形的半径 -->
        <corners android:bottomLeftRadius="0dp"
            android:topLeftRadius="5dp"
            android:bottomRightRadius="0dp"
            android:topRightRadius="0dp"/>
    </shape>
    

    btn_normal_green.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <solid android:color="@color/colorwhite" />
            </shape>
        </item>
    
        <item>
            <shape>
                <stroke android:color="@color/colorPrimary" android:width="1px"/>
            </shape>
        </item>
    
    </selector>
    

    btn_normal_primary.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 填充的颜色:这里设置为红色 -->
        <solid android:color="@color/colorPrimary"/>
        <!-- 设置按钮的四个角为弧形   android:radius 弧形的半径 -->
        <corners android:bottomLeftRadius="0dp"
            android:topLeftRadius="0dp"
            android:bottomRightRadius="5dp"
            android:topRightRadius="0dp"/>
    </shape>
    

    btn_normal_primarytop.xml

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <!-- 填充的颜色:这里设置为红色 -->
        <solid android:color="@color/colorPrimary"/>
        <!-- 设置按钮的四个角为弧形   android:radius 弧形的半径 -->
        <corners android:bottomLeftRadius="0dp"
            android:topLeftRadius="0dp"
            android:bottomRightRadius="0dp"
            android:topRightRadius="5dp"/>
    </shape>
    

    btn_normal_round.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <corners android:radius="6dp"/>
                <solid android:color="@color/colorEnable" />
            </shape>
        </item>
    
        <item android:state_pressed="true">
            <shape>
                <corners android:radius="6dp"/>
                <solid android:color="@color/colorPrimaryDark" />
            </shape>
        </item>
    
        <item>
            <shape>
                <corners android:radius="6dp"/>
                <solid android:color="@color/colorPrimary" />
            </shape>
        </item>
    
    </selector>
    

    btn_normal_round_all.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <corners android:radius="25dp"/>
                <solid android:color="@color/colorEnable" />
            </shape>
        </item>
    
        <item android:state_pressed="true">
            <shape>
                <corners android:radius="25dp"/>
                <solid android:color="@color/colorPrimaryDark" />
            </shape>
        </item>
    
        <item>
            <shape>
                <corners android:radius="25dp"/>
                <solid android:color="@color/colorPrimary" />
            </shape>
        </item>
    
    </selector>
    

    btn_round_blue.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <corners android:radius="3dp"/>
                <solid android:color="@color/colorwhite" />
            </shape>
        </item>
    
        <item>
            <shape>
                <corners android:radius="3dp"/>
                <stroke android:color="@color/colorBlue" android:width="1px"/>
            </shape>
        </item>
    
    </selector>
    

    btn_round_green.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <corners android:radius="3dp"/>
                <solid android:color="@color/colorwhite" />
            </shape>
        </item>
    
        <item>
            <shape>
                <corners android:radius="3dp"/>
                <stroke android:color="@color/colorPrimary" android:width="1px"/>
            </shape>
        </item>
    
    </selector>
    

    btn_round_green_all.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <corners android:radius="25dp"/>
                <solid android:color="@color/colorwhite" />
            </shape>
        </item>
    
        <item>
            <shape>
                <corners android:radius="25dp"/>
                <stroke android:color="@color/colorPrimary" android:width="1px"/>
            </shape>
        </item>
    
    </selector>
    

    btn_round_red_all.xml

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
    
        <item android:state_enabled="false">
            <shape>
                <corners android:radius="25dp"/>
                <solid android:color="@color/colorwhite" />
            </shape>
        </item>
    
        <item>
            <shape>
                <corners android:radius="25dp"/>
                <stroke android:color="@color/colorRed" android:width="1px"/>
            </shape>
        </item>
    
    </selector>
    

    4.colors.xml

    <?xml version="1.0" encoding="utf-8"?>
    <resources>
    
        <!-- 按钮颜色 白色系 -->
        <color name="btn_color_white_normal">#FFFFFF</color>
        <color name="btn_color_white_pressed">#e5e5e5</color>
        <color name="btn_color_white_disable">#CCCCCC</color>
    
        <color name="colorPrimary">#39a9ff</color>
        <color name="colorPrimaryDark">#3998ff</color>
    
        <!-- 透明背景颜色 -->
        <color name="translucent">#00000000</color>
        <!-- 窗口颜色-->
        <color name="colorwindowBackground">#f2f5f7</color>
        <color name="colorTextPrimary">#18202a</color>
        <color name="colorTextBlue">#39b8ff</color>
        <color name="colorTextPrimarySec">#18202a</color>
        <color name="colorTextPrimaryLight">#707b89</color>
        <color name="colorText777">#777777</color>
        <!-- 更浅色字体-->
        <color name="colorTextPrimaryMoreLight">#979797</color>
        <color name="colorLine">#e9eaeb</color>
        <color name="colorLineSec">#eaeaea</color>
        <!-- 内容区域颜色 -->
        <color name="colorItemBg">#FFF</color>
        <color name="colorEnableMore">#18202a</color>
        <color name="colorwhite">#ffffff</color>
        <color name="colorblack">#000000</color>
        <color name="colorEnable">#E5E4E4</color>
    
        <color name="colorRed">#ff4b38</color>
        <color name="colorOrange">#ff7c25</color>
        <color name="colorBlue">#13de64</color>
        <color name="colorBarLight">#2b2b2c</color>
        <color name="colorBar">#2b2b2d</color>
    </resources>
    

    源码传送门:

    https://github.com/LXLYHM/ButtonStylesDemo

    相关文章

      网友评论

        本文标题:各种样式Button记录(支持点击/触摸变色)

        本文链接:https://www.haomeiwen.com/subject/wzqlkftx.html