Проблема с размером изображения (плотность экрана)

Я начинаю новый проект Android. Все необходимые графические материалы я получил в .psd файлах. Материалы рассчитаны на разрешение 1080 x 1920, так как это тоже приложение для iOS. Я как раз собирался изменить размер изображений для различной плотности экрана, когда столкнулся со странной проблемой.

После того, как я нарезал несколько изображений, я решил запустить несколько тестов в эмуляторе. Тестовое изображение, которое я использовал, является одним из изображений меню. Его размер составляет 240 x 240 пикселей и, как и следовало ожидать, занимает около четверти ширины экрана в файле .psd. Однако, как только я поместил это изображение в свое приложение и запустил его на эмуляторе 1080 x 1920, изображение заняло почти 2/3 ширины экрана. Как это возможно?

РЕДАКТИРОВАТЬ: Мой макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:id="@+id/imgMenu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/btn_tourist_info_selector"
    android:adjustViewBounds="true"/>
</LinearLayout>

Я использую изображение: http://oi61.tinypic.com/2zgwwfp.jpg


person Tomislav Turcic    schedule 30.07.2015    source источник


Ответы (2)


Я поместил указанное изображение в свое приложение и запустил его.

Что это означает? Не могли бы вы поделиться кодом, куда вы поместили свое изображение?

Без кодов ответить непросто, но похоже, что высота и ширина ImageView устанавливаются не как обертка содержимого, а как соответствие родителю или заполнению родителя. Так ли это?

person Simone Chelo    schedule 30.07.2015
comment
Исходный пост отредактирован. ImageView имеет значение wrap_content. Также добавил изображение, которое я использую. - person Tomislav Turcic; 30.07.2015
comment
Спасибо. Это изображение находится в правильном каталоге? Я имею в виду, если эмулятор имеет плотность hdpi, находится ли это изображение в каталоге drawable-hdpi? - person Simone Chelo; 30.07.2015
comment
Он находится в папке для рисования по умолчанию. Графический предварительный просмотр в Android Studio дает те же результаты - просмотр изображения занимает ~ 2/3 ширины экрана для устройства 1080x1920 xxhdpi. - person Tomislav Turcic; 30.07.2015
comment
попробуйте переместить его в правильный каталог (большинство устройств имеют hdpi), это может помочь. - person Simone Chelo; 30.07.2015
comment
Хорошо, пока я скопировал одно и то же изображение во все доступные папки и теперь получаю ожидаемые результаты. Должен ли я рассматривать это изображение как разрешение xxhdpi и уменьшать его для xhdpi, hdpi и mdpi в соответствии с документами Android? - person Tomislav Turcic; 30.07.2015

Ресурсы изображений Android сильно отличаются от ресурсов iOS.

Чтобы понять, как изменять размеры изображений для Android, вы должны понимать «независимый от плотности пиксель» или, короче, DP. Вы можете прочитать больше о

http://developer.android.com/guide/practices/screens_support.html

Изображение размером 240 x 240 пикселей будет иметь различный размер на реальном телефоне в зависимости от того, сколько DPI у этого телефона (вы также можете увидеть всю диаграмму по ссылке выше).

Набор из шести обобщенных плотностей:

ldpi (low) ~120dpi  
mdpi (medium) ~160dpi  
hdpi (high) ~240dpi  
xhdpi (extra-high) ~320dpi
xxhdpi (extra-extra-high) ~480dpi
xxxhdpi (extra-extra-extra-high) ~640dpi

В наши дни в основном телефоны поддерживают эти размеры mdpi, hdpi, xhdpi, xxhdi (у вас будут все эти папки для предоставления разных размеров для каждого изображения).

Допустим, вы поместили изображение размером 240 x 240 пикселей в папку mdpi. Теперь вам нужно поместить такое же изображение в папки hdpi, xhdi, xxhdi. Только тогда он будет выглядеть одинакового размера на всех устройствах. В противном случае он будет выглядеть все меньше и меньше, когда вы смотрите на телефоны с большим экраном.

Вы можете рассчитать размеры по этой формуле px = dp * (dpi / 160)

или просто рассчитайте с помощью любого онлайн-калькулятора, например http://labs.rampinteractive.co.uk/android_dp_px_calculator/

person Sharj    schedule 30.07.2015