Как узнать наименьшую ширину (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;
Подробнее: здесь
Ответ 2
Лучшее решение для min API 13 и выше:
Configuration config = getResources().getConfiguration();
config.smallestScreenWidthDp
Последняя строка возвращает значение SW в dp!
Источник Google: http://android-developers.blogspot.fr/2011/07/new-tools-for-managing-screen-sizes.html
Ответ 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);