2013-04-05 36 views
2

因此,我使用了800x480顯示屏的HTC智能手機。我一直認爲這是HDPI設備。我確保使用以下代碼:顯示密度和資源使用情況(ldpi/mdpi/hdpi/xhdpi)

Display display = activity.getWindowManager().getDefaultDisplay(); 
DisplayMetrics displayMetrics = new DisplayMetrics(); 
display.getMetrics(displayMetrics); 
displayDensity = displayMetrics.densityDpi; 

它說我的設備是240dpi。但通過實驗我發現android只會將我的設備威脅爲MDPI。我相信這個。我測試了與另一個800x480(ZTE)相同的結果,結果是一樣的 - 它在displayDensity中顯示爲240,但是Android將其作爲MDPI設備威脅它......但爲什麼會如此呢?在android.devepoler上他們說240dpi是HDPI。我完全困惑。爲什麼heck 240被認爲是MDPI?

我怎麼會發現Android的對待我的HTC爲MDPI設備: 總之我做了什麼,以確保 - 我把一個大的圖像繪製,華電國際(AOS猜測會使用它)和較小的一方可繪製-mdpi並且運行了一個應用程序來查看它會使用哪個。它總是使用drawable-mdpi而不是drawable-hdpi。要知道如何在我的設備上顯示圖像,我運行了以前將圖像放置到項目的可繪製文件夾的應用程序。然而,就像我上面提到的那樣,我猜測我的800x480 HTC是HDPI,由於基於displayDensity的代碼而不是配置。配置說我的設備是Configuration.SCREENLAYOUT_SIZE_NORMAL,看起來這就是爲什麼AOS把我的設備當作MDPI的唯一原因。因此,與240dpi的DisplayDensity(必須是HDPI而不是MDPI)結合使用會非常令人沮喪。所以現在的問題是爲什麼顯示密度爲240dpi配置將設備設置爲MDPI類型?這是什麼原因?我在想,檢測設備類型的唯一方法就是顯示密度。如果它是240dpi,它必須是HDPI設備而不是MDPI。

+0

你是如何確定它被視爲mdpi設備的? – Shade 2013-04-05 15:15:59

+0

「但通過實驗我發現android僅將我的設備威脅爲MDPI。」 - 請編輯您的問題,以完全和準確地解釋**你如何測試這個。更重要的是,當你檢查'配置''密度'值 - 這是用來確定正在加載的資源 - 你學到了什麼? – CommonsWare 2013-04-05 15:16:52

回答

0

您可能會嘗試閱讀本頁:http://developer.android.com/guide/topics/resources/providing-resources.html,它顯示了關於屏幕密度和其他需要組織資源文件夾時的完整說明。

關於被視爲MDPI的設備,它可能像Nexus 7一樣,我們確信它是MDPI,但它使用的是來自HDPI的圖像以及來自MDPI/sw600dp的一些值(您會發現更好的解釋鏈接在那裏),因爲它的密度實際上是TVDPI,因此它是HDPI和MDPI之間的「中等」密度。嘗試在GooglePlay上下載名爲ScreenInfo的應用。它顯示關於設備屏幕的各種信息,並可能幫助您確定您的HTC。

希望它有幫助。

+0

我沒看過這篇文章,那是一個問題。並感謝您的提示,我會嘗試該應用程序 – Stan 2013-04-09 18:33:05

+0

任何時候,請,讓我們知道你是否解決了這個問題。 – 2013-04-10 11:24:03

+0

ScreenInfo說我的HTC的「框架資源選擇」是「Normal/HDPI」。我仍然困惑它是HDPI還是MDPI?因爲它的工作方式與您所描述的一樣,可以使用來自HDPI的圖像,但可以使用MDPI的佈局。對於我來說,這看起來像一個「開發人員可以免費使用」的bug資源,例如「你的Android應用程序有任何問題嗎?來吧,拿到這個!」... – Stan 2013-04-25 15:36:00

0

對不起,所以,首先,你必須決定你想要的公衆。你必須記住,那裏有許多設備,幾乎不可能覆蓋所有設備。我建議你從被認爲正常的設備開始(屏幕正常和MDPI密度),因爲那是基準。然後,基於第一個擔心別人。理解資源文件夾的區別只在必要時完成。在大多數情況下,用於基線的資源對每個人都適用。

希望它有幫助。

相關問題