Масштабирование ImageButtons для нескольких разрешений - PullRequest
1 голос
/ 04 октября 2010

У меня есть кнопка, которую я хочу занять на 75% экрана:

Panic

На экране с разрешением 480x800 это будет ширина 360 пикселей.
НаЭкран с разрешением 280x320, шириной 210 ​​пикселей.

Как мне указать это в XML-файле макета?

Как я понимаю, существует единица измерения DIP, но это также работает для масштабирования изображений на экране для разрешения?Какие измерения DIP я бы использовал для этого, и нужно ли сохранять изображения при 160 dpi.

Ответы [ 2 ]

2 голосов
/ 05 октября 2010

Вы должны на самом деле стараться не усложнять это, думая обо всех размерах экрана, плотности и тому подобном.

Вы говорите, что хотите, чтобы ваша кнопка занимала 75% экрана.

Хорошо, поместите его в LinearLayout примерно так:

<LinearLayout android:layout_width="match_parent"
        android:layout_height="match_parent
        android:orientation="horizontal">

    <My75PercentButton
            android:layout_width="0px"
            android:layout_height="match_parent"
            android:layout_weight="75">

    <View
            android:layout_width="0px"
            android:layout_height="match_parent"
            android:layout_weight="25">

</LinearLayout>

Это позволяет двум представлениям иметь ширину 0, но после этого распределяет 75% доступного для них пространства в первом и 25% во втором.

Если вы хотите, чтобы ваша кнопка растягивалась, чтобы заполнить это пространство (вместо того, чтобы просто оставлять пустые отступы вокруг нее), сделайте 9-патч.

Вам также понадобится поддерживать различные плотности экрана, поэтому предоставьте разный размер изображения для вашей кнопки в drawable-ldpi, drawable-mdpi и drawable-hdpi.

Но я действительно предупреждаю: попытка втолкнуть себя в мир, в котором вы разрабатываете свою графику для экранов различных размеров, в конечном итоге окажется в огромном мире боли. Вы действительно не хотите этого делать. Устройства Android уже имеют много размеров экрана; это только увеличится очень в будущем. Если вы воспользуетесь менеджерами компоновки и другими подобными средствами для настройки фактического размера экрана, ваше приложение будет хорошо работать на всех этих экранах практически без каких-либо усилий с вашей стороны. Если вы попытаетесь спроектировать вашу графику для экрана определенного размера, вы будете делать это снова и снова, пока не выдержите.

1 голос
/ 04 октября 2010

Вы можете создавать различные макеты для разных плотностей экрана, определяя макеты в соответствующих подкаталогах, которые называются layout-small для экранов небольшой плотности, layout-normal для всех плотностей и layout-large для экранов высокой плотности.

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

Вы можете найти подробную статью здесь .

РЕДАКТИРОВАТЬ: Я на самом деле их перепутал ... извините за путаницу.Исправил мой ответ выше.

@ HardQuestion: Вот поддерживаемые мультимедийные форматы для Android.

...