android自訂樣式大全:shape,selector,layer-list,drawable,動畫,style

來源:互聯網
上載者:User

標籤:

原文:http://keeganlee.me/post/android/20150830以下摘取了部分內容:shape

一般用shape定義的xml檔案存放在drawable目錄下,若項目沒有該目錄則建立一個,而不要將它放到drawable-hdpi等目錄中。只需要在對應控制項設定(bg_rectangle_with_stroke_dash.xml)

android:background="@drawable/bg_rectangle_with_stroke_dash"
四種類型

使用shape可以自訂形狀,可以定義下面四種類型的形狀,通過android: shape屬性指定:

  • rectangle: 矩形,預設的形狀,可以畫出直角矩形、圓角矩形、弧形等
  • oval: 橢圓形,用得比較多的是畫正圓
  • line: 線形,可以畫實線和虛線
  • ring: 環形,可以畫環形進度條
selector

有時候,不同狀態下改變的不只是背景、圖片等,文字顏色也會相應改變。而要處理這些不同狀態下展示什麼的問題,就要用selector來實現了。 一個<item/>包裹一個狀態和對應的效果

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 當前視窗失去焦點時 -->    <item android:drawable="@drawable/bg_btn_lost_window_focused" android:state_window_focused="false" />    <!-- 不可用時 -->    <item android:drawable="@drawable/bg_btn_disable" android:state_enabled="false" />    <!-- 按壓時 -->    <item android:drawable="@drawable/bg_btn_pressed" android:state_pressed="true" />    <!-- 被選中時 -->    <item android:drawable="@drawable/bg_btn_selected" android:state_selected="true" />    <!-- 被啟用時 -->    <item android:drawable="@drawable/bg_btn_activated" android:state_activated="true" />    <!-- 預設時 -->    <item android:drawable="@drawable/bg_btn_normal" /></selector>

 

而下面則是text_btn_selector.xml的代碼,用於按鈕的文本顏色:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 當前視窗失去焦點時 -->    <item android:color="@android:color/black" android:state_window_focused="false" />    <!-- 不可用時 -->    <item android:color="@android:color/background_light" android:state_enabled="false" />    <!-- 按壓時 -->    <item android:color="@android:color/holo_blue_light" android:state_pressed="true" />    <!-- 被選中時 -->    <item android:color="@android:color/holo_green_dark" android:state_selected="true" />    <!-- 被啟用時 -->    <item android:color="@android:color/holo_green_light" android:state_activated="true" />    <!-- 預設時 -->    <item android:color="@android:color/white" /></selector>

 

 
Layer-List

使用layer-list可以將多個drawable按照順序層疊在一起顯示,像中的Tab,是由一個紅色的層加一個白色的層疊在一起顯示的結果

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 第一種載入方式 -->    <!--<item android:drawable="@drawable/bg_tab_selected" android:state_checked="true" />-->    <!-- 第二種載入方式 -->    <item android:state_checked="true">        <layer-list>            <!-- 紅色背景 -->            <item>                <color android:color="#E4007F" />            </item>            <!-- 白色背景,白色背景距離底部越遠,漏出來的紅色部分就越多 -->            <!-- 效果就是看到的粗的紅色的線 -->            <item android:bottom="4dp" android:drawable="@android:color/white" />        </layer-list>    </item>    <item>        <layer-list>            <!-- 紅色背景 -->            <item>                <color android:color="#E4007F" />            </item>            <!-- 白色背景 -->            <item android:bottom="1dp" android:drawable="@android:color/white" />        </layer-list>    </item></selector>

 

屬性
  • solid:設定形狀填充的顏色
  • padding:內容與形狀邊界的內間距
  • gradient: 設定形狀的漸層顏色,可以是線性漸層、輻射漸層、掃描性漸層
  • corners: 設定圓角,只適用於rectangle類型
  • stroke: 設定描邊,可描成實線或虛線
  • size:設定形狀預設的大小,可設定寬度和高度
動畫
  • 視圖動畫的xml檔案放於res/anim/目錄下,,引用時為R.anim.filename。
  • <animator>屬性動畫的xml檔案則放於res/animator/目錄下。用引用時為R.animator.filename
Style
  • Android的樣式一般定義在res/values/styles.xml檔案中,其中有一個根項目<resource>,而具體的每種樣式定義則是通過<resource>下的子標籤<style>來完成,<style>通過添加多個<item>來設定樣式不同的屬性。
  • 另外,樣式是可以繼承的,可通過<style>標籤的parent屬性聲明要繼承的樣式,也可通過點首碼 (.) 繼承,點前面為父樣式名稱,後面為子樣式名稱。點首碼方式只適用於自訂的樣式,若要繼承Android內建的樣式,則只能通過parent屬性聲明。
  • 樣式的用法不只是用於單個View,也能用於Activity或整個Application,這時候需要在相應的<activity>標籤或<application>標籤裡設定android:theme屬性,引用的其實也是style,但一般稱為主題。
 

 

android自訂樣式大全:shape,selector,layer-list,drawable,動畫,style

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.