Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
纵向和横向Android应用程序_Android_Android Layout - Fatal编程技术网

纵向和横向Android应用程序

纵向和横向Android应用程序,android,android-layout,Android,Android Layout,我是android新手。我仍处于学习状态。我被要求开发一个应用程序,第一个要求是手机上的应用程序只能是纵向的,平板电脑上的应用程序只能是横向的 我已经开发了应用程序的肖像模式通常默认的文件夹布局和清单,我设置为android:screenOrientation=“肖像” 现在,对于横向,我认为如果我创建类似“layout-sw600dp-land”的文件夹,将自动从该文件夹调用用于平板电脑的xml,但随后意识到清单中提供了默认方向,所以它将始终是纵向的 所以现在的问题是如何实现手机(纵向-横向不

我是android新手。我仍处于学习状态。我被要求开发一个应用程序,第一个要求是手机上的应用程序只能是纵向的,平板电脑上的应用程序只能是横向的

我已经开发了应用程序的肖像模式通常默认的文件夹布局和清单,我设置为android:screenOrientation=“肖像”

现在,对于横向,我认为如果我创建类似“layout-sw600dp-land”的文件夹,将自动从该文件夹调用用于平板电脑的xml,但随后意识到清单中提供了默认方向,所以它将始终是纵向的

所以现在的问题是如何实现手机(纵向-横向不应该发生)和平板电脑(横向-纵向不应该发生)


我是否必须为横向视图(在清单中设置)创建相同的Java&Layout(XML)或仅更改文件夹是否有简单的方法?

好的,我将提出的解决方案可能不是完美的解决方案,但我确信它会起作用

不过,这将取决于一个假设:

  • 平板电脑的屏幕必须大于手机屏幕
首先获取X和Y大小(以像素为单位):

WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);

double width = size.x;
double height = size.y;
现在,您所要做的就是找到标准平板电脑的高度和宽度,如果它大于或等于普通平板电脑的高度和宽度,那么您将执行以下操作:

if(width > normalTabletWidth && height > normalTabletHeight){
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}else{
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

您应该使用android的getDisplay()。。。通常平板电脑的显示尺寸为6.5或7英寸或更大,而手机的显示尺寸小于6.5英寸。。。因此,比较显示属性,然后决定将屏幕模式更改为横向或纵向…

我也面临同样的问题,然后我找到了解决方案

首先,您必须声明平板电脑的布局文件夹,例如:

layout-sw360dp/ : 720p screens 
layout-sw540dp/:1080p屏幕

然后,在这些文件夹中定义布局文件。但这并不能解决肖像和风景的问题

为了使你的应用程序具有响应性,你还必须对一些XML文件进行解密

bool
资源放入
res.values
中,检查屏幕大小

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>
添加此支票:

@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);
}
要正确更改方向,应在清单中的活动标记中添加以下内容:

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

这样就可以了。

检查此链接也检查此链接
<activity 
    android:name="com.ABC"
    android:configChanges="keyboardHidden|orientation|screenSize">
</activity>