Android設(shè)計(jì)中的.9.png圖片

.9.png是一種可以自定義拉伸特定區(qū)域的圖片格式。

在Android的UI設(shè)計(jì)開發(fā)中,很多控件需要適配不同的手機(jī)分辨率進(jìn)行拉伸或者壓縮,這樣就出現(xiàn)了可以任意調(diào)整大小的一種圖片格式“.9.png”。這種圖片是用于Android開發(fā)的一種特殊的圖片格式,它可以指定特定的區(qū)域進(jìn)行拉伸而不失真,同時(shí)可以指定前景內(nèi)容的顯示區(qū)域。即.9.png圖片的用處可以概括為以下兩點(diǎn):

  • .9.png圖片在圖片拉伸的時(shí)候特定的區(qū)域不會發(fā)生圖片失真;
  • .9.png圖片作為背景圖的時(shí)候可以指定內(nèi)容顯示區(qū)域;

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

compare.jpg

通過上面的對比,我們可以發(fā)現(xiàn),.9.png圖片周圍會有一條黑色的線條,這些黑色線條有什么作用呢?就是用于指定我們背景的拉伸區(qū)域或者前景內(nèi)容的顯示區(qū)域。

png9.png
  • 左邊黑線:縱向拉伸區(qū)域,必須要畫的,控制縱向拉伸,如上圖右側(cè)第一個(gè)小圖。
  • 上邊黑線:橫向拉伸區(qū)域,必須要畫的,控制橫向拉伸,如上圖右側(cè)第二個(gè)小圖。
  • 右邊黑線:可選,縱向內(nèi)容顯示區(qū)域
  • 下邊黑線:可選,橫向內(nèi)容顯示區(qū)域

通過上面的的介紹,我們知道.9.png的四條邊上的黑線有哪些用途,那么我們將介紹下關(guān)于拉伸區(qū)域的界定。

拉伸區(qū)域
拉伸區(qū)域.png
  • 紅色框區(qū)域: 表示縱向拉伸區(qū)域,當(dāng)控件背景圖片需要進(jìn)行縱向拉伸時(shí),它只會拉伸紅色區(qū)域,其它區(qū)域不會拉伸。
  • 綠色框區(qū)域:表示橫向拉伸區(qū)域,當(dāng)控件背景圖片需要進(jìn)行橫向拉伸時(shí),它只會拉伸綠色區(qū)域,其它區(qū)域不會拉伸。
  • 紅綠相交區(qū)域:該段區(qū)域橫向和縱向都會拉伸。
前景內(nèi)容顯示區(qū)域
  • 紅色框區(qū)域:指定橫向文本顯示的區(qū)域,限定文本左右能顯示到的邊界。
  • 藍(lán)色框區(qū)域:指定縱向文本顯示的取,限定文本上下能顯示到的邊界。

二、.9.png圖片的制作

這么強(qiáng)大的一種圖片,在我們android開發(fā)中的適配環(huán)節(jié),起了很大的作用。那么怎么制作這種.9.png圖片呢?在Android的工具中給我們提供了draw9patch.bat工具來制作.9文件。該工具目錄在\android-sdk-windows\tools\draw9patch.bat。
我們直接打開draw9path.bat二進(jìn)制程序,將我們需要制作的圖片導(dǎo)入進(jìn)去。然后按住鼠標(biāo)左鍵進(jìn)行劃黑邊,如果畫錯(cuò)了,通過Shift+鼠標(biāo)左鍵進(jìn)行拖動(dòng)取消。

三、簡單體驗(yàn)

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

<?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>
普通資源效果圖.png

在上面的效果圖沒有進(jìn)行自適應(yīng),兩邊的邊框已經(jīng)被文字嵌入進(jìn)去,所以我們要對圖片作如下修改:

進(jìn)行拉伸處理.9資源.png

在我們的處理中,通過對圖片添加縱橫向的拉伸,來保持背景的自適應(yīng)。這里需要我們注意指定的拉伸區(qū)域,需要我們仔細(xì)體會。


拉伸效果.png
多行展示效果.png

在上面我們對橫向拉伸區(qū)域有了一定認(rèn)識。下面看看內(nèi)容拉伸區(qū)域:


縱向顯示區(qū)域.png

在上面的.9圖中,我們將整個(gè)右邊線作為內(nèi)容縱向顯示的區(qū)域,看看效果圖:


上下限制內(nèi)容.png

我們可以看到,內(nèi)容的顯示是緊緊填滿上下之間。沒有間隙。

靠近底部.png

在來看看效果圖:

底部效果圖.png

通過上面對比,我們可以發(fā)現(xiàn)右側(cè)變現(xiàn)控制著內(nèi)容視圖的顯示區(qū)域的規(guī)律。

同樣底部也是一樣,在開發(fā)的過程中,合理的使用.9.png文件可以很好的優(yōu)化我們的資源文件,減小apk的包大小。也能進(jìn)行很好的適配效果。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容