Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android編程入門 >> Android學習之Drawable(一)

Android學習之Drawable(一)

編輯:Android編程入門

Drawable有很多種,它們表示一種圖像概念,但它們不全是圖片。Drawable是什麼呢?下面是Google Android API中的定義:

A Drawable is a general abstraction for “something that can be drawn.” Most often you will deal with Drawable as the type of resource retrieved for drawing things to the screen; the Drawable class provides a generic API for dealing with an underlying visual resource that may take a variety of forms. Unlike a View, a Drawable does not have any facility to receive events or otherwise interact with the user. 
它大致的意思是:Drawable一種圖像概念。通常,你會把它當成一種能夠在屏幕上顯示的資源類型來處理,Drawable類提供了一個通用的API來處理不同形式的圖像資源。與View不同,Drawable不能接受事件,也不能和用戶交互。

下面介紹幾種Drawable

 

BitmapDrawable

BitmapDrawable幾乎是最簡單的了,它表示一張圖片。通常在開發中我們就直接引用圖片即可,比如: R.drawable.image(drawable目錄下有一個image.jpg或者image.png的圖片資源),但是我們也可以用xml來描述Drawable。xml文件如下:

 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
         android:src="@mipmap/ic_launcher"
         android:antialias="true|false"
         android:dither="true|false"
         android:filter="true|false"         android:gravity="top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|fill_horizontal|center|fill|clip_vertical|clip_horizontal"
         android:mipMap="true|false"
         android:tileMode="disabled|clamp|repeat|mirror"/>

ShapeDrawable

這是一種很常見的Drawable,通常是通過編寫xml文件來創建的,因此有些復雜。ShapeDrawable通常是通過顏色來構建圖形的,既可以是純色,也可以具有漸變效果。使用大致如下所示:

 <?xml version="1.0" encoding="utf-8"?>
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle|oval|line|ring">
     <corners
         android:bottomLeftRadius="integer"
         android:bottomRightRadius="integer"
         android:radius="integer"
         android:topLeftRadius="integer"
         android:topRightRadius="integer" />
     <gradient
         android:angle="integer"
         android:centerColor="integer"
         android:centerX="integer"
         android:centerY="integer"
         android:endColor="color"
         android:gradientRadius="integer"
         android:startColor="color"
         android:type="linear|radial|sweep"
         android:useLevel="true|false" />
     <padding
         android:bottom="integer"
         android:left="integer"
         android:right="integer"
         android:top="integer" />
     <size
         android:width="integer"
         android:height="integer" />
     <solid android:color="color" />
     <stroke
         android:width="integer"
         android:color="color"
         android:dashGap="integer"
         android:dashWidth="integer" />
 
 </shape>
    • android:shape 
        表示圖形形狀:rectangle(矩形)、oval(橢圓)、line(橫線)、ring(圓環),默認矩形,line和ring必須有 < stroke>標簽來指定寬度和顏色,否則達不到預期效果。
    • < gradient>  漸變效果,與< solid>標簽互斥

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

LayerDrawable

它是一種層次化的Drawable,在< layer-list>< /layer-list>結點下有多個< item>< /item>其中後面的< item>< /item>疊加在前面的< item>< /item>上面,想愛你面是一耳光文本輸入框的例子:

 <?xml version="1.0" encoding="utf-8"?>
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
     <item>
         <shape android:shape="rectangle">
             <solid android:color="#0ac39e" />
         </shape>
     </item>
     <item android:bottom="6dp">
         <shape android:shape="rectangle">
             <solid android:color="#ffffff" />
         </shape>
     </item>
     <item
         android:bottom="1dp"
         android:left="1dp"
         android:right="1dp">
         <shape android:shape="rectangle">
             <solid android:color="#ffffff" />
         </shape>
     </item>
 
 </layer-list>

StateListDrawable

StateListDrawable對應< selector>標簽,這個大家應該比較熟悉。我們經常會給Button設置一個selector。StateListDrawable表示Drawable的集合,集合中的每個Drawable都對應著View的一種狀態,系統會根據View的狀態來給View設定相應的Drawable,下面是一個selector的創建樣例:

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@android:color/black"/>    <!-- 表示默認狀態-->
     <item android:state_focused="true"
           android:drawable="@android:color/holo_orange_dark"/><!-- 表示獲取焦點狀態-->
     <item android:state_pressed="true"
           android:drawable="@android:color/holo_red_dark"/><!-- 表示被點擊狀態-->
 </selector>
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved