Поддержка нескольких экранов (телефон и планшет) - PullRequest
1 голос
/ 15 февраля 2012

Я новичок в программировании для Android. Прежде всего мне нужно, чтобы мое приложение поддерживалось двумя устройствами - телефоном (480x800) и планшетом (1280x800).

Я прочитал это и попытался сделать шаг за шагом. Поддержка нескольких экранов

Итак, я создал папки с макетами:

res/layout/firstPage.xml//this is by default phone layout port and land
res/layout-sw720dp/firstPage.xml//this is tablet port layout
res/layout-sw720dp-land/firstPage.xml//this is tablet land layout

Мой xml выглядит так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_gravity="center_vertical"
    android:baselineAligned="false"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <Button
        android:id="@+id/button1"
        android:text="@string/button1" />

    <Button
        android:id="@+id/button2"
        android:text="@string/button2" />

    <Button
        android:id="@+id/button3"
        android:text="@string/button3" />

</LinearLayout>

Я не даю больше информации о кнопке, потому что в каждом макете они разные.

В моем AndroidManifest.xml у меня есть эта строка:

<supports-screens android:anyDensity="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:largeScreens="true"/>

Может быть, мне не нужно устанавливать true для других, если я устанавливаю значение true для этого anyDensity = "true"

Так что я думаю, что сделал все, как должен. Но когда я хотел проверить на планшете, он показывает мне макет по умолчанию телефона. Так что я пропустил? Или мне нужно сделать кодирование тоже?

Отредактировано:

Думаю, я понимаю, почему ... Начиная с Android 3.2 (уровень API 13), вышеперечисленные группы размеров устарели, и вместо этого следует использовать спецификатор конфигурации swdp, чтобы определить наименьшую доступную ширину, требуемую ресурсами макета.

Моя таблица 3.1, так почему она не нашла макет? Но что делать, если я хочу поддержать от 2,1 до 4?

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

гуманный:

Вы должны следовать: Лучшая практика

Попробуйте использовать другой макет для экрана другого размера:

Как будто:

res/layout/my_layout.xml         // layout for normal screen size ("default")res/layout-small/my_layout.xml       // layout for small screen size
res/layout-large/my_layout.xml       // layout for large screen size
res/layout-xlarge/my_layout.xml      // layout for extra large screen size
res/layout-xlarge-land/my_layout.xml // layout for extra large in landscape orientation

Использование изображений разного размера в зависимости от размера экрана устройства:

Как будто:

res/drawable-mdpi/my_icon.png        // bitmap for medium density
res/drawable-hdpi/my_icon.png        // bitmap for high density
res/drawable-xhdpi/my_icon.png       // bitmap for extra high density

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

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

Надеюсь, это поможет вам. Если нет, дайте мне знать, где вы остановились в управлении макетом.

Спасибо.

2 голосов
/ 23 февраля 2012

layout-sw720p работает только в версиях 3.2 и более поздних версий для Android, а не в версиях 3.0 и 3.1

Надеюсь, это поможет, вот ссылка http://developer.android.com/guide/practices/screens_support.html В разделе Использование квалификаторов нового размера -> Таблица 2Новые квалификаторы конфигурации для размера экрана (представлен в Android 3.2).

1 голос
/ 15 февраля 2012

попробуйте использовать это ...

res/layout/firstPage.xml//this is by default phone layout port and land
res/layout-xlarge/firstPage.xml//this is tablet port layout
res/layout-xlarge-land/firstPage.xml//this is tablet land layout
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...