Есть ли способ определить категорию размера экрана текущего устройства, например маленький, нормальный, большой, большой?
Не плотность, а размер экрана.
Есть ли способ определить категорию размера экрана текущего устройства, например маленький, нормальный, большой, большой?
Не плотность, а размер экрана.
Вы можете использовать Configuration.screenLayout
битовую маску.
Пример:
if ((getResources().getConfiguration().screenLayout &
Configuration.SCREENLAYOUT_SIZE_MASK) ==
Configuration.SCREENLAYOUT_SIZE_LARGE) {
// on a large screen device ...
}
Код ниже уточняет ответ выше, отображая размер экрана в виде тоста.
Этот код ниже отображает плотность экрана в виде тоста.
источник
Ответ Джеффа Гилфельта как статического вспомогательного метода:
источник
источник
Спасибо за ответы выше, это мне очень помогло :-) Но для тех (как я), вынужденных по-прежнему поддерживать Android 1.5, мы можем использовать Java-отражение для обратной совместимости:
источник
Configuration
класса. Это статические конечные значения, которые будут встроены во время компиляции (то есть они будут заменены их действительными значениями), поэтому ваш код не будет работать на более старых версиях платформы.targetSdkVersion
к последнему выпуску.Если вы хотите легко узнать плотность экрана и размер устройства Android, вы можете использовать это бесплатное приложение (разрешение не требуется): https://market.android.com/details?id=com.jotabout.screeninfo
источник
Нужно проверить наличие больших экранов и высоких плотностей? Это измененный код из выбранного ответа.
источник
Вот версия Xamarin.Android ответа Тома Макфарлина
источник
Попробуйте эту функцию isLayoutSizeAtLeast (int screenSize)
Чтобы проверить маленький экран, по крайней мере 320x426 dp и выше getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_SMALL);
Чтобы проверить обычный экран, по крайней мере, 320x470 точек на дюйм и выше getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_NORMAL);
Чтобы проверить большой экран, по крайней мере, 480x640 точек на дюйм и выше getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_LARGE);
Чтобы проверить очень большой экран, по крайней мере 720x960 точек на дюйм и выше getResources (). GetConfiguration (). IsLayoutSizeAtLeast (Configuration.SCREENLAYOUT_SIZE_XLARGE);
источник
В 2018 году, если вам нужен ответ Джеффа в Котлине, вот он:
источник
Не могли бы вы сделать это, используя строковый ресурс и перечисления? Вы можете определить строковый ресурс с именем размера экрана, например, SMALL, MEDIUM или LARGE. Затем вы можете использовать значение строкового ресурса для создания экземпляра перечисления.
Определите Enum в своем коде для разных размеров экрана, которые вас интересуют.
Определите строковый ресурс, скажем, screenize, значение которого будет SMALL, MEDIUM или LARGE.
screensize
в строковый ресурс в каждом измерении, которое вас волнует.Например,
<string name="screensize">MEDIUM</string>
помещается в values-sw600dp / strings.xml и values-medium / strings.xml и<string name="screensize">LARGE</string>
помещается в sw720dp / strings.xml и values-large / strings.xml.ScreenSize size = ScreenSize.valueOf(getReources().getString(R.string.screensize);
источник
Скопируйте и вставьте этот код в свой,
Activity
и когда он будет выполнен, он будетToast
соответствовать размеру экрана устройства.источник