第六章:Android的Drawable

來源:互聯網
上載者:User

標籤:scale   font   等級   核心   lin   val   16px   use   color   

  Drawable表示的是一種可以在Canvas上進行繪製的抽象的概念.

  6.1 Drawable簡介

      Drawable常被用來作為View的背景使用.

      Drawable一般都是通過XML來定義的.

      Drawable是一個抽象類別,它是所有Drawable對象的基類,每個具體的Drawable都是它的子類.

      Drawable的內部寬/高這個參數比較重要,通過getIntrinsicWidth和getIntrinsicHeight這兩個方法可以擷取到它們.

  6.2 Drawable的分類

      6.2.1 BitmapDrawable

        表示的就是一張照片<bitmap/>

      6.2.2 ShapeDrawable

        可以理解為通過顏色來構造的圖形,它既可以是純色的圖形,也可以是具有漸層效果的圖形.

        <shape>標籤,子屬性android:shape="四個選項,rectangle,oval,line,ring"

        子標籤

          <coners>,只適用於矩形shape,這裡的角度指圓角的程度,用px表示.

          <gradient>,與<solid>標籤互斥,其中solid表示純色填充,二gradient則表示漸層效果

          <solid>,純色填充,通過android:color即可指定shape中填充的顏色

          <stroke>,Shape的描邊

          <padding>,表示空白,但是它表示的不是shape的空白,而是包含它的View的空白

          <size>,shape 的大小

      6.2.3 LayerDrawable

          對應的XML標籤是<layer-list>,它表示一種層次化的Drawable集合,通過將不同的Drawable紡織在不同的層上面從而達到一種疊加後的效果.

          一個layer-list中可以包含多個item,每個item表示一個Drawable

      6.2.4 StateListDrawable

          對應的XML標籤是<selector>,也是表示Drawable集合,每個Drawable都對應著View的一種狀態.

          常見狀態:android:state_pressed/state_focused/state_selected/state_checked/state_enabled.

      6.2.5 LevelListDrawable

          對應的XML標籤是<level-list>,每個Drawable都有一個等級(levle)的概念.

          根據不同的等級,LevelListDrawable會切換為對應的Drawable

      6.2.6 TransitionDrawable

          對應的XML標籤是<transition>,它用於實現兩個Drawable之間的淡入淡出效果

      6.2.7 InsetDrawable

          對應的XML標籤是<inset>,它可以將其他Drawable內嵌到自己當中,並可以在四周留出一定的間隔.

      6.2.8 ScaleDrawable

           對應的XML標籤是<scale>,它可以根據自己的等級(level)將指定的Drawable縮放到一定的比例

      6.2.9 ClipDrawable

          對應的XML標籤是<clip>,他可以根據自己當前的等級(level)來裁減另一個Drawable.

    6.3 自訂Drawable

      Drawable的工作原理簡單,其核心就是draw方法.

      系統會調用Drawable的draw方法來繪製view的背景,可以通過重寫Drawable的draw方法來自訂Drawable

      draw,setAlpha,setColorFilter和getOpacity是必須重載實現的方法.

      

第六章:Android的Drawable

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.