天天看點

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

.9.png是一種可以自定義拉伸特定區域的圖檔格式。

在Android的UI設計開發中,很多控件需要适配不同的手機分辨率進行拉伸或者壓縮,這樣就出現了可以任意調整大小的一種圖檔格式“.9.png”。這種圖檔是用于Android開發的一種特殊的圖檔格式,它可以指定特定的區域進行拉伸而不失真,同時可以指定前景内容的顯示區域。即.9.png圖檔的用處可以概括為以下兩點:

  • .9.png圖檔在圖檔拉伸的時候特定的區域不會發生圖檔失真;
  • .9.png圖檔作為背景圖的時候可以指定内容顯示區域;

一、.9.png圖檔與普通圖檔的對比

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

通過上面的對比,我們可以發現,.9.png圖檔周圍會有一條黑色的線條,這些黑色線條有什麼作用呢?就是用于指定我們背景的拉伸區域或者前景内容的顯示區域。

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

png9.png

  • 左邊黑線:縱向拉伸區域,必須要畫的,控制縱向拉伸,如上圖右側第一個小圖。
  • 上邊黑線:橫向拉伸區域,必須要畫的,控制橫向拉伸,如上圖右側第二個小圖。
  • 右邊黑線:可選,縱向内容顯示區域
  • 下邊黑線:可選,橫向内容顯示區域

通過上面的的介紹,我們知道.9.png的四條邊上的黑線有哪些用途,那麼我們将介紹下關于拉伸區域的界定。

拉伸區域

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

拉伸區域.png

  • 紅色框區域: 表示縱向拉伸區域,當控件背景圖檔需要進行縱向拉伸時,它隻會拉伸紅色區域,其它區域不會拉伸。
  • 綠色框區域:表示橫向拉伸區域,當控件背景圖檔需要進行橫向拉伸時,它隻會拉伸綠色區域,其它區域不會拉伸。
  • 紅綠相交區域:該段區域橫向和縱向都會拉伸。

前景内容顯示區域

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗
  • 紅色框區域:指定橫向文本顯示的區域,限定文本左右能顯示到的邊界。
  • 藍色框區域:指定縱向文本顯示的取,限定文本上下能顯示到的邊界。

二、.9.png圖檔的制作

這麼強大的一種圖檔,在我們android開發中的适配環節,起了很大的作用。那麼怎麼制作這種.9.png圖檔呢?在Android的工具中給我們提供了draw9patch.bat工具來制作.9檔案。該工具目錄在\android-sdk-windows\tools\draw9patch.bat。

我們直接打開draw9path.bat二進制程式,将我們需要制作的圖檔導入進去。然後按住滑鼠左鍵進行劃黑邊,如果畫錯了,通過Shift+滑鼠左鍵進行拖動取消。

三、簡單體驗

首先,我們通過簡單的布局檔案看看普通圖檔的展示效果。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
    android:layout_width="match_parent" android:layout_height="match_parent"
    tools:context="dsw.iflytek.com.pngdemo.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@mipmap/back"
        android:layout_centerInParent="true"
        android:text="Hello World!" />
</RelativeLayout>
           
Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

普通資源效果圖.png

在上面的效果圖沒有進行自适應,兩邊的邊框已經被文字嵌入進去,是以我們要對圖檔作如下修改:

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

進行拉伸處理.9資源.png

在我們的進行中,通過對圖檔添加縱橫向的拉伸,來保持背景的自适應。這裡需要我們注意指定的拉伸區域,需要我們仔細體會。

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

拉伸效果.png

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

多行展示效果.png

在上面我們對橫向拉伸區域有了一定認識。下面看看内容拉伸區域:

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

縱向顯示區域.png

在上面的.9圖中,我們将整個右邊線作為内容縱向顯示的區域,看看效果圖:

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

上下限制内容.png

我們可以看到,内容的顯示是緊緊填滿上下之間。沒有間隙。

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

靠近底部.png

在來看看效果圖:

Android設計中的.9.png圖檔一、.9.png圖檔與普通圖檔的對比二、.9.png圖檔的制作三、簡單體驗

底部效果圖.png

通過上面對比,我們可以發現右側變現控制着内容視圖的顯示區域的規律。

同樣底部也是一樣,在開發的過程中,合理的使用.9.png檔案可以很好的優化我們的資源檔案,減小apk的包大小。也能進行很好的适配效果。

作者:Andoter的學習筆記

連結:https://www.jianshu.com/p/5996e80aee9b