9.1日音訊,android設計之png的方法詳解。我們大家在android的設計過程中,為了適配不同的手機分辨率,圖片大多需要拉伸或者壓縮,這樣就出現(xiàn)了可以任意調(diào)整大小的一種圖片格式png的格式。但是圖片是用于android開發(fā)的一種特殊的圖片格式,它的好處在于可以用簡單的方式把一張圖片中哪些區(qū)域可以拉伸,哪些區(qū)域不可以拉伸設定好,同時可以把顯示內(nèi)容區(qū)域的位置標示清楚。
本文結(jié)合一些具體的例子來看下png的具體用法。
首先看下普通的png資源與png的資源區(qū)別:
普通的png資源就不多介紹了,可以明顯看到png的外圍是有一些黑色的線條的,那這些線條是用來做什么的呢?我們來看下放大的圖像:
放大后可以比較明顯的看到上下左右分別有一個像素的黑色線段,這里分別標注了序號。簡單來說,序號1和2標識了可以拉伸的區(qū)域,序號3和4標識了內(nèi)容區(qū)域。當設定了按鈕實際應用的寬和高之后,橫向會拉伸1區(qū)域的像素,縱向會拉伸2區(qū)域的像素。如下圖:
拉伸的含義應該比較容易理解,但是內(nèi)容區(qū)域的標注有什么意義呢?我們來看下圖:
這里程序設置的文字垂直居中,水平居左的對齊方式。對齊方式是沒有問題的,但是對于這種大圓角同時又有些不規(guī)則邊框的的圖形來說,錯誤的標注方式會讓排版看起來很混亂。所以我們需要修正內(nèi)容區(qū)域的線段位置和長度。
把橫向的內(nèi)容區(qū)域縮短到圓角以內(nèi),縱向的內(nèi)容區(qū)域控制在輸入框的高度以內(nèi),這樣文字就可以正常顯示了。
這里還有一種特殊情況,就是本身是png的資源,但是在修改過程中你希望這張png不能被拉伸(在做皮膚的情況中有可能會遇到),那怎么辦呢?只要把拉伸區(qū)域的點點在透明像素的地方就可以了,這樣拉伸的時候會拉伸透明部分的像素,而不會拉伸圖像本身。如下圖:
大家可以看到拉伸區(qū)域的黑點是可以不連續(xù)的。
說了半天png的用法,那png如何輸出呢?有很多種方式可以輸出png,比如說用draw9patch.bat這個工具,或者簡單一點,用photoshop直接輸出。輸出的方式是先輸出普通的png資源,然后擴大畫布大小,上下左右各空出一個像素,再用一個像素的鉛筆工具(顏色選擇純黑色),上下左右分別畫點就可以了,保存的時候注意把后綴修改為png。
1.最外圍的一圈像素必須要么是純黑色,要么是透明,一點點的半透明的像素都不可以有,比如說99%的黑色或者是1%的投影都不可以有;
2.文件的后綴名必須是png,不能是.png或者是png,這樣的命名都會導致編譯失敗。
另外使用“點九”的意義
關于下圖,經(jīng)過測試發(fā)現(xiàn)使用普通png的顯示效果出現(xiàn)明顯的變色橫紋。png圖片的顯示效果明顯優(yōu)于普通png。
使用png格式后,橫紋問題基本已解決。因為對于png圖片,android系統(tǒng)程序有對其優(yōu)化的算法。
由于android手機屏幕的材質(zhì)質(zhì)量差距大。很多屏幕不支持16位以上的顏色顯示。
所以渲染后結(jié)果出現(xiàn)丟失顏色,故造成橫紋顯示。
經(jīng)與多款android手機對比后發(fā)現(xiàn),屏幕越次的手機橫紋越明顯。
而使用了png圖片技術后,只需要采用一套界面切圖去適配不同的分辨率,而且大幅減少安裝包的大小。而且這樣程序不需要專門做處理的就可以實現(xiàn)其拉伸,也減少了代碼量和開發(fā)工作量。