2012-03-02 4 views
0

У меня проблемы с приложением на Samsung S I9000. Кнопки в моем приложении намного больше, чем они должны быть. Кроме того, система выбирает res/values-small/как источник значений. В целом, это действует так, как будто у устройства очень маленький экран, хотя это, предположительно, 800x480 (я работаю в ландшафтном режиме). Фактически, я могу улучшить ситуацию, изменив значения в res/values-small/styles.xml на еще меньшие размеры шрифта, чем я уже использовал.Проблемы с размером и плотностью экрана Samsung S I9000

метрики дисплея следующим образом:

density = 2.0 
scaledDensity = 2.0 
densityDpi = 320 
widthPixels = 800 
heightPixels = 480 
xdpi = 320.0 
ydpi = 320.0 

Может кто-нибудь объяснить, почему устройство масштабирования мои графики так много, и действовать, как будто у меня есть очень маленький дисплей? Что еще более важно, как я могу это исправить?

Я попытался настроить мой манифест, чтобы установить minSdk и targetSdk в недавний выпуск, но это не повлияло. Удаление значений-small/заставило приложение использовать значения по умолчанию/вместо этого, что только ухудшило ситуацию.

+0

Я не думаю, что есть папка со значениями-маленькими. вы можете использовать значения-large и values-xlarge. Какая у вас версия ОС Android? –

+0

Существует небольшое значение. См. Http://www.efalk.org/SamsungS.tar.gz для исходного кода, который включает его, и демонстрирует его на любом устройстве с небольшим экраном, и, по-видимому, Samsung S. Я считаю, что это поддерживается с 1.6. См. Http://developer.android.com/guide/practices/screens_support.html –

+0

Итог: я убежден, что это ошибка в Samsung S - он сообщает о плотности пикселей как 320, когда это действительно 233. Это вызывает всю графику для увеличения в 2 раза, когда это действительно должно было быть 1,5 раза. Это также приводит к тому, что размер экрана вычисляется как 1,5 "x 2,5", который действительно был бы маленьким экраном, если бы это было правдой. Никто не заметил, что значки, меню и т. Д. На Samsung S действительно огромны? Они огромны в эмуляторе. –

ответ

2

Всегда используйте «SP» для шрифта и отдыха, как «дп»

места вашего изображения в соответствующей папке, как показано ниже

Предположит, использует 36x36 изображения для MDPI вам нужно использовать

drawable-mdpi - 36 x 36 
drawable-hdpi - 48 x 48 
drawable-xhdpi 72 x 72 

3: 4: 6: 8 соотношение

Есть несколько ситуаций, когда вы не хотите, чтобы Android предварительно масштабировал ресурс. Самый простой способ избежать предварительного масштабирования - поместить ресурс в каталог ресурсов с помощью спецификатора конфигурации nodpi.

Например:

res/drawable-nodpi/icon.png 

, например

вы используете размер шрифта, как 14sp означает, что он автоматически изменится на 320 DPI, как

14×320÷160 =28 

так теперь ваш шрифт размер 28dp для телефона разрешения xhdpi.

+0

Спасибо. Я использую sp для шрифтов; Я предполагаю, что он масштабируется либо плотностью, либо scaledDensity? Ничто из этого не объясняет, почему система берет ресурсы из res/values-small. Или это потому, что устройство имеет необычно маленький экран, несмотря на высокую плотность пикселей? –

+0

Перемещение моих чертежей в drawables-nodpi. Благодарю. –

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