android 使用按钮以编程方式更改屏幕方向

rdlzhqv9  于 2022-12-25  发布在  Android
关注(0)|答案(8)|浏览(151)

我认为这是可以实现的,因为屏幕旋转行为可以上升到应用程序级别。

cnh2zyt3

cnh2zyt31#

是的,它是可实施的!
活动信息屏幕方向景观

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

活动信息屏幕方向肖像

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

活动信息

http://developer.android.com/reference/android/content/pm/ActivityInfo.html
请参阅链接:

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

bmvo0sr5

bmvo0sr52#

可以,您可以随时使用以下命令通过编程方式设置屏幕方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

setRequestedOrientation()方法可用于Activity类,因此可在Activity内部使用。
这就是您如何获得当前屏幕方向并根据其当前状态进行适当设置的方法:

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;                   
               }
          }
   });

从此处获取:http://techblogon.com/android-screen-orientation-change-rotation-example/
编辑
此外,您还可以使用Configuration获取屏幕方向:

Activity.getResources().getConfiguration().orientation
uurity8g

uurity8g3#

请尽可能不要使用SCREEN_ORIENTATION_LANDSCAPE或SCREEN_ORIENTATION_PORTRAIT,而是用途:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);

这两个方向允许用户将设备分别定向为横向或纵向。如果你曾经玩过一个游戏,充电线被插入你的胃,那么你就知道为什么两个方向都可用对用户来说很重要。
注:对于手机,至少有几个我已经检查,它只允许“右侧向上”肖像模式,然而,SENSOR_PORTRAIT在平板电脑上工作正常.
注意:此功能是在API Level 9中引入的,因此如果您必须支持8或更低版本(目前不太可能),请用途:

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);
weylhg0b

weylhg0b4#

使用此选项设置屏幕的方向:

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

别忘了把这个加到你的清单上

android:configChanges = "orientation"
pu3pd22g

pu3pd22g5#

工作代码:

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);
    }
}

调用这个方法在你的按钮点击

cdmah0mi

cdmah0mi6#

是的Hariharan答案很好.但您应该在活动标签中的AndroidManifest.xml中添加以下行:

android:screenOrientation="fullSensor"
android:configChanges="orientation|screenSize"

如果不添加以上行,Hariharan回答无效。

谢谢本尼!

roqulrg3

roqulrg37#

我的同事:

setLandscapeIcon.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
            setLandscapeIcon.setVisibility(View.GONE);
            setPortraitIcon.setVisibility(View.VISIBLE);
        }
    });

setPortraitIcon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
                setLandscapeIcon.setVisibility(View.VISIBLE);
                setPortraitIcon.setVisibility(View.GONE);
            }
        });

在清单中

android:configChanges = "orientation|screenSize"
android:screenOrientation="portrait"

注:设置要求的方向(活动信息屏幕方向肖像);我的设备无法正常工作

yebdmbv4

yebdmbv48#

安卓-考特林:
旋转X轴:

binding.btnRotateHorizontal.setOnClickListener {
     requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
}

要使Y轴旋转:

binding.btnRotateVertical.setOnClickListener {
     requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED
}

相关问题