2010-10-04 2 views
1

У меня есть кнопка, которую я хочу, чтобы занять 75% экрана:Скейлинговые ImageButtons для различных разрешений

Panic

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

Как мне это определить в моем XML-файле макета?

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

+0

Поддерживает ли поддержка Android SVG? – HardQuestions

ответ

1

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

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

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

EDIT: Я на самом деле их перепутал ... извините за путаницу. Исправил мой ответ выше.

@HardQuestion: здесь поддерживаются media formats для Android.

+0

Не будет '/ res/layout-normal/layout.xml' соответствует ширине 3 пикселя? (240,320,480) –

+0

Я думаю, что, наконец, понял это, я создаю кнопку для экрана размером 240 пикселей, и он масштабирует его для меня. Итак, ширина 210 dip –

2

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

Вы говорите, что хотите, чтобы ваша кнопка занимала 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-устройств; это только в будущем значительно возрастет. Если вы воспользуетесь менеджерами компоновки и другими такими средствами для настройки фактического размера экрана, ваше приложение будет хорошо работать на всех этих экранах, при этом с вашей стороны практически не будет работать. Если вы попытаетесь спроектировать свою графику для определенных размеров экрана, вы будете делать это снова и снова, пока вы не сможете этого выдержать.

+0

Как вы разделите круг на 9 частей, которые растягиваются? –

+0

Вы не можете сделать это с помощью 9 патча. Либо измените свое искусство, чтобы иметь возможность масштабировать, используя 9-патч, либо переключитесь на рисование графики с помощью графических API. Дело в том, что вы пытаетесь продвигаться вперед с помощью * специфического * дизайна, подобного этому, который сделает вашу жизнь действительно, очень тяжело, возможно, не самый лучший выбор. – hackbod

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