Android set Просмотр видимости программно на основе размера экрана

У меня есть вид в приложении для Android, который я хотел бы переключаться между visible/gone на меньших экранах и visible/invisible в больших размерах. Начальная настройка (gone для малых, invisible для больших экранов) выполняется с помощью двух отдельных файлов макета XML в layout и layout-sw600dp-land, но затем, когда мне нужно динамически менять настройки видимости, как можно Я определяю из кода Java, который нужно выбрать на основе размера экрана?

Изменить: в частности, я хочу обнаружить в своем коде те же самые условия, которые заставляют Android использовать макеты с layout-sw600dp-land. Я думал даже записать значение где-то в директории values-sw600dp-land, но не уверен, какой файл вставить его и как получить к нему доступ.

Ответ 1

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

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; 
int height = dm.heightPixels; 

Однако ваш вопрос был неоднозначным в отношении того, имел ли размер экрана пиксели или дюймы. Возможно, вам понадобится использовать значение dm.densityDpi, чтобы преобразовать значения от пикселей в дюймы, для более полезного вычисления "размера" экрана.

ОТВЕТ НА РЕДАКЦИИ:

Существует два возможных решения. Один из них упоминается в этой теме, очень простой, и вы ссылались на него выше.

Как программно определить, какой формат XML используют мои приложения для Android?

Второе - это не решение, а объяснение. Файл layout-sw600dp-land заменяет старое соглашение об именах pre 3.2, которое было похоже на этот макет-xlarge-land. Это, по сути, экранирует экран "xlarge" в режиме "пейзаж". Таким образом, вы можете обнаружить это программно, найдя размеры экрана xlarge, в которых ширинa > высота. Ниже приведена хорошая ссылка на сравнение старого соглашения с новой "sw600dp" = наименьшая ширина - 600 dp.

http://developer.android.com/training/multiscreen/screensizes.html