前言:
Android Q在2019年的3月份發(fā)布了beta1版本拉岁,這算是近幾年Android版本改動中變化最大的一個(gè)版本凯沪,本文將分章節(jié)一一講解Android Q我們程序員應(yīng)該做的適配工作脉幢,本文章將分系列五鲫,本著作者對應(yīng)新特性進(jìn)行盡量全面的理解后,將經(jīng)驗(yàn)和成果與大家分享哩牍。那么開始吧界阁!
正文:
本文如題,圖標(biāo)篇挂据,可能有的同學(xué)認(rèn)為這沒啥好講的航背,感覺沒有意義,這里作者通過工作中的開發(fā)棱貌,表示圖標(biāo)還是需要一些適配工作的玖媚。尤其是從Android 8.0引入了矢量圖標(biāo)后,如今正式在Android Q強(qiáng)制使用了婚脱,所以如果大家不對圖標(biāo)進(jìn)行適配的話今魔,在Android Q上會出現(xiàn)顯示問題。
當(dāng)我們新建一個(gè)8.0以上的項(xiàng)目的時(shí)候障贸,AndroidStudio會自動給我們多創(chuàng)建2個(gè)文件夾mipmap-anydpi-v26和drawable-v24错森,還有drawable下的ic_launcher_background.xml如圖
當(dāng)我們點(diǎn)擊進(jìn)去會發(fā)現(xiàn),里面全部都是關(guān)于verctor的矢量圖標(biāo)篮洁,這時(shí)候如果小伙伴們不想做適配工作涩维,直接簡單粗暴的刪除掉這些文件,app在啟動時(shí)就會轉(zhuǎn)向去讀取png的圖標(biāo)文件,看似一切問題得到了解決瓦阐。
但是細(xì)心的小伙伴肯定留意到了蜗侈,從Android8.1開始,引入了圖標(biāo)的視差和脈動睡蟋,支持圖標(biāo)動態(tài)調(diào)整踏幻,只有當(dāng)你適配了矢量圖標(biāo)后才會啟動如圖
這個(gè)特性在Android Q上被強(qiáng)制啟動了,也就是說Android Q不會去對你的png圖標(biāo)進(jìn)行適應(yīng)顯示戳杀,而是會嘗試把你的png圖標(biāo)按照新特性來顯示该面,這時(shí)候你的app圖標(biāo)在Android Q上將會顯示小一圈,無法跟其他App的圖標(biāo)保持一致了信卡,如圖
左邊的刪除了矢量圖app在Android Q上顯示的比其他所有圖標(biāo)都小一圈隔缀,并且不支持動態(tài)特效,如果你認(rèn)為這確實(shí)是個(gè)適配問題傍菇,那么請接著往下看吧蚕泽,第一篇文章不想寫的太復(fù)雜,所以圖標(biāo)篇并不是簡簡單單的給程序員們看的桥嗤,其實(shí)也是UI小姐姐看的,畢竟做圖的是她們仔蝌,他們不提供素材泛领,一切都是白扯。
下面我會對谷歌官方推薦使用的矢量圖作圖辦法進(jìn)行講解和翻譯敛惊,部分文字渊鞋,圖片是截取自Google官方文檔,方便大家閱讀瞧挤。
自適應(yīng)啟動器圖標(biāo)锡宋,它可以在不同設(shè)備型號上顯示為不同的形狀。
您可以通過定義 2 個(gè)圖層(由一個(gè)背景圖層和一個(gè)前景圖層組成)來控制自適應(yīng)啟動器圖標(biāo)的外觀特恬。您必須提供圖標(biāo)圖層作為可繪制資源执俩,而不使用圖標(biāo)輪廓周圍的蒙版或背景陰影。
圖標(biāo)的設(shè)計(jì)要求
- 兩個(gè)圖層的尺寸都必須調(diào)整為 108 x 108 dp癌刽。
- 已屏蔽的視口中顯示的圖標(biāo)的內(nèi)層為 72 x 72 dp役首。
- 系統(tǒng)為 4 個(gè)面中每一面的外層保留 18 dp,以創(chuàng)建有趣的視覺效果(例如視差或脈動)显拜。
注意:設(shè)備的原始設(shè)備制造商 (OEM) 可以指定一個(gè)蒙版衡奥,該蒙版可能包含沿形狀特定點(diǎn)的半徑(最短為 33 dp)。
以上是我截取的翻譯远荠,這里給大家詳細(xì)解釋一下矮固,并且結(jié)合我的經(jīng)驗(yàn)給大家說注意事項(xiàng)。
1譬淳,UI小姐姐一定要使用AI給大家做svg圖標(biāo)档址,千萬別用PS盹兢,PS出的svg不能被轉(zhuǎn)換為vector。
2辰晕,就是UI出圖需要給你一個(gè)背景SVG和一個(gè)標(biāo)志SVG蛤迎,由于是矢量圖,所以下面為了讓UI們能理解含友,全部按照1倍圖說替裆,也就是1dp == 1px。
svg的邊框大小必須為108px窘问,而圖標(biāo)的實(shí)際顯示區(qū)域?yàn)?2px辆童,也就是說自適應(yīng)圖標(biāo)周圍要預(yù)留33px的空間用來兼容Android系統(tǒng)動效
具體示意如圖
- 圖中灰色部分為預(yù)留空間。
- 深粉色范圍為圖標(biāo)實(shí)際顯示范圍惠赫,并不是背景范圍把鉴,背景范圍需要延伸到108px。
- 淺粉色范圍為標(biāo)志SVG中圖標(biāo)的安全范圍儿咱,防止被系統(tǒng)裁切
簡單來說就是UI小姐姐需要提供2個(gè)大小為108px的svg文件庭砍,并且按照上圖的要求制作對應(yīng)的圖層
★注意,UI小姐姐制作圖標(biāo)混埠,一定不要使用蒙版怠缸,因?yàn)関ector不支持svg的蒙版,vector只支持最基礎(chǔ)的路徑
實(shí)際效果就是UI小姐姐提供最左邊那種樣式的圖標(biāo)钳宪,我們寫進(jìn)項(xiàng)目以后揭北,通過不同的系統(tǒng)的不同的蒙版,最終切出我們要的圖標(biāo)吏颖。
如果我是個(gè)人開發(fā)者怎么辦搔体?
上文說的是一個(gè)正常公司,有UI工程師與你配合才能完成Android Q適配半醉,但是實(shí)際上疚俱,你可能只是個(gè)人開發(fā)者,并不會UI的制作缩多,不可能自己制作矢量圖標(biāo)计螺。更甚者,你們公司的UI工程師可能知識不足瞧壮,AI的使用不熟練登馒,造成無法與你配合。這就比較無解了咆槽,只能給UI小姐姐送一本AI從入門到精通了陈轿。
如果發(fā)生這種事,真的沒辦法適配Android Q了么,不麦射,有辦法蛾娶,Google給我們留了一個(gè)備用的PNG適配的方法。我們馬上來提到如何操作潜秋。
但是這里我想夾雜一點(diǎn)我個(gè)人的觀點(diǎn)蛔琅,這個(gè)方法在Google官網(wǎng)壓根就沒有被提及,僅僅是AndroidStudio為了開發(fā)人員做的一個(gè)備用方案峻呛,為了兼容Android各種尺寸分辨率的屏幕罗售,Google從Android 5.0開始引入vector矢量圖,這已經(jīng)過去5年了钩述,Google是肯定不推薦你是用PNG這種方式來兼容Android Q寨躁,所以根本就不會在官網(wǎng)提及如何操作。所以如果作為程序員你有條件進(jìn)行自適應(yīng)矢量圖標(biāo)適配牙勘,請一定要堅(jiān)持用矢量圖標(biāo)职恳,大家一起推動國內(nèi)乃至世界的開發(fā)標(biāo)準(zhǔn)發(fā)展。國內(nèi)太多人不按Google的要求寫程序了方面,這回Android Q一定有他們受的放钦!
那么開始,目前我們做適配一般就做到xxxhdpi恭金,也就是2k的屏幕操禀,所以我們需要準(zhǔn)備上文提到的矢量圖標(biāo)的一個(gè)至少512px的PNG圖片,因?yàn)?32px就是2k屏幕要用到的圖標(biāo)大小蔚叨,512px是Google商店需要用到的最小尺寸。如果使用的圖片小于512px會造成高分辨率設(shè)備圖標(biāo)變虛辙培。
在任意圖標(biāo)文件夾右鍵蔑水,按照圖中路徑,點(diǎn)擊Image Asset
你會看到默認(rèn)就是Launcher Icons(Adaptive and legacy)
這個(gè)就是導(dǎo)入PNG文件來適配的扬蕊,這里分
Foreground Layer:標(biāo)志層
Background Layer:背景層
Legacy:舊版圖標(biāo)
將準(zhǔn)備好的512px的標(biāo)志層搀别,跟背景層選到對應(yīng)的層中,legacy會自定給你生成老版本各分辨率需要的圖片大小
這樣就生成了一大堆png文件尾抑,這樣PNG來適配Android Q就完成了歇父。
你的圖標(biāo)也可以動起來了
已知問題:無論你使用矢量圖標(biāo),還是PNG圖標(biāo)適配再愈,在Flyme7上均無法正確顯示榜苫,這是Flyme自己的問題,這個(gè)系統(tǒng)不遵照Google在Android 8.0發(fā)布的圖標(biāo)開發(fā)規(guī)范翎冲,除非他們自己改正垂睬,否則無解
后記
其實(shí)最開始是不準(zhǔn)備寫第二種PNG適配的方法的,因?yàn)楦杏X肯定有很多人為了湊合而使用第二種方法,不過作為程序員驹饺,你把一個(gè)5kb的vector就解決的適配钳枕,變成了每個(gè)分辨率文件夾里都有一個(gè)png文件,這至少是vector的5倍大赏壹。所以我們最好還是采取第一種矢量圖標(biāo)的方式來適配鱼炒,這樣才是正路,也避免以后設(shè)備參數(shù)的改變造成不必要的影響蝌借。
本文寫到這里也就結(jié)束了昔瞧,隨后我會更新更多關(guān)于Android Q的新特性和適配方法,敬請期待9峭S脖!
- Github: https://github.com/liyuhaolol
- 博客: http://blog.csdn.net/ccffvii
- 簡書: http://www.reibang.com/u/a305fae6394f
- 郵箱: liyuhaoid@sina.com
如果看不懂或者我寫的有問題的地方擎鸠,歡迎在評論中指出缀磕,大家一切探究討論!
svg的演示文件百度網(wǎng)盤劣光,請不要違法使用袜蚕,不要給雙方找麻煩,實(shí)際項(xiàng)目的圖標(biāo)绢涡。
- 網(wǎng)盤: 提取碼:8qd2