Как заставить ImageButton в Android автоматически масштабироваться в зависимости от плотности экрана? - PullRequest
3 голосов
/ 12 января 2010

У меня есть изображение, помещенное на ImageButton, которое выглядит хорошо на экране с разрешением mdpi ( medium-dpi ). Однако, когда устройство имеет экран с разрешением hdpi ( high-dpi ), изображение по-прежнему с точностью до пикселя, которое на экране устройства выглядит маленьким.

Как сделать так, чтобы изображение (и, следовательно, ImageButton) масштабировалось на основе пикселей, не зависящих от плотности ( dp или dip ) вместо пикселей?

Ответы [ 4 ]

8 голосов
/ 08 июня 2012
android:scaleType="fitXY"

Другие варианты включают:

fitStart
fitCenter
fitEnd
center
cenerCrop
centerInside
matrix

Имейте в виду, я ленивый и использую действительно большие изображения PNG в сырой папке.

4 голосов
/ 13 января 2010

Как упоминал Понкин, 9-патчи - ваш лучший выбор. В сочетании с квалификаторами каталогов ресурсов (drawable-hdpi, drawable-mdpi и т. Д.) Вы можете создавать активы, которые выглядят хорошо при любой плотности и размере.

Пример 9-патчей и квалификаторов каталогов ресурсов можно найти в образце Multiple Resolutions Android SDK. Полупрозрачный черный фон с закругленными углами реализован в виде 9-патча с различными PNG для ldpi, mdpi и hdpi.

4 голосов
/ 12 января 2010

ИМХО, вы должны выглядеть очень близко к NinePatchDrawable , На самом деле есть инструмент , который поможет вам изменить размер иконки (картинки / иконки / что угодно ...) в зависимости от размера контейнера. Это действительно просто и отлично работает для моих нужд. Также посмотрите на эту статью (часть "NinePatchDrawable"), там объясняется механизм NinePatchDrawable.

Графический объект NinePatchDrawable представляет собой растягиваемое растровое изображение, которое Android автоматически изменит размер на разместить содержимое просмотра в который вы поместили как фон. Пример использования NinePatch - это фоны, используемые стандартные кнопки Android - кнопки должен растягиваться для размещения строк различной длины. NinePatch отрисовка это стандартное изображение PNG, которое включает в себя дополнительная граница шириной в 1 пиксель. Это должно сохраняться с расширением .9.png, и сохраняется в res / drawable / каталог вашего проекта.

3 голосов
/ 12 января 2010

Может быть, вы просто должны указать размер кнопки в независимых от устройства пикселях?

android:layout_width="300dip" 
android:layout_height="50dip"
...