Bence bu uygulanabilir çünkü ekran döndürme davranışı uygulama seviyesine kadar çıkabilir.
Yanıtlar:
Evet uygulanabilir!
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
Bağlantıya bakın:
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
Evet, aşağıdakileri kullanarak istediğiniz zaman ekran yönünü programlı olarak ayarlayabilirsiniz :
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
sırasıyla yatay ve portre modu için. SetRequestedOrientation () yöntemi Activity sınıfı için mevcuttur , bu nedenle Aktivitenizin içinde kullanılabilir.
Ve mevcut ekran yönünü şu şekilde elde edebilir ve mevcut durumuna bağlı olarak uygun şekilde ayarlayabilirsiniz:
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;
}
}
});
Buradan alınmıştır: http://techblogon.com/android-screen-orientation-change-rotation-example/
DÜZENLE
Ayrıca, aşağıdakileri kullanarak ekran yönünü elde edebilirsiniz Configuration
:
Activity.getResources().getConfiguration().orientation
getRequestedOrientation()
Şu anki ekran yönünü almak için kullanmanızı öneririm : stackoverflow.com/a/21909327/1037294
getRequestedOrientation()
UNSPECIFIED
uygulamayı başlattığınızda size verir . Yani yukarıdaki dinleyici ile bu ekranı değişmeyecek ve eklerseniz UNSPECIFIED
için switch
o birinde ekranını koymalıyız dikey / yatay birinci konumda.
Mümkün olan her yerde, lütfen SCREEN_ORIENTATION_LANDSCAPE veya SCREEN_ORIENTATION_PORTRAIT kullanmayın. Bunun yerine şunu kullanın:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
Bunlar, kullanıcının cihazı sırasıyla yatay veya dikey yöne yönlendirmesine olanak tanır. Şimdiye kadar karnınıza takılan bir şarj kablosuyla bir oyun oynamak zorunda kaldıysanız, o zaman her iki yöne de sahip olmanın kullanıcı için neden önemli olduğunu tam olarak bilirsiniz.
Not: Telefonlar için, en azından kontrol ettiğim birkaçı, yalnızca "sağ taraf yukarı" dikey moduna izin veriyor, ancak SENSOR_PORTRAIT tabletlerde düzgün çalışıyor.
Not: Bu özellik API Seviye 9'da tanıtıldı, bu nedenle 8 veya daha düşük seviyeyi desteklemeniz gerekiyorsa (bu noktada olası değildir), bunun yerine şunu kullanın:
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);
Ekranın yönünü ayarlamak için bunu kullanın:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
veya
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
ve bunu bildiriminize eklemeyi unutmayın:
android:configChanges = "orientation"
"orientation|screenSize"
, Buraya bakın: developer.android.com/guide/topics/resources/…
Çalışan bir kod:
private void changeScreenOrientation() {
int orientation = yourActivityName.this.getResources().getConfiguration().orientation;
if (orientation == Configuration.ORIENTATION_LANDSCAPE) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
showMediaDescription();
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
hideMediaDescription();
}
if (Settings.System.getInt(getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION, 0) == 1) {
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);
}
}, 4000);
}
}
bu yöntemi düğme tıklamanızda arayın