2015-11-08 6 views
4

Я знаю, что Интернет перегружен вопросами о DPI px дюймах и так далее. Но после нескольких часов работы в Интернете моя ситуация, похоже, не с кем-то еще!Тот же DPI, но другой размер дюйма

У меня есть 2 пользовательских сборки с Android-студией, которые являются mdpi. НО одно устройство 3,65 дюйма, а другое устройство - 10,1 дюйма.

Я создал папку с изображениями 2 250x125 с установленными на дюйм до 160 точек на дюйм

Если обычно я объявляю мои 2 изображений в моем XML с Dp единиц вместо пикселей ... Я бы предполагающих на обоих экранах результат должен быть тем же самым правом?

Ну, кажется, изображения сохранить оставшиеся тот же размер и не смотрите @ сколько дюймов устройство

Так, чтобы установить вещи ясно: Что я должен изменить в своих ресурсах или мой код так что мои макеты одинаковы для разных размеров дюймов?

Это мой хороший макет для моей MDPI 10.1 таблетки: enter image description here

Это мой BAD макет для моего MDPI 3.65 устройства enter image description here

Как я могу сделать так, что даже на 3,65-дюймовым экраном кнопки будут масштабироваться до тех же самых ПРОПОРЦИЙ, что и 10.1. Не в дюймах ... не пиксели ... пропорции ....

Это мой XML-файл

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="horizontal" 
    android:gravity="center"> 

    <Button 
     android:id="@+id/buttonEnglish" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/english" 
     android:layout_marginBottom="5sp" 
     android:layout_marginLeft="5sp" 
     android:layout_marginRight="2sp" 
     android:layout_marginTop="0sp" /> 
    <Button 
     android:id="@+id/buttonNederlands" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/nederlands" 
     android:layout_marginBottom="5sp" 
     android:layout_marginLeft="20sp" 
     android:layout_marginRight="5sp" 
     android:layout_marginTop="0sp" 
     /> 
</LinearLayout> 

Я отчаянный ... Thanx заранее

+0

Смотрите внимательно на свою кнопку. Они остаются такого же размера.Но из-за разного размера экрана маленькая, похожая на кнопку, заполняет большую часть экрана. На самом деле вам нужно создать два xml-макета. один для планшета и один для телефона. – Amir

+0

поэтому для любого возможного размера для телефона или планшета на рынке мне нужно создать другой XML-файл? Это maddnes xo !! – Fosa

+0

Ваше понимание того, как должен выглядеть пользовательский интерфейс в Android, неверно - для кнопок или других компонентов пользовательского интерфейса не имеет смысла масштабировать линейно с размером экрана. Проконсультируйтесь с http://developer.android.com/guide/practices/screens_support.html](http://developer.android.com/guide/practices/screens_support.html) и множеством обучающих сайтов, чтобы узнать больше об этом , – Kai

ответ

3

Там нет необходимости в разработке двух макетов xml.

Вы можете использовать Dimension для поля и заполнения в соответствии с устройством.

Вы задаете статическое значение для поля.

Используйте dimen.xml в папке значений для каждого устройства.

Следующий код в вашем макете.xml будет работать на вас.

android:layout_marginLeft="@dimen/margin_button" 

Название Значение Папка для dimen.xml:

значения-MDPI
значения-ИПЧР
значения-xhdpi
значения-xxhdpi
значения-sw600dp

создайте dimen.xml в каждой папке значений.

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

значение-MDPI

<dimen name="margin_button">20dp</dimen> 

значение-ИПЧР

<dimen name="margin_button">23dp</dimen> 

как мудрый во всех папках значений.

+0

Я не понимаю, как это может быть решение? Вы можете быть более конкретным, пожалуйста? – Fosa

3

Это может помочь объяснить проблему вы столкнулись ...

У вас есть изображение, которое 250x125 - это 250 пикселей в ширину и 125 пикселей в высоту.

Вы указали 160 dpi - это означает, что 1 дюйм = 160 пикселей.

Итак, оба экрана выполняют то, что вы просите, и отображаете 250 пикселей в 1.5625 дюймах. На большом экране он выглядит «пропорционально» правильным. На экране 3,65" кнопка занимает больше половины экрана - так же, как вы попросили его

Если вы хотите меньший экран, чтобы выглядеть большой экран, то у вас есть три варианта:

    .
  1. отрегулируйте размер изображения и предоставите 2 объекта изображения (или больше для более широкого спектра экранов). Вот почему вы можете иметь папки ресурсов для mdpi, hdpi, xhdpi и т. Д. Вы настраиваете пиксели на изображении для размещения размер экрана.

  2. Вы используете «взвешенный» LinearLayout, который регулирует размер пространства, предоставляемого на основе на доступном экране. Для этого типа макета вам не стоит беспокоиться о производительности.

  3. Усреднение масштаба изображения на основе размера экрана - используйте DisplayMetrics, чтобы получить размер и плотность экрана и настроить изображение соответствующим образом.

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

0

Thanx каждый для ответов. Из-за ответа от @Iacs я обнаружил, что мне пришлось внести изменения в структуру папок.

Я полностью упустил из виду тот факт, что в папке/res может быть больше каталогов, а затем только стандартный каталог «layout». Вы можете создавать другие каталоги с этими именами: layout-large, layout-xlarge, layout-small и т. Д. ... В этих папках вы можете вставить свой layout.xml и отрегулировать значения ...

Это как все выглядит сейчас в моем андроиде студии примечания макет структура папок: enter image description here

а теперь конечно моих 2 устройства и тот же DPI, но другой размер экрана показывает мои кнопки, как я хочу, чтобы они были showned!