【Android】——屏幕適配下各個老司機

 各位老司機可能都明白一個道理:眼見不一定爲實,耳聽也非爲虛。所以,在Android開發過程中肯定會遇到各種屏幕大小不統一測試情況下的字體大小不一,控件像喝醉了酒的醉漢一樣東倒西歪的,那麼,屏幕適配到底有多難,下面這趟車開往幼兒園,請各位老司機抓好扶手,隨時準備動手。

 首先我們要明白幾個單位:dpi、dp、px,閒話不多扯,我只說重要的概念問題。

dpi:圖像每英寸面積內的像素點數;

dp:像素密度

px:像素

關於他們之間的轉換有這樣一個公式:

設屏幕尺寸橫爲x,豎爲y,屏幕尺寸爲m那麼

dpi = √x^2 + y^2      /  m,

dp = dpi / 160   單位  px。

先上兩張圖給大家一個開胃菜(圖片有點大了,不好意思,佔了很大的空間):

現在,有一個問題要問各位:

不過要再次強調,眼睛只是給你反饋所見信息的一個窗口。

問:有兩臺設備A和B,A是720px*1280px,4.65寸的,B是1080px*1920px,4.65寸的,現有一個200dp的控件擺放到以上兩臺設備上,請問哪一個比較大。那如果擺放的是200px的控件呢?

現在我們來計算一下,兩臺設備的dp各是多少;

A:dp = 1.973931155988;

B:dp = 2.960896733982;

那麼200dp的控件在各個屏幕上佔多少px呢;

A:≈394 px

B:≈592 px

那這個200dp的控件佔用了屏幕像素的比例是多少呢(以橫向爲計算目標)?

A: 592 / 1080 ≈ 0.54

B :  394 / 720 ≈ 0.54 

那麼,比例都相同,是不是在不同分辨率,相等屏幕尺寸,相等dp下的控件看起來是不是一樣大呢?

那麼,若是放的是200px的控件呢?

答案很顯然,不同分辨率,相等尺寸屏幕,相等px下的控件所佔的比例偏小,所以肉眼看起來在1080px*1920px下的控件比較小。

那麼接下來,在相同像素條件下,不同屏幕尺寸,相同大小的控件又是怎樣的效果呢?

下面我就不一個一個的計算了,直接上答案吧:

 

兩臺設備A,B,A是720px*1280px,4.65寸;B是720px*1280px,5寸。

200dp的控件與200px的控件;

答案就是如此簡單,望各位細細斟酌。

下面纔是正文:屏幕適配

1.各個dpi下的資源文件都做一套,但是這個有個缺點,那就是apk就像吃了豬飼料一樣胖的很快。

2.動態設置控件大小,在Android繪製界面之前通過獲取屏幕像素和尺寸計算好dp與px的關係,再使用各種layoutparams對控件進行設置,但是這個是一個偉大的工程,每個佈局中的每一個控件都要去進行計算。

3.使用比例。在html網頁設計的時候會有width:20%。這使得不管網頁界面怎麼縮放,這個控件只佔整個界面的寬的20%,Android中也有啊,那就是LinearLayout下的weight權重屬性,但是遇到類似於ListView,RecyclerView這種不要臉的控件你也沒轍啊。

最後推薦大家使用一個大三方,首先聲明,我不是打廣告的:鴻洋博客(Android屏幕適配方案)

 

一天不寫代碼,public都敲不順手,三天不學習,活該做個單身狗。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章