在android的运行时更改所有屏幕的方向

问题描述 投票:1回答:3

用例:我正在Tablet和Android TV中开发android应用程序,其中每个屏幕都包含“旋转屏幕”选项。我的查询是,如果用户点击旋转屏幕选项,我想在整个应用程序中更改屏幕方向。即所有屏幕都应将其默认设置更改为该选择的屏幕方向。

java android kotlin screen-orientation
3个回答
1
投票
 Hold the flag to change the orientation and verify it at onCreate(); and change it. 



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if(isLandScape)
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
else
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);    
setContentView(R.layout.activity_main);


}

0
投票

我可以为您提供一种解决方法:

  1. 为您的活动添加android:configChanges = "orientation"
  2. 步骤1将使您的活动在用户单击onConfigurationChanged(Configuration new)按钮时从Android系统获取回调Rotation
  3. Override onConfigurationChanged()您的活动中的回调
  4. 您将在onConfigurationChanged(Configuration newConfig)中获得新的配置对象作为参数。集中存储它,以便所有应用程序都可以访问它。
  5. 在所有活动中编写代码以首先检查集中存储的configuration值,如果它为空(如最初那样,则可以根据应用程序的需要从default以纵向或横向开始

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Make getCurrentConfig() method available centrally via Interface or 
        Application level, depends on our logic
        if (getCurrentConfig() == LANDSCAPE) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        } else if (getCurrentConfig() == PORTRAIT) {
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        setContentView(R.layout.activity_main);
     }
    

这样,您可以集中管理所有活动的当前轮换变化希望对您有所帮助


0
投票

单击旋转屏幕选项时,设置变量值。在每个活动的onCreate()方法中检查此变量,并按如下所示设置方向:-

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // Check the value of variable in if condition
        if (value.equals("landscape")) { 
           setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
        }
       else {
          setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); 
       }
   }

但是请确保对应用程序中的所有活动都执行此操作。您可能不得不重新启动该应用程序也达不到效果。

© www.soinside.com 2019 - 2024. All rights reserved.