天天看點

Android螢幕适配 dp px 之間轉換

以下内容是我的個人總結,如有不正确的地方,請留言讨論,批評指正,我們共同探讨,一起進步。萬分感謝!

ppi:可以用下面公式求得

對于手機螢幕來說,螢幕尺寸是固定的,分辨率一般是不可以調節的。是以ppi是一個定值。此值越高顯示越細膩。

densityDpi:即是android系統為不同螢幕尺寸,分辨率提供統一機關(dp)的一個可變參數。

densityDpi的改變不會改變手機的分辨率,但它的改變會影響顯示效果。有的android軟體說是改變分辨率其實是改變densityDpi大小。

谷歌定義 densityDpi=160為基準。density=densityDpi/标準dpi(160)

dp(裝置無關像素)與px(像素)之間的轉換則由density值決定。

dp=px/density,px=dp*density

同一螢幕分辨率不變的情況下,實際圖像顯示的實體尺寸與像素多少有關。以G14舉例,4.3英寸,540*960

dpi=160

540*960dp 540*960px 正好填充螢幕

dpi=240 540*960dp 810*1440px

超出螢幕顯示範圍的部分則無法顯示了

dpi=120 540*960dp 405*720px 在螢幕的一角顯示

下面說如何用Android累來擷取螢幕分辨率呢?

在Activity 的OnCreate()中這樣寫:

  DisplayMetrics metric = new DisplayMetrics();

  getWindowManager().getDefaultDisplay().getMetrics(metric);

  int width = metric.widthPixels;

  int hight = metric.heightPixels;

  float density = metric.density;

  float densityDpi = metric.densityDpi;

現在來舉例說明    MOTO MT917 螢幕分辨率是1080*720則

width=720px hight=1080px density=2.0  densityDpi=320.0

按照上面說的公式計算1px = 2dp  1dp = 1/2px

好了這下大家應該明白了他們之間的轉換了吧!

繼續閱讀