2013-04-05 3 views
2

Итак, я получил смартфон HTC с дисплеем 800x480. Я всегда думал, что это устройство HDPI. И я был обеспечен с использованием следующего кода:плотность экрана и использование ресурсов (ldpi/mdpi/hdpi/xhdpi)

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

Сообщается, что мое устройство 240dpi. Но экспериментально я обнаружил, что андроид угрожает моему устройству только как MDPI. Я уверен, что это. Я тестировал то же самое с другим 800x480 (ZTE), и результат был таким же - он показывает 240 в displayDensity, но андроид угрожает ему как устройство MDPI ... Но почему это так? На android.devepoler они сказали, что 240 dpi - это HDPI. Я совершенно смущен. Почему heck 240 обрабатывается как MDPI?

Как я обнаружил, что андроид лечит мой HTC в качестве MDPI устройства: Короче, что я сделал, чтобы обеспечить - я положил большое изображение на вытяжку-ИПЧР (угадывание AOS собирается использовать его), а меньший по вытяжке -mdpi, а затем запустить приложение, чтобы посмотреть, что он будет использовать. И он всегда использовал изображение из drawable-mdpi вместо drawable-hdpi. Чтобы узнать, как выглядит изображение на моем устройстве, я запустил приложение, ранее помещающее изображения в выпадающую папку проекта.
Однако, как я упоминал выше, я предполагал, что мой 800x480 HTC является HDPI из-за кода, основанного на displayDensity, но не в конфигурации. Конфигурация говорит, что мое устройство Configuration.SCREENLAYOUT_SIZE_NORMAL и похоже на то, что AOS рассматривает мое устройство только как MDPI. Поэтому в сочетании с DisplayDensity 240dpi (который должен быть HDPI вместо MDPI) это действительно расстраивает. Итак, теперь возникает вопрос, почему с плотностью дисплея 240dpi Конфигурация устанавливает устройство в тип MDPI? В чем причина этого? Я думал, что единственным и единственным способом определения типа устройства является его плотность отображения. И если это 240dpi, это должно быть устройство HDPI вместо MDPI.

+0

Как вы определили, что он рассматривается как устройство mdpi? – Shade

+0

«Но экспериментально я обнаружил, что андроиды угрожают моему устройству только как MDPI». - пожалуйста, отредактируйте свой вопрос, чтобы объяснить ** полностью и точно **, как вы протестировали это. Что еще более важно, когда вы проверили значение «Конфигурация» 'плотность' - то, что используется для определения загружаемых ресурсов - что вы узнали? – CommonsWare

ответ

0

Вы можете попробовать прочитать эту страницу: http://developer.android.com/guide/topics/resources/providing-resources.html, он показывает полное объяснение плотности экрана и других, когда вы хотите организовать свою папку ресурсов.

Об устройстве, которое рассматривается как MDPI, оно может быть как Nexus 7, мы были уверены, что это был MDPI, но он использовал изображения из HDPI, а также некоторые значения из MDPI/sw600dp (вещи, которые вы найдете лучше объясненными при этом выше), потому что его плотность, фактически, была TVDPI, и поэтому это «средняя» плотность между HDPI и MDPI. Попробуйте загрузить приложение под названием ScreenInfo на GooglePlay. Он показывает различную информацию о экране устройства и может помочь вам убедиться в вашем HTC.

Надеюсь, это поможет.

+0

Я прочитал статью, и это проблема. И спасибо за подсказку, я попробую это приложение – Stan

+0

В любое время, и, пожалуйста, сообщите нам, разрешите ли вы это. –

+0

ScreenInfo говорит, что «Рамочный ресурс выбора» является «Нормальным/HDPI» для моего HTC. Я все еще смущен, это HDPI или MDPI?Потому что он работает так же, как вы описали, что он может использовать изображения из HDPI, но макеты из MDPI. Что касается меня, это выглядит как ресурс ошибок, «бесплатный для использования разработчиками», например «У вас есть какие-либо проблемы с вашим Android-приложением? Приходите и получите это!» ... – Stan

0

Извините за задержку, поэтому, прежде всего, вам нужно решить, какую публикацию вы хотите. Вы должны иметь в виду, что вокруг есть множество устройств, и их почти невозможно охватить. Я бы посоветовал вам начать с устройств, которые считаются нормальными (нормальный экран и плотность MDPI), потому что это базовая линия. А потом, беспокоиться о других, основываясь на этом первом. Поймите, что дифференциация по папкам ресурсов выполняется только в случае необходимости. В большинстве случаев ресурсы, используемые для базового уровня, хорошо подходят для всех.

Надеюсь, это поможет.

Смежные вопросы