Я использую все возможные макеты для своего приложения портрет и пейзаж (small-normal-large-xlarge), но после тестирования на маленьком экране мне просто не понравилось, как похоже, что я пытаюсь сделать, это отключить пейзаж для небольших макетов. Есть ли способ сделать это? Все, что я обнаружил, это изменения в манифесте, но я считаю, что, перенастроив манифест, я применил изменения ко всем макетам.Как отключить ландшафт на макете макетов
4
A
ответ
8
Самым простым способом поместить это в onCreate()
методы все вашу деятельности (еще лучше, поставить его в BaseActivity класс и расширить все ваши действия от него)
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
if (isLargeDevice(getBaseContext())) {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
} else {
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
}
Вы можете использовать этот метод, чтобы обнаружить, если устройство представляет собой телефон или планшет:
private boolean isLargeDevice(Context context) {
int screenLayout = context.getResources().getConfiguration().screenLayout;
screenLayout &= Configuration.SCREENLAYOUT_SIZE_MASK;
switch (screenLayout) {
case Configuration.SCREENLAYOUT_SIZE_SMALL:
case Configuration.SCREENLAYOUT_SIZE_NORMAL:
return false;
case Configuration.SCREENLAYOUT_SIZE_LARGE:
case Configuration.SCREENLAYOUT_SIZE_XLARGE:
return true;
default:
return false;
}
}
0
Проверить эту ссылку, вы можете проверить тип устройства и установить ориентацию при необходимости
Android: allow portrait and landscape for tablets, but force portrait on phone?
0
Вы можете программно handle runtime configuration changes как то
в манифесте:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
в вашей деятельности
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
///check the screen size and change it to potrait
}
}
или проверить this answer, чтобы увидеть, как проверить размер экрана и изменения его
-1
, например, 480 устройств для определения размера экрана: Применить в методе oncreate:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
if(width==480){
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
брат дает ширину экрана, тогда я дам вам решение –