我目前正在开发一个跨平台应用程序(主要是android和ios)。我想授权用户在屏幕足够大时使用横向或纵向(让我们说宽度超过480像素)并强迫他在另一种情况下使用肖像。
我正在考虑使用QML或C ++来实现这一目标,但显然这是不可能的。所以我想我将不得不使用AndroidManifest和Info.plist for iOS。但我不知道如何在这些文件中定义条件。
关于如何设法做到这一点的任何想法/帮助?
答案 0 :(得分:0)
可以使用Qt。诀窍是为每个平台包含本机代码,因为Qt不支持开箱即用。您可以通过一些工作轻松地将Android-Java和ios-objective-c代码包含到您的c ++应用程序中:
对于Android,使用Pablo中的代码创建一个java类。利用QtAndroid JNI包装器来调用这些方法(参见https://doc.qt.io/qt-5/qtandroid.html和https://doc.qt.io/qt-5/qandroidjniobject.html#details)。 专业提示:您可以使用https://github.com/benlau/androidnative.pri来调用java类。它比使用JNI类要容易得多,但需要正确的设置。
对于ios,创建一个mm
文件,一个object-c ++文件,您可以在其中混合使用c ++和objective-c代码。只需创建一个c ++方法,在该方法中使用object-c来存档您的目标。它与Pablos的答案非常相似,但你不能使用swift。
答案 1 :(得分:-2)
您使用的是混合应用还是原生应用? 不过,您可以根据显示宽度以编程方式更改屏幕方向。
首先获取设备显示尺寸,如果尺寸正确,请更改方向。
这里有一些代码片段。
Swift 3.0
//Get the display size
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
//Change orientation
let value = UIInterfaceOrientation.landscapeRight.rawValue
UIDevice.current.setValue(value, forKey: "orientation")
<强>的Android 强>
//Get the display size
Point displaySize = new Point();
activity.getWindowManager().getDefaultDisplay().getRealSize(displaySize);
Rect windowSize = new Rect();
activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(windowSize);
int width = displaySize.x - Math.abs(windowSize.width());
int height = displaySize.y - Math.abs(windowSize.height());
//Change orientation
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
//OR
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
如果你要使用Cordova,可以使用像这样的插件:
https://www.npmjs.com/package/cordova-plugin-screen-orientation