Как узнать наименьшую ширину (sw) устройства Android?

У меня есть 4 разных устройства:

  • Планшет Asus, заставка 7 "
  • планшет Lenovo, заставка 7 "
  • Мобильный телефон HTC, экранизация 5 "
  • Мобильный телефон HTC, screensize 4.7 "

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

Я хочу создать папку с ресурсами, например "layout-sw600dp", но я не знаю значения наименьшей ширины (sw).

Я попытался напечатать sw с помощью этого кода:

DisplayMetrics metrics = getResources().getDisplayMetrics();
Log.i("Density", ""+metrics.densityDpi);

но я не знаю, является ли это правильным значением.

Как найти наименьшую ширину (sw)?

Ответ 1

вы можете попробовать следующее:

DisplayMetrics dm = mActivity.getApplicationContext()
                    .getResources().getDisplayMetrics();
            float screenWidth = dm.widthPixels / dm.xdpi;
            float screenHeight = dm.heightPixels / dm.ydpi;

Подробнее: здесь

Ответ 3

Вот еще один простой способ.

Вы можете проверить Наименьшая ширина устройства с Параметры разработчика (в Android-эмуляторе Android и он не найден на моем реальном устройстве).

введите описание изображения здесь

Ответ 4

Исправление к вышеуказанному ответу, правильный код, чтобы найти правильное sw try this:

DisplayMetrics dm = getApplicationContext().getResources().getDisplayMetrics();
float screenWidth = dm.widthPixels / dm.density;
float screenHeight = dm.heightPixels / dm.density;

какая-либо из ширины экрана и screenHeight меньше вашего sw.

Ответ 5

Min api 13 и выше идут с лучшим ответом @Tobliug.

 Configuration config = getResources().getConfiguration();
 config.smallestScreenWidthDp;// But it requires API level 13

Ниже уровня API 13 попробуйте этот ответ

Создайте класс SmallWidthCalculator.java и просто скопируйте этот код

import android.content.Context;
import android.graphics.Point;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.Display;

 public class SmallWidthCalculator {
private static SmallWidthCalculator ourInstance = new SmallWidthCalculator();

public static SmallWidthCalculator getInstance() {
    return ourInstance;
}

private Context mContext;

private SmallWidthCalculator() {
}

public double getSmallWidth(Context context) {
    mContext = context;
    DisplayMetrics dm = context.getResources().getDisplayMetrics();
    int width = dm.widthPixels;
    int height = dm.heightPixels;


    double dpi = getDPI(width, height);


    double smallWidthDPI = 0;
    int smallWidth = 0;

    if (width < height)
        smallWidth = width;
    else
        smallWidth = height;

    smallWidthDPI = smallWidth / (dpi / 160);

    return smallWidthDPI;
}

private double getDPI(int width,
                      int height) {
    double dpi = 0f;
    double inches = getScreenSizeInInches(width, height);
    dpi = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2)) / inches;
    return dpi;
}

private double getScreenSizeInInches(int width, int height) {
    if (mContext != null) {
        DisplayMetrics dm = mContext.getResources().getDisplayMetrics();
        double wi = (double) width / (double) dm.xdpi;
        double hi = (double) height / (double) dm.ydpi;
        double x = Math.pow(wi, 2);
        double y = Math.pow(hi, 2);
        return Math.sqrt(x + y);
    }
    return 0;
}

}

Из вашей активности или фрагмента просто передайте свой контекст и получите небольшую ширину

double smallWidthDp=SmallWidthCalculator.getInstance().getSmallWidth(this);