Android自定義Button按鈕顯示樣式

現在的用戶對APP的外觀看得很重要,如果APP內所有元件都用Android默認樣式寫,估計下面評論裏就有一堆在罵UI醜的。今天學習自定義Button按鈕樣式。Button樣式修改的是Button的背景(Background)屬性。
首先寫一個定義Button樣式的XML文件:
新建Android XML文件,類型選Drawable,根結點選selector,文件名就buton_style吧。
程序自動給我們剛剛建的文件里加了selector結點,我們只需要在selector結點裏寫上三種狀態時顯示的背景圖片(按下、獲取焦點,正常)。
代碼如下:
Xml代碼 
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true" android:drawable="@drawable/play_press" /> 
    <item android:state_focused="true" android:drawable="@drawable/play_press" /> 
    <item android:drawable="@drawable/play" /> 
</selector>  
 
我這裏獲取焦點跟點擊時顯示的是同一張圖片,必須嚴格照上面的順序寫,不可倒。
接下來只要在佈局時寫Button控件時應用到Button的Background屬性即可。
Xml代碼 
<Button android:id="@+id/button1" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    android:background="@drawable/button_style" 
></Button>  
 
最終效果圖:
再加上一種自定義樣式方法,上面的是用圖片,其實我們可以直接通過定義xml文件來實現不同的樣式:
在上面的源代碼基礎上,只需要修改button_style文件,同樣三種狀態分開定義:
Xml代碼 
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_pressed="true"> 
        <shape> 
            <gradient android:startColor="#0d76e1" android:endColor="#0d76e1" 
                android:angle="270" /> 
            <stroke android:width="1dip" android:color="#f403c9" /> 
            <corners android:radius="2dp" /> 
            <padding android:left="10dp" android:top="10dp" 
                android:right="10dp" android:bottom="10dp" /> 
        </shape> 
    </item> 
  
    <item android:state_focused="true"> 
        <shape> 
            <gradient android:startColor="#ffc2b7" android:endColor="#ffc2b7" 
                android:angle="270" /> 
            <stroke android:width="1dip" android:color="#f403c9" /> 
            <corners android:radius="2dp" /> 
            <padding android:left="10dp" android:top="10dp" 
                android:right="10dp" android:bottom="10dp" /> 
        </shape> 
    </item> 
  
    <item> 
        <shape> 
            <gradient android:startColor="#000000" android:endColor="#ffffff" 
                android:angle="180" /> 
            <stroke android:width="1dip" android:color="#f403c9" /> 
            <corners android:radius="5dip" /> 
            <padding android:left="10dp" android:top="10dp" 
                android:right="10dp" android:bottom="10dp" /> 
        </shape> 
    </item> 
</selector>  
 
gradient 主體漸變 startColor開始顏色,endColor結束顏色 ,angle開始漸變的角度(值只能爲90的倍數,0時爲左到右漸變,90時爲下到上漸變,依次逆時針類推)
stroke 邊框 width 邊框寬度,color 邊框顏色
corners 圓角 radius 半徑,0爲直角
padding text值的相對位置
發佈了37 篇原創文章 · 獲贊 2 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章