2017-10-09 80 views
0

BLUF:Android平板電腦可能會對其屏幕密度感到困惑嗎?一個un如何混淆呢?Android平板電腦對其屏幕密度感到困惑

背景:我有兩個「相同」的Android平板電腦(相同的製造商,相同的型號,相同的物理屏幕尺寸,相同的分辨率)。

平板電腦自我報告密度爲160dpi。平板電腦B報告213dpi。如果我使用實際像素進行佈局,則兩個輸出看起來都是相同的。這告訴我他們的密度實際上是一樣的。

如果我使用DP進行佈局,則平板B呈現所有屏幕元素太大。我相信這是因爲它「認爲」它具有更高的屏幕密度,因此必須縮放屏幕元素以補償。但我不認爲它確實如此。我認爲他們是一樣的。

因此......我如何更改Android平板電腦用於確定其屏幕密度的值?錯誤的價值是如何放在那裏的?

這兩個屏幕的物理尺寸和分辨率是不同的嗎? (密度=分辨率/大小,是嗎?)

具體細節: 的Android 5.1.1(64位) CPU:四核ARMv8處理器(VFPv4,氖) 渲染:馬裏-400 MP2 GPU版本: OpenGL ES 2.0 內核:Linux v3.10.65

謝謝!

回答

0

這個功能應該給你真正的屏幕像素密度,只是對它進行調試

public static String getDeviceResolution(Context context) { 
    int density = context.getResources().getDisplayMetrics().densityDpi; 
    switch (density) { 
     case DisplayMetrics.DENSITY_MEDIUM: 
      return "MDPI"; 
     case DisplayMetrics.DENSITY_HIGH: 
      return "HDPI"; 
     case DisplayMetrics.DENSITY_LOW: 
      return "LDPI"; 
     case DisplayMetrics.DENSITY_XHIGH: 
      return "XHDPI"; 
     case DisplayMetrics.DENSITY_TV: 
      return "TV"; 
     case DisplayMetrics.DENSITY_XXHIGH: 
      return "XXHDPI"; 
     case DisplayMetrics.DENSITY_XXXHIGH: 
      return "XXXHDPI"; 
     default: 
      return "Unknown"; 
    } 
} 
+0

這給了我與AnTuTu報告相同的結果(160dpi和213dpi)。 (我確信AnTuTu使用類似的調用來獲得它的值。)問題仍然存在:如果兩臺顯示器具有相同的物理尺寸和相同的分辨率,它們甚至可以具有不同的密度? – xpofer

0

更多的研究表明,該Android使用呈現顯示畫面的密度在ROM通過在構建時製造商設定。它不是由Android以任何方式計算的,它是而不是必須通過簡單地將分辨率除以屏幕大小而獲得的值。

因此,就我的問題而言,即使我的兩臺平板電腦的物理屏幕密度實際上相同(使用實際像素構建的佈局在兩個平板電腦上顯示的尺寸都相同),但製造商已選擇將一臺平板電腦以更高的屏幕密度。因此,Android將升級所有dp指定的佈局以補償「更高」的密度。

爲什麼製造商會這樣做,我還是不知道。但爲什麼我的兩種片劑顯示不同的密度至少得到了回答。