APP的優(yōu)化是任重而道遠(yuǎn)的過(guò)程,必須在意每一個(gè)環(huán)節(jié),否者當(dāng)你想要優(yōu)化的時(shí)候,發(fā)現(xiàn)到處都是坑,已經(jīng)不知道填補(bǔ)哪里了,所以我們必須一點(diǎn)一滴的做起。
屏幕適配(適配不同屏幕)
?Android 設(shè)備多種多樣,而且它們有著不同的屏幕尺寸和像素密度。 盡管系統(tǒng)可通過(guò)基本的縮放和調(diào)整大小功能使界面適應(yīng)不同屏幕,但我們應(yīng)做出進(jìn)一步優(yōu)化,以確保界面能夠在各類屏幕上美觀地呈現(xiàn)。
屏幕尺寸
屏幕尺寸指屏幕的對(duì)角線的長(zhǎng)度,單位是英寸,1英寸=2.54厘米。(常見(jiàn)的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等)
屏幕分辨率
屏幕分辨率是指在橫縱向上的像素點(diǎn)數(shù),單位是px,1px=1個(gè)像素點(diǎn)。一般以縱向像素*橫向像素,如1960*1080。表示寬度方向上有1080個(gè)像素點(diǎn),在高度方向上有1920個(gè)像素點(diǎn)。
屏幕像素密度是指每英寸上的像素點(diǎn)數(shù),單位是dpi,即“dot per inch”的縮寫(xiě)。屏幕像素密度與屏幕尺寸和屏幕分辨率有關(guān),在單一變化條件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。(每英寸有160個(gè)像素,那么屏幕像素密度=160dpi)。



密度無(wú)關(guān)像素(用于布局)
dp或dip,與終端上的實(shí)際物理像素點(diǎn)無(wú)關(guān)??梢员WC在不同屏幕像素密度的設(shè)備上顯示相同的效果Android開(kāi)發(fā)時(shí)用dp而不是px單位設(shè)置圖片大小,是Android特有的單位。
dp與px的轉(zhuǎn)換:px = dp * (dpi / 160)?或dp=px/(dpi/160)例:dp=1080/(440/160)=392
獨(dú)立比例像素(用于文字大?。?/b>
sp,即scale-independent pixels,與dp類似,但是可以根據(jù)文字大小首選項(xiàng)進(jìn)行放縮,是設(shè)置字體大小的御用單位。
PS:了解尺寸的關(guān)系才能幫我們更好的選擇方案。
根據(jù)上面的描述我們可能會(huì)感到一個(gè)假象,使用dp就能完全就能夠自己適配屏幕了。其實(shí)不然。舉個(gè)栗子:
假如UI設(shè)計(jì)師是以寬度360dp來(lái)設(shè)計(jì)的,但是假如某個(gè)機(jī)器(1920*1080)5寸手機(jī),那么這個(gè)手機(jī)的dp=1080/(440/160)=392,這就與效果不同了。假如這個(gè)機(jī)器(1920*1080)5寸手機(jī)呢?dp=432。我們會(huì)發(fā)現(xiàn)手機(jī)實(shí)際計(jì)算的dp,跟設(shè)計(jì)稿的dp就不一樣了(因?yàn)槟闶前?60dp寬度設(shè)置的參數(shù)),實(shí)際顯示出來(lái)也就不一樣了。
根據(jù)這個(gè)情況,我們看看今日頭條怎么做的。
DisplayMetrics類(Api提供,它內(nèi)部包含保存屏幕的顯示的詳細(xì)信息)。在DisplayMetrics類中屬性density的值為dpi/160,可用于px與dip的互相轉(zhuǎn)換,即density = (dpi / 160)。
由于density = (dpi / 160)那么px = dp * density或density=px/dp。

創(chuàng)建可拉伸的九宮格位圖(.9圖)
九宮格位圖基本上是一種標(biāo)準(zhǔn)的 PNG 文件,但帶有額外的 1 像素邊框,指示應(yīng)拉伸哪些像素(并且?guī)в?.9.png 擴(kuò)展名,而不只是 .png )。將九宮格作為背景應(yīng)用于視圖時(shí),框架會(huì)正確拉伸圖片以適應(yīng)按鈕的尺寸。且Androidstudio中已很好的支持?jǐn)U展了程序員自己制作。

除了今日頭條的這種適配方式,
①.使用wrap_content,match_parent,weight, dp,和約束布局ConstraintLayout大致能達(dá)到效果。
②.百分比適配,第三方庫(kù)百分比布局。
③.screenMatch插件適配。
screenMatch
ScreenMatch插件
根據(jù)你的設(shè)置的ScreenMatch配置信息,生成需要適配的尺寸的文件,手機(jī)會(huì)根據(jù)屏幕相關(guān)參數(shù)自動(dòng)尋找合適的尺寸文件。原理是生成多個(gè)dimens文件,系統(tǒng)在加載資源的時(shí)候總會(huì)加載最靠近(最適合)自己的那個(gè)文件去加載,達(dá)到適應(yīng)多數(shù)屏幕的99%≈100%的效果。



