Портрет для телефона, пейзаж для планшета (Android-Layout)
поэтому я делаю приложение для Android, и я хочу заставить альбомную ориентацию для планшетов и портретную ориентацию для телефонов. Однако, похоже, что я могу сделать только блокировку ориентации из того, что я видел, что побеждает цель желания двух отдельных ориентаций для устройств.
Таблетки: Пейзаж Телефоны: Портрет
говоря более техническим.
У меня есть макет в "res / layout-xlarge-land" для озеленения на планшете и я имейте оригинальный макет в "res / layout", и я просто хочу явно использовать layout-xlarge-land для планшета. Ничего другого, по сути, только использование ландшафта для устройств xlarge.
спасибо!
4 ответов
установка определенной ориентации на основе плотности устройства может не работать, потому что есть телефоны, которые имеют более высокую плотность, чем таблетки.
Я отключил датчик ориентации устройства, установив атрибут в теге действия в файле манифеста следующим образом:
android:screenOrientation="nosensor"
когда вы запускаете приложение, по умолчанию портретная ориентация устанавливается для телефонов и ландшафта для планшетов (и, следовательно, он выберет xml-файл из layout-xlarge-land
). И так вы установили блокировка ориентации, она остается в этой ориентации.
Вы можете измерить фактический размер (в дюймах) устройства, а затем программно задать ориентацию через:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
или
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
чтобы получить физический размер устройства, вы можете использовать опубликованный код здесь.
это не 100% точно, но это достаточно хорошо, чтобы решить, что король устройства работает приложение.
Я не совсем уверен, что вы говорите, но, похоже, вы должны просто измерить разрешение и действовать соответственно. Я имею в виду, как вы узнаете, что это телефон или планшет, кроме разрешения, которое отличается?
установите макет под названием llTablet в меню "макет" в макетах папок "макет-Большой" и макет llPhone в меню "макет" в папке "макет". По меню ссылаюсь на первый макет, который вводит пользователь. Затем проверьте, можете ли вы ссылаться на него. Если вы не можете ссылаться на llPhone, то его планшет.
llPhone = (LinearLayout) findViewById (R.id.llPhone)
if (llPhone == null) {
tablet = true;
}
else {
tablet = false;
}