Как я могу иметь Android "масштабировать" мое приложение?

Я создаю свое первое приложение для Android, и это сводит меня с ума.

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

Например: у меня есть несколько кнопок на моих страницах, и кнопки должны быть в определенной точке на изображении, которое я имею в качестве фона. Эти кнопки должны оставаться в одной и той же точке изображения, даже если размер экрана устройства был увеличен или разрешение экрана было увеличено.

Просто немного информации о моем приложении:

-все мои кнопки расположены в DIP (одно из решений, которое я пытался сделать, сделал это) -мные файлы макета XML находятся в папке с названием "макет"

Любая помощь будет оценена

Вот код для одного из моих макетов:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/mybackground"

>
<Button  
android:layout_width="115dip" 
android:layout_marginTop="450dip" 
android:layout_marginLeft="105dip" 
android:layout_height="50dip" 
android:id="@+id/button01"

>
</Button>

<Button  
android:layout_width="70dip" 
android:layout_marginTop="460dip" 
android:layout_marginLeft="250dip" 
android:layout_height="40dip" 
android:id="@+id/button03"

>
</Button>




</RelativeLayout>

Код выше является одним из моих макетов. Этот макет имеет две кнопки, которые должны находиться в одном и том же месте относительно фона "mybackground". К этим кнопкам применяется прозрачный атрибут, так что элементы на изображении являются "кнопками". Это работает на моем Droid2, но тогда, когда применяется к экрану больше или плотнее, кнопки больше не находятся в правильных положениях по отношению к изображению.

3 ответа

Что Адам говорит в своем комментарии к вопросу Rollin_s: "Зачем вам нужно, чтобы кнопки были над определенным местом на заднем плане? Если это пятно является другим изображением (например), которое необходимо выровнять, сделайте это изображение собственным ImageView и выровняйте кнопку с параметрами RelativeLayout. Может быть, если вы включите скриншот, кто-то может дать вам лучший пример того, что делать. Кроме того, GridView и TableLayout являются хорошими объектами для выравнивания компонентов макета, чтобы соответствовать разным размерам экрана.

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

  • Определите, где ваши кнопки расположены относительно вашего обычного / немасштабированного изображения, запишите верхнее, левое, нижнее и правое значения в какой-либо структуре данных по вашему выбору
  • Поместите ваше изображение в ImageView, настроенное на масштабирование с использованием FitXY
  • вычислите масштаб, который Android применил к вашему изображению, изучив изображения и изображения ImageView s и сравнив их с тем, чем были ваши изображения и изображения
  • сделать некоторую математику, чтобы масштабировать верхнее, левое, нижнее и правое значения от ваших исходных значений
  • Затем в обработчике onClick для вашего изображения вы сможете проверить, находятся ли координаты касания в какой-либо из масштабированных границ, которые вы сейчас получили.

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

Конечно, более правильным решением было бы получить реальные отдельные графические элементы, используемые для создания приложения для iPhone, и заново внедрить пользовательский интерфейс в Android.

Удачи.

Другие вопросы по тегам