Myślę, że jest to możliwe, ponieważ zachowanie rotacji ekranu może sięgać poziomu aplikacji.Zmiana orientacji ekranu programowo za pomocą przycisku
Odpowiedz
Tak, można to zrealizować!
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ActivityInfo
http://developer.android.com/reference/android/content/pm/ActivityInfo.html
Skierować Link:
Button buttonSetPortrait = (Button)findViewById(R.id.setPortrait);
Button buttonSetLandscape = (Button)findViewById(R.id.setLandscape);
buttonSetPortrait.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
});
buttonSetLandscape.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View arg0) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
});
http://android-er.blogspot.in/2011/08/set-screen-orientation-programmatically.html
Dzięki. Ale czy ta funkcja musi być uruchamiana na zrootowanym urządzeniu? Wygląda na to, że nie działa na moim telefonie komórkowym, ale na moim zrootowanym tablecie. – Sam
Nie, to nie tak. Właściwie testowałem kod w tym linku przed wysłaniem. To działało w moim urządzeniu .. – Hariharan
OK, tak, masz rację. Właśnie przetestowałem inne urządzenie i działa dobrze. no cóż, mój Samsung Galaxy Nexus nie działa. Nie wiem dlaczego. – Sam
Tak, można ustawić orientację ekranu programowo kiedy tylko chcesz przy użyciu:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
dla orientacją pionową i poziomą odpowiednio. Metoda setRequestedOrientation() jest dostępna dla klasy aktywności, dzięki czemu można jej używać wewnątrz aktywności.
A to w jaki sposób można uzyskać bieżącej orientacji ekranu i ustawić ją adekwatnie zależności od jego aktualnego stanu:
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
final int orientation = display.getOrientation();
// OR: orientation = getRequestedOrientation(); // inside an Activity
// set the screen orientation on button click
Button btn = (Button) findViewById(R.id.yourbutton);
btn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
switch(orientation) {
case Configuration.ORIENTATION_PORTRAIT:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
break;
case Configuration.ORIENTATION_LANDSCAPE:
setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
break;
}
}
});
Zrobione stąd: http://techblogon.com/android-screen-orientation-change-rotation-example/
EDIT
także można uzyskać orientację ekranu za pomocą funkcji: Configuration
:
Proponuję użyć 'getRequestedOrientation()', aby uzyskać bieżącą orientację ekranu: http://stackoverflow.com/a/21909327/1037294 –
Wyczerpująca odpowiedź. – pdegand59
Użyj tego, aby ustawić orientację ekranu:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
lub
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
i nie zapomnij dodać go do manifestu:
android:configChanges = "orientation"
w miarę możliwości , proszę nie używać SCREEN_ORIENTATION_LANDSCAPE lub SCREEN_ORIENTATION_PORTRAIT. Zamiast tego użyj:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Umożliwia to użytkownikowi orientację urządzenia odpowiednio do orientacji poziomej lub orientacji pionowej. Jeśli kiedykolwiek musiałeś zagrać w grę z wbijanym kablem do ładowania, to wiesz dokładnie, dlaczego posiadanie obu dostępnych orientacji jest ważne dla użytkownika.
Uwaga: w przypadku telefonów, przynajmniej kilku, które sprawdziłem, umożliwia on tylko tryb portretowy "prawą stroną do góry", jednak funkcja SENSOR_PORTRAIT działa poprawnie na tabletach.
Uwaga: Ta funkcja została wprowadzona w API poziom 9, więc jeśli trzeba obsługiwać 8 lub niższy (mało prawdopodobne w tym momencie), a następnie zamiast używać:
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(Build.VERSION.SDK_INT < 9 ?
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :
ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Czy próbowałeś tego? : http://stackoverflow.com/questions/14873755/change-screen-orientation-in-android-without-reloading-the-activity –