Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 平板电脑强制采用横向模式,手机强制采用纵向模式_Java_Android - Fatal编程技术网

Java 平板电脑强制采用横向模式,手机强制采用纵向模式

Java 平板电脑强制采用横向模式,手机强制采用纵向模式,java,android,Java,Android,我一直在开发一个广播应用程序,在这一过程中,我决定强制平板电脑只显示横向,手机只显示纵向。 以下是我迄今为止为实现这一目标所做的工作 首先,我在res.values中放入一个bool资源来检查屏幕大小 // From my res/values/bool.xml(sw600 and 720)dp. <?xml version="1.0" encoding="utf-8"?> <resources> <bo

我一直在开发一个广播应用程序,在这一过程中,我决定强制平板电脑只显示横向,手机只显示纵向。 以下是我迄今为止为实现这一目标所做的工作

首先,我在res.values中放入一个bool资源来检查屏幕大小

 //  From my res/values/bool.xml(sw600 and 720)dp.

        <?xml version="1.0" encoding="utf-8"?>
        <resources>
            <bool name="landscape_only">true</bool>
        </resources>

// res/values/bool.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="portrait_only">true</bool>
</resources>
到目前为止,这一切都很顺利。现在我有个问题


当我执行代码锁定平板电脑的纵向模式时,我的应用程序在纵向模式下启动了几秒钟,然后切换到横向模式。我如何确保它不会在肖像中首先开始?它应该从横向开始。

在取消通知之前,只需添加一个空检查

 @Override
        protected void onDestroy() {
          if(radioService != null){
             radioService.cancelNotification();
        }
        super.onDestroy();
}
要正确更改方向,应在清单中的活动标记中添加以下内容-

<activity 
    android:name="com.ABC"
    android:configChanges="keyboardHidden|orientation|screenSize">
</activity>

我终于找到了解决我问题的办法。我没有在我的值资源文件中引用其他屏幕视图。当我编辑bool.xml资源文件时,如下图所示,我得到了预期的结果

bool.xml (mobile)
 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="portrait_only">true</bool>
    <bool name="landscape_only">false</bool>
</resources>

// bool.xml (sw600dp)
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="portrait_only">false</bool>
    <bool name="landscape_only">true</bool>
</resources>

// bool.xml (sw720dp)
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="portrait_only">false</bool>
        <bool name="landscape_only">true</bool>
    </resources>
bool.xml(移动)
真的
假的
//bool.xml(sw600dp)
假的
真的
//bool.xml(sw720dp)
假的
真的

通过此操作,我的活动现在可以按要求的屏幕方向开始。

在setContentView()之前调用代码可能重复?这消除了错误,但应用程序在切换到横向之前以纵向显示几秒钟。我不希望这项活动从肖像开始。我该如何解决这个问题?您是否已将此添加到您的清单文件中?活动标签内的android:configChanges=“keyboardHidden | orientation | screenSize”。如果这不起作用,请告诉我,如果起作用,请接受答案。我补充了这一点,但没有解决问题。取而代之的是,在渲染之前,它由横向UI以纵向模式打开几秒钟properly@benruty能否发布onCreate()的完整代码?谢谢您应该在设置ContentView()之前进行方向更改。我正在更新我的答案。如果你还有问题,请告诉我。
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // locking out landscape screen orientation for mobiles
        if(getResources().getBoolean(R.bool.portrait_only)){
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        // locking out portait screen orientation for tablets
        if(getResources().getBoolean(R.bool.landscape_only)){
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

        }

        setContentView(R.layout.activity_main);
}
bool.xml (mobile)
 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="portrait_only">true</bool>
    <bool name="landscape_only">false</bool>
</resources>

// bool.xml (sw600dp)
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <bool name="portrait_only">false</bool>
    <bool name="landscape_only">true</bool>
</resources>

// bool.xml (sw720dp)
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <bool name="portrait_only">false</bool>
        <bool name="landscape_only">true</bool>
    </resources>