android支持圖片格式
Ⅰ android系統的手機可以看格式是png的圖片嗎
可以的,android圖片大多都是png的,
Ⅱ android圖片系列 (2) - 靜態 SVG 圖片
SVG 圖片是一種可支持任意縮放的圖片格式,使用 xml 定義,使用 canvas 中 path 路徑來完成繪制,和我們傳統使用的 BitMap點陣圖有很大的區別。
SVG 在前端早就普及了,在android 中是 google 是在5.0之後開始支穗埋持的,14年出來之後兼容是個大問題,隨著2016.2 V7包 23.2.0版本的發布才算是有個相對完善的兼容使用方案。
SVG 的概念我就不寫了,拿來主義啦,原文: Android Vector曲折的兼容之路
不瞎逼逼,我們先來看一看 android 中的 SVG 矢量圖是個什麼東東
看到沒有,這就是一個 SVG 矢量圖片,就是一個 xml 文件,右邊是預覽,先說下,這東西的好處:縮放不失真,體積小。這一個 SVG 圖片只有970個位元組...強大吧,比 png 格式的圖片強的沒邊了吧,png 我們還得適配,做多套,然後一個一個改名字復制到工程里,有了 SVG 媽媽再也不擔心我們寫作業啦...
這里需要解釋下這里的幾個標簽:
這里有一分詳細的屬性說明:
好了下面開始介紹 SVG 啦
首先,需要講解兩個概念——SVG和Vector。
SVG,即Scalable Vector Graphics 矢量圖,這種圖像格式在前端中已經使用的非常廣泛了
Vector,在Android中指的是Vector Drawable,也就是Android中的矢量圖
因此,可以說Vector就是Android中的SVG實現猜顫螞,因為Android中的Vector並不是支持全部的SVG語法,也沒有必要,因為完整的SVG語法是非常復雜的,但已經支持的SVG語法已經夠用了,特別是Path語法,幾乎是Android中Vector的標配
Android以一種簡化的方式對SVG進行了兼容,這種方式就是通過使用它的Path標簽,通過Path標簽,幾洞消乎可以實現SVG中的其它所有標簽,雖然可能會復雜一點,但這些東西都是可以通過工具來完成的,所以,不用擔心寫起來會很復雜。
Path指令解析如下所示:
支持的指令:
M = moveto(M X,Y) :將畫筆移動到指定的坐標位置
L = lineto(L X,Y) :畫直線到指定的坐標位置
H = horizontal lineto(H X):畫水平線到指定的X坐標位置
V = vertical lineto(V Y):畫垂直線到指定的Y坐標位置
C = curveto(C X1,Y1,X2,Y2,ENDX,ENDY):三次貝賽曲線
S = smooth curveto(S X2,Y2,ENDX,ENDY)
Q = quadratic Belzier curve(Q X,Y,ENDX,ENDY):二次貝賽曲線
T = smooth quadratic Belzier curveto(T ENDX,ENDY):映射
A = elliptical Arc(A RX,RY,XROTATION,FLAG1,FLAG2,X,Y):弧線
Z = closepath():關閉路徑
坐標軸為以(0,0)為中心,X軸水平向右,Y軸水平向下
所有指令大小寫均可。大寫絕對定位,參照全局坐標系;小寫相對定位,參照父容器坐標系
指令和數據間的空格可以省略
同一指令出現多次可以只用一個
注意,』M』處理時,只是移動了畫筆, 沒有畫任何東西。 它也可以在後面給出上同時繪制不連續線。
關於這些語法,開發者需要的並不是全部精通,而是能夠看懂即可,其它的都可以交給工具來實現。
這里有一篇 Android vector標簽 PathData 畫圖超詳解 詳細描述了 SVG 中 path 的繪制
好了概念性的東西說完了,我們來看看
SVG 的使用分2種,一種是靜態 SVG 矢量圖,就是本文的主角,本章節主要談論的東西,另一種是 SVG 矢量動畫,是SVG 的高級應用,是給靜態 SVG 加上objectAnimator 動畫,應用的很廣泛,是實現 android icon 動態交互的核心做法。
上面的SVG 圖大家都看到了,我們就是寫一個 xml 的文件,裡面承載的標簽都是描述如何繪制我們想要的圖案的,畫布大小,顏色,路徑等,然後交給系統去繪制。
現在讓我們來看看 SVG 在 andorid 中如何應用,如何兼容5.0以下版本。
SVG 雖然早早就在前端使用了,但是 android 上開始支持 SVG 的使用還是從5.0開始的,在5.0以上系統的使用很簡單,和之前一樣使用 PNG 圖片一樣
首先 android 中的 SVG 圖片的承載方式是一個 xml 文件,所以UI 給我們的 SVG 圖片是不能直接使用的,這里 google 給我們提供載入方式
Android studio 在 2.3.3 的版本中可以直接使用 svg,新建一個 SVGDemo項目,新建 Vector Asset 文件:app-> main -> New -> Vector Asset 如圖所示:
我們選擇 Local File 就是選擇本地svg文件進行導入,對文件命名後點擊 Next ->Finish 在 drawable目錄 下就添加了一個.xml的文件
好了這樣一個 svg 圖片我們算是加入到我們的工程里里了,可以直接使用了。當然在此之前我們把 SVG 圖片放在那個 drawable 文件夾呢。對於這個問題就要說一下了:
有一點需要解釋一下,svg 矢量圖文件我們放在drawable 根目錄即可。android 系統不會根據你把 svg 矢量圖存放在不同的 drawable 文件夾,對圖片進行解析度上的縮放,因此我們不用像使用 PNG 圖片時准備多套圖片了。我們導入 SVG 圖片默認存放的地址就是 drawable根目錄,所以我們就放這里就好了,當然也可以自己寫SVG 圖片,都是 xml 的,自己寫完 path 路徑後都是可以查看預覽的,一般也不會自己寫,都是UI 的活。
這樣就 ok啦,5.0以上的系統SVG你就像一般 png 圖片一樣使用就好啦,你可以試一下。
SVG 在 4.x 版本上的兼容根據 SVG 使用范圍的變化,配置也是逐步增加的
這時 imageview 就不行了,我們需要使用 AppCompatActivity 或是 AppCompatImageView,這時我們需要導入 V7 包
gradle 需要如下配置:
系統會在 4.x 版本時對 SVG 自動生成相應的 drawable 圖,此時 SVG 是沒有無限拉伸特性的,gradle 的配置目的是去這個
舉個例子:
資源設置不能用 src 了,必須使用 srcCompat ,這時我們能看到圖而不是去 SVG 的特性了
這時上面的設置就不夠了,我們在 view 所在的 activity 或是全局添加下面的設置
然後這還不夠,我們必須給 SVG 圖片添加一個容器,比如 selector,這樣我們才能正常使用,比如給 textview 設置圖片,自定義屬性設置圖片
這個 vc_halfstart_24dp 就是 SVG 圖片
這個我們必須要添加官方的 vectorDrawable 支持庫了,最低支持到 23.2.0
這樣基本就沒啥問題了
SVG 配合自定義 view 的話,就得我們讀取 SVG 然後轉換成 path 路徑來畫了,SVG 實質上也是 xml 文件,所以解析 xml 文件的思路也使用,當然還有其他一些 SVG 轉 path 的思路
SVG前戲—讓你的View多姿多彩 一文中提供了一些思路,大家不妨去看看
Ⅲ Android對圖片格式有什麼建議么,PNG還是JPEG
這個時代。可以把PNG當作GIF的替代來用。
PNG各方面的功能和性能都可以完美替代GIF。在WEB上不流行是因為IE6對於PNG的透明兼容性很差。
但是在手機應用,GIF已經可以進入墳墓了。
小尺寸,色彩數少,或者需要用到透明的時候,使用PNG。
大尺寸,色彩漸變色多的用JPG。
Ⅳ Android發布主流應用市場icon&應用截圖尺寸
*應用小圖標:尺寸:16 * 16、大小20K以內、PNG格式。
*應用圖標:尺寸:512 * 512、大小200K以內、PNG格式
*應用截圖:請上傳4-5張截圖(尺寸保持一致),單張圖片不超過1M。截圖不能小於320*480像素, 推薦480*800像素。JPG、PNG格式。
*應用圖標:圖標需為正方形。大小:2MB 以內;尺寸:216*216px;格式:PNG、 WEBP。
*應用截圖和視頻:您可以在這里上傳應用詳情頁展示的素材。介紹截圖是必填素材,其他素材可選填,如果您提交了其他素材可能會讓該應用在華為應用市場客戶端有更好的展示效果。
豎向截圖:需上傳 3~5 張。大小:2MB 以內;尺寸:450*800px;格式:PNG、 JPG、 JPEG、 WEBP。(推薦使用豎向截圖)
*應用圖標:請確保上傳的圖標和APK內的圖標一致(512 X 512,png格式)
*應用截圖:請至少上傳3張圖片,至多5張截圖,大小不大於5M,1080*1920。
*icon:要求與安裝包中圖標一致。尺寸:512*512px,圖片格式:PNG,小於1M。
*上傳豎版截圖:請上傳3-5張截圖,支持JPG、PNG格式。截圖尺寸要求:1080*1920,單張圖片不能超過1M。請去除截圖中的頂部狀態欄的通知圖標,圖片中不得使用其他品牌的手機作為邊框或宣傳圖
*應用icon:支持jpg/png格式,尺寸要求長等於寬,不低於256*256,不超過512*512,大小50k以內,僅支持直角圖標,
*上傳截圖:上傳3-5張清晰截圖。尺寸為豎圖480*800,格式為jpg/png,每張圖片尺寸一致,單張圖片不超過2MB)
*icon:PNG 格式,512 X 512 像素,小於 1024 KB。
*截圖:JPG/PNG 格式,最小 320 像素,最大 3840 像素,圖片比例 2:1,至少需要4個圖片,最多可上傳8個。可以注冊4~8張圖片,圖片將會按照您的注冊順序進行展示。
*應用圖標:要求與安裝包中圖標一致。尺寸:512*512PX,圓角半徑弧度:70PX,圖片格式:PNG。
應用截圖: 請上傳4-5張截圖(尺寸保持一致),支持JPG、PNG格式。截圖尺寸要求:不小於800*480(480*800),單張圖片不能超過3M。請去除截圖中的頂部通知欄。
*應用圖標:尺寸512x512,格式PNG,小於1M。
*應用截圖:請上傳至少 3 張圖片,規格:1280 x 720或720 x 1280,1800 x 1012或1012 x 1800,1920 x 1080或1080 x 1920,2560 x 1440或1440 x 2560
圖片請勿出現與應用實際功能無關的內容
圖片請勿出現重復、拉伸、壓縮、模糊、黑(白)邊、黑(白)角
圖片請勿出現第三方應用市場LOGO或其他品牌手機外觀素材,推薦使用魅族手機外觀素材
*應用圖標
請上傳PNG格式的圖標,尺寸:200X200 px,大小:小於800KB。
請開發者重點關注以下注意事項,大部分應用曾因此不合規被拒絕:
1.提交應用圖標必須與渠道包內解析圖標保持一致
2.應用圖標必須為透明背景,不可存在白邊、藍邊等特殊情況
*應用截圖
請上傳JPG或PNG格式的圖片,最小尺寸:800 X480 px,單張圖片小於1M。
請開發者重點關注以下注意事項,大部分應用曾因此不合規被拒絕:
1.截圖數量:4-6張(每張截圖不得相同,且需保持尺寸一致);
2.截圖必須與軟體實際運行內容一致;
3.截圖中不得含有與App本身無關的應用圖標;
4.截圖不得為應用啟動畫面;
5.請務必上傳豎版截圖
Ⅳ Android中如何實現對Tiff格式圖片的支持
在java中有ImageIO的對象可以處基含理搏困笑tiff,把tiff格式尺拆轉換成jpg等格式android應該需要第三方的支持
Ⅵ android裡面的圖片資源怎麼都是png的
因為png格式的文件支持透明度,android中可以存在四種png後綴的image文件
1.標准PNG: (ex.應用默認的icon.png)
符合PNG-8標準的PNG圖片, 只能做圖片, 不能放縮.
2.Android打包處理後的9.png: (ex.應用APK中打包的9.PNG)
為了保證佔用空間小,android在資源中刪除了標准PNG的大量冗餘信息,去除了周邊的空白像素,減少了IDAT數據段,
在打包成APK的時候,裡面的文件就是不可放縮的9.png, 雖然後綴名還是9.png,但是已經沒有放縮功能,並且把邊界多的兩個像素也去除了.
3.Android不可放縮的9.png:
在drawable中可以找到9.png圖片,但是使用Draw 9-patch軟體打開會報錯,但是可以在drawable中使用,
這些文件只是刪除了冗餘信息,並且加上了邊界的兩個像素點,
並沒有添加可放縮的flag到文件中,這些文件只能作為打包後的9.PNG使用(但是size會小一些),不能放縮和做背景.
4.Android可放縮的9.png:
可以使用Draw 9-patch軟體打開,不會報錯,在drawable中使用,android會根據設置的黑色像素點來進行放縮.
有添加可縮放的flag到文件中,可以做為View的背景或者普通的圖片顯示.在做背景時,可以進行拉伸和放縮.
在做非背景時,比如像ImageView這類設置src圖片則不隨view變化,按其自身大小顯示部分或全部.
另: 對9.png後綴文件的解析邏輯及可放縮chunk檢查的邏輯 Images.cpp
對9.PNG判斷函數入口: Drawable.java中對」nine-patch」欄位的判斷
Ⅶ Android對圖片格式有什麼建議么,PNG還是JPEG
其實png和jpeg都可以,image載入以後,在內存裡面是一樣的.但是png的壓縮演算法解壓快很多,jpeg的話可以有很高的壓縮比(當然會有損失) 所以,你可以自己來平衡文件大小,圖片質量和解壓代價之間的關系
Ⅷ 為Android應用添加背景應該使用什麼樣的圖片格式,每個格式的的優勢在哪
原創回答:《轉載前請註明 from 網路知道-smile烏龜的回答》
先說結論;
1. 大的ViewGroup(Rl,FL ,LL,Cl等)布局背景應該設PNG
2. 小的view(Button,Recyclerview子item)的背景應該用WebP格式
3. 類似16*16的表情圖 也應該用WebP,也可考慮PNG
在研究圖片之前,首先搞明白三個問題:
像素點:計算機學科中,圖片由一個一個像素點組成,像素點有兩種ARGB和RGB,A,讀作「alpha」,中文「透明度」的含義。
圖片格式:JPEG 有損壓縮
優點 :壓縮過程中損失像素少(為什麼要壓縮?後文會說)
缺點:有損耗壓縮會使原始圖片數據質量下降(像素點變少了)
PNG無損壓縮
優點:更優化的網路傳輸顯示
(PNG圖像在瀏覽器上採用流式瀏覽,即使經過交錯處理的圖像會在完全下載之前提供瀏覽者一個基本的圖像內容,然後再逐漸清晰起來。它允許連續讀出和寫入圖像數據,這個特性很適合於在通信過程中顯示和生成圖像)
支持透明效果
體積小適合網路傳輸,請求服務端的圖片,節省流量
WebP 谷歌(google)開發的一種旨在加快圖片載入速度的圖片格式
優點:「在質量相同的情況下,WebP格式圖像的體積要比JPEG格式圖像小40%」
「WebP
的優勢體現在它具有更優的圖像數據壓縮演算法,能帶來更小的圖片體積,而且擁有肉眼識別無差異的圖像質量;同時具備了無損和有損的壓縮模式、Alpha
透明以及動畫的特性,在向JPEG 和 PNG 上的轉化效果都非常優秀、穩定和統一」
WebP應用比較優秀的:騰訊旗下 QQ空間客戶端,QQ客戶端,微信客戶端等
WebP圖片常用轉換工具:智圖,iSparta等
圖片壓縮:
以Android 為例,任何展示圖片的View控制項,載入圖片的時候,都需要為圖片申請內存,通常圖片越大,申請的內存越大,Android系統限制了每個App的運行內存,一般為32MB-200M左右,為了優化App性能,必須對圖片進行壓縮:壓縮圖片尺寸
通過壓縮圖片尺寸,解決App運行時申請過多內存,被系統殺死的情況。
總結: JPEG是有損壓縮,PNG是無損壓縮,
當UI切了一張匹配實際手機屏幕大小的圖片時 可以使用JPEG(不需要壓縮圖片)
當UI給的圖片過大,需要程序員手動壓縮時,考慮PNG
當UI給的圖片過於離譜,不可理喻,導致APK包過大,用戶反映耗費流量過多時,考慮使用WebP,而且WebP同PNG,JPEG是可以互轉的
(PS:請求自服務端的圖片資源,其實也是UI給的)
參考和補充:
圖片格式,JPEG PNG WebP from網路
http://isux.tencent.com/introction-of-webp.html
http://www.cnblogs.com/xiangism/p/5311314.html
WebP圖片常用轉換工具:智圖,iSparta 等
官方WebP解析庫https://github.com/alexey-pelykh/webp-android-backport
Ⅸ Android圖片處理(入門)
圖片格式概述:
但是上述方法只適合載入比較小的圖片,真正載入一張高清大圖的時候就會出現內存溢出並耐,解決方案如下:
相關鏈接:
圖片處理(進階)
如以上內容有任何錯誤或毀鉛補充,歡纖蔽好迎加QQ:1195211669 ,驗證信息:
Ⅹ android開發中圖片大小的兼容問題
最標準的就是製作.9.png格式圖片,保證拖拉不變形,畢氏譽通常android程序的小圖標最好手段都做核孝成這種格式;
對於引導頁,通常只要做drawable-hdpi,drawable-mdpi,drawable-ldpi三個圖就基本可以了,然後在布局裡設置為 fill_parent,支持主流即可。不然挨個寫布局文件太麻煩了,android碎片化的弊端啊