1:shape總結
一共同擁有四種:rectangle。oval,line,ring。
android:radiuse位圓角的半徑。
當然也能夠單獨為每一個圓角進行設定。
angle必須保證是45的倍數。
除非你dashWidth設定的值非常大。那麼看起來還是一條完整的線條。
僅僅在設定了dashWidth屬性的情況下才會有效果。能夠覺得是虛線之間的寬度。
2:控制元件樣式定製
此時就能夠用到上面的shape drawable了。詳細用法例如以下:
有一個預設button樣式和一個button按下之後的樣式。
<?xml version="1.0" encoding="utf-8"?
> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="5dp"></corners> <solid android:color="#ff0000"/> <stroke android:width="1dp" android:color="#00ff00" android:dashWidth="2dp" android:dashGap="2dp"/> </shape>
button_pressed.xml
<?
xml version="1.0" encoding="utf-8"?
> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <corners android:radius="10dp" ></corners> <!-- <solid android:color="#ffffff" ></solid> --> <padding android:left="20dp" android:top="1dp" ></padding> <gradient android:startColor="#ffffff" android:endColor="#000000" android:angle="0" android:centerX="0.1" android:centerY="0.2" /> <stroke android:width="1dp" android:color="#00ff00" android:dashWidth="1000dp" android:dashGap="3dp" > </stroke> </shape>
眼下已經寫好了兩種樣式檔案了。
那麼怎麼推斷是按下了的狀態呢? 這裡引入stateDrawable檔案了。
它也是採用xml方式來定義的。在控制元件的不同狀態能夠用不同的樣式來顯示同一個控制元件。
比方:button有非常多種狀態,按下狀態,有焦點狀態。和正常狀態。
<?
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/button_pressed"></item> <item android:drawable="@drawable/button_normal"></item> </selector>
這個檔案會從上到下一直匹配下來。直到找到了一個item滿足控制元件眼下的狀態。android:state_pressed 是button被按下狀態。
以下一個item是預設樣式,能夠匹配不論什麼一種狀態。所以要放在最以下。否則其它全部的定義都不起作用。
<Button
android:text="@string/button_style"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_style"