Поддержка различных размеров экрана с современными методами с 2019 года - PullRequest
0 голосов
/ 11 декабря 2019

Этот вопрос задавался более 100 раз в SO, например, этот вопрос задавался 8 лет назад. И наверняка методы определения в обсуждении устарели.

С новыми компонентами проектирования, такими как Constraint Layout, и изменениями в корзине, такими как MipMap и другими изменениями в методах, я хочу обсудить современные методы.

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

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

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:layout_width="match_parent"    
    android:orientation="vertical"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"
    android:layout_height="wrap_content"
    android:layout_margin="30dp"
    android:gravity="center"
    >

    <TextView
        android:id="@+id/lblLogo"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="@string/app_name"
        android:autoSizeTextType="uniform"
        android:gravity="center"
        android:padding="15dp"
        />


    <!-- Email Label -->
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/tilLoginEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/etLoginEmail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textEmailAddress"
            android:hint="Email" />

    </com.google.android.material.textfield.TextInputLayout>



    <!-- Password Label -->
    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/tilLoginPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/etLoginPassword"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textPassword"
            android:hint="Password"/>

    </com.google.android.material.textfield.TextInputLayout>



    <com.google.android.material.button.MaterialButton
        android:id="@+id/btnLogin"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:padding="12dp"
        android:text="@string/btnLogin"/>
</LinearLayout>

Это отлично смотрится на мобильных устройствах, но хуже всего на планшетах и ​​больших экранах.

см. Рисунок ниже на экране мобильного телефона.

enter image description here

см. Рисунок ниже на планшетах

enter image description here

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

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

1 Ответ

1 голос
/ 11 декабря 2019

Может быть, вы можете попробовать ниже библиотеки, которая автоматически управляет разрешением всех размеров экрана. Я использую это в моих текущих проектах.

Для измерения

implementation 'com.intuit.sdp:sdp-android:1.0.6'

Для TextSize

implementation 'com.intuit.ssp:ssp-android:1.0.6'

для получения дополнительной информации https://github.com/intuit/sdp

...