Android Drawable Resource學習(三)、NinePatchDrawable和NinePatch圖片的製作

來源:互聯網
上載者:User
一、建立NinePatchDrawable

一個NinePatch也是一個PNG的圖片,不過不同的是可以為這種格式的圖片定義可伸縮的地區,當某個視圖的內容超過了正常的尺寸的時候,這種格式的圖片會自動展開以適應不同的尺寸。一般這種圖片是作為視圖的背景,並且視圖至少有一個尺寸(layout_width或者layout_height)是設定為"warp_content"。當視圖自增長來適應內容的時候,Nine-Patch格式的圖片也會相應的進行縮放來匹配視圖的尺寸。

NinePatchDrawable的建立方式幾乎和BitmapDrawable一模一樣,使用方式也沒有多大的區別。只是在xml建立的時候,沒有那麼多的屬性。

<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"     android:src=""    android:dither=""/>

它只有這三個屬性。

二、建立一個.9.png格式的圖片

在androidsdk的tools目錄下,有這樣一個工具draw9patch.bat。使用這個工具,可以很快速的繪製一個.9.png格式的圖片。

這種格式的圖片在android 環境下具有自適應調節大小的能力。 

(1)允許開發人員定義可擴充地區,當需要延伸圖片以填充比圖片本身更大地區時,可擴充區的內容被延展。  

(2)允許開發人員定義內容顯示區,用於顯示文字或其他內容

  

如所示:  

左側和上方的黑線交叉的部分即可擴充地區。右側和下方的黑線交叉的部分即內容顯示區。用它可以實現部分展開,從而實現圖片在安卓系統上的完美應用

有這樣一張圖片,圖片名為mask.png.

將它製作了一個有展開部分的mask1.9.png圖片。和有內容限制和展開部分的mask2.9.png圖片。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"     android:orientation="vertical">        <!-- 普通圖片為背景的按鈕 ,內容較少,不會展開-->    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/mask"        android:text="1111"/>        <!-- 普通圖片為背景的按鈕 ,內容過多,圖片會展開,圖片變形模糊-->     <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/mask"        android:text="111111111111111111111"/>          <!-- 有展開設定的.9.png片為背景的按鈕 ,內容過多,展開部分會展開 ,圖片不會變形-->     <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/mask1"        android:text="111111111111111111111"/>          <!-- 有內容限制和展開設定的.9.png片為背景的按鈕 ,內容過多,展開部分會展開 ,並且文字內容位置改變-->     <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:background="@drawable/mask2"        android:text="1111111111"/></LinearLayout>

相關文章

聯繫我們

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