Как поддерживать экраны с нестандартным DPI - PullRequest
0 голосов
/ 20 июня 2019

У меня есть приложение без поддержки планшета, использующее этот метод https://stackoverflow.com/a/41224771/7609373,, но эта реализация не поддерживает устройства с нестандартным DPI, например 408, которые есть на устройствах Huawei. Но Google Play против использования 408 и 410 в манифесте. Как можно поддерживать такие устройства?

1 Ответ

1 голос
/ 20 июня 2019

Прежде всего, вам нужно понять коэффициент масштабирования в Android, ниже ссылка будет полезна для вас Ссылка на Android документ

Допустим, в вашем случае вы хотите поддерживать dpiдиапазон между 320+ до 480 точек на дюйм.Ваша поддержка устройства попадает в следующий диапазон

xlarge XHDPI and normal XXHDPI resolution

Я предпочитаю следующий способ ..

1) For every imageview, I will have fixed width and height in dp values
   ex: width=60dp && height = 60dp.

2) LayoutContainer width and height ideally you need to use match_parent and  wrap_content.

3) I will place drawable in XHDPI and XXHDPI only.
   drawable-xhdpi
   drawable-xxhdpi

4) I will create and place layouts in 
     layout-xhdpi-xlarge-port
     layout-xxhdpi-port

5) Try to use dimens.xml where dimensions such as dp and sp can be different for different resolution
     values-xhdpi-xlarge
     values-xxhdpi

6) Include screen resolution in manifest, which you need to support

   <compatible-screens>
<!-- all small size screens -->
<screen android:screenSize="small" android:screenDensity="ldpi" />
                                .
                                .
                                .
<screen android:screenSize="small" android:screenDensity="xxxhdpi" />
<!-- all normal size screens -->
<screen android:screenSize="normal" android:screenDensity="ldpi" />
                                .
                                .
                                .
<screen android:screenSize="normal" android:screenDensity="xxxhdpi" />

<!--- Adding support for Huwaei devices -->
<screen android:screenSize="large" android:screenDensity="320" />
<screen android:screenSize="large" android:screenDensity="480" />
                           or
<screen android:screenSize="large" android:screenDensity="xhdpi" />
<screen android:screenSize="normal" android:screenDensity="xxhdpi" />

</compatible-screens>
</manifest>

7) Do the last thing now in manifest file again....
 <supports-screens android:smallScreens="true"
                  android:normalScreens="true"
                  android:largeScreens="false"
                  android:xlargeScreens="false"/>

Above are some of these ways you can support non-standard dpi devices...
...