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

Я создаю свое первое приложение для 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 ]

2 голосов
/ 08 апреля 2011

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

0 голосов
/ 09 апреля 2011

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

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

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

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

Удачи.

0 голосов
/ 08 апреля 2011
...