androidpngjpg
㈠ android 使用必須是png嗎
「點九」是andriod平台的應用軟體開發里的一種特殊的圖片形式,文件擴展名為:.9.png
智能手機中有自動橫屏的功能,同一幅界面會在隨著手機(或平板電腦)中的方向感測器的參數不同而改變顯示的方向,在界面改變方向後,界面上的圖形會因為長寬的變化而產生拉伸,造成圖形的失真變形。
我們都知道android平台有多種不同的解析度,很多控制項的切圖文件在被放大拉伸後,邊角會模糊失真。
OK,在android平台下使用點九PNG技術,可以將圖片橫向和縱向同時進行拉伸,以實現在多解析度下的完美顯示效果。
【普通拉伸和點九拉伸效果對比】
對比很明顯,使用點九後,仍能保留圖像的漸變質感,和圓角的精細度。
從中我們也可以理解為什麼叫「點九PNG」,其實相當於把一張png圖分成了9個部分(九宮格),分別為4個角,4條邊,以及一個中間區域,4個角是不做拉升的,所以還能一直保持圓角的清晰狀態,而2條水 平邊和垂直邊分別只做水平和垂直拉伸,所以不會出現邊會被拉粗的情況,只有中間用黑線指定的區域做拉伸。結果是圖片不會走樣
二.「點九」的製作方法
方法1:使用 「draw9patch」工具繪制,流程如下
1. 安裝工具
首先你需要給自己的電腦安裝上java於系統的默認目錄下。沒有安裝java的同學可以在網路搜索:jdk-6u20-windows-i586,安裝包大小80M左右。
然後使用andriod模擬器—android-sdk-windows,打開SDK/tools目錄下的「draw9patch.bat」文件,出現載入窗口:
2.導入並編輯
將png圖片拖拽到該窗口中
如下圖,自動進入編輯界面。圖中介紹了每個區域的內容及功能注釋。
預覽右側的視圖發現,圖片的邊緣處於普通拉伸狀態。
現在我們在圖片邊緣點擊左鍵,繪制出黑線,即圖片需要被拉伸的部分。如下圖,對4條黑線做了注釋。
如果失誤多繪的部分,可按住shift鍵的同時點擊滑鼠左鍵擦除)。
如圖所見,三種拉伸結果均已完美顯示,已實現我們想要的拉伸效果,假設這是一個有顯示文字的窗體,那麼文字顯示的區域,程序也會控制在黑線對應范圍。
㈡ android png還是jpg
android開發過程中,有各種各樣的圖片,不同的圖片有不同的大小、用途,有的是作為背景圖片,有的是作為一個小的圖標,不同用途、不同場景的圖片使用格式最好按照不同格式的優缺點來確定。
1、首先來說,同樣解析度的圖片,png的要比jpg的大好多, 做android對圖片的大小很敏感,所以第一感覺是用jpg,不用png。之所以png比jpg大是因為,png是無損壓縮的,而jpg是有損壓縮,但是在比如說一張背景圖,由於手機會對png的圖片進行硬體加速,所以同一張圖片的png格式和jpg格式,png的載入速度是比jpg快的,但是如果對包大小的訴求大於對載入速度訴求的話,jpg又比png有優勢。
2、但是有的情況下jpg是比png好的,jpg相對於png的優勢是小!小!小,因此一些需要動態網路獲取載入的圖片,比如說Splash頁面,就要使用jpg格式的圖片了。
3、小的圖標,由於對其清晰度要求高,並且小圖標也不是很大,因此最好用png格式的。
2020.12.10更新
讓png和jpg都去死吧,用webp
以上僅作為個人的觀點,如若有誤,請指正!
㈢ Android 圖片載入(一)高效載入Bitmap 基礎篇
由於Bitmap的特殊性以及Android對單個應用所規定的最大內存限制,我們在同時載入大量Bitmap時很容易發生內存溢出,即我們通常所說的OutOfMemoryError(OOM),因此高效載入Bitmap就成為了每個Android開發者的必備技能。
在學習如何高效地載入Bitmap之前,首先介紹一下如何載入一個Bitmap。我們都知道,Bitmap在Android中通常指的是一張圖片,那麼如何將JPG、PNG等格式的圖片轉換成Bitmap對象呢?BitmapFactory類給我們提供了一些方法:
接下來開始介紹如何高效地載入Bitmap,其實核心思想很簡單: 就是採用BitmapFactory.Options參數來調整圖片尺寸來適配控制項的大小。
假如我們顯示圖片的控制項ImageView寬高為100×100像素,而圖片的尺寸為1024×1024像素,這個時候如果將整個圖片載入進來並顯示到控制項上,自然是很佔用內存資源的。這個時候可以通過BitmapFactory.Options按一定的采樣率載入縮小後的圖片,再將縮小後的圖片顯示到ImageView中,這樣就能減小內存佔用從而在一定程度上避免OOM的發生。
通過BitmapFactory.Options來縮放圖片,主要是使用它的inSampleSize參數,也就是前面提到的采樣率。當采樣率inSampleSize為1時,采樣後的圖片大小為原圖大小;當采樣率inSampleSize>1,比如為2時,采樣後的圖片寬高都為原圖的1/2,即像素降為原圖的1/4,佔用的內存大小也就是原圖的1/4;比較特殊的是,當采樣率inSampleSize<1時,系統會自動將該值當做1來處理。 因此可以得出一個結論:采樣率inSampleSize必須是大於1的整數圖片才會有縮小的效果,並且采樣率同時作用於寬高,也就是說采樣後的圖片會縮小到原圖的1/(inSampleSize^2)。比如inSampleSize=4,那麼縮放比例為1/16。
我們現在知道了,通過采樣率可以提高圖片的載入效率,那麼如何才能計算出最合適的采樣率?我們可以按照如下流程:
接下來以decodeFile方法為例實現圖片的縮放,其他三個方法處理方式類似。
下一篇: Android 圖片載入(二)圖片載入框架Glide 入門篇
《Android開發藝術探索》