首页 文章

如何为平板电脑启用纵向移动和纵向/横向纵向?

提问于
浏览
0

我目前正在开发一个跨平台应用程序(主要是android和ios) . 我想授权用户在屏幕足够大时使用横向或纵向(让我们说宽度超过480像素)并强迫他在另一种情况下使用肖像 .

我正在考虑使用QML或C来实现这一点,但显然这是不可能的 . 所以我想我将不得不使用AndroidManifest和Info.plist for iOS . 但我不知道如何在这些文件中定义条件 .

有关如何设法做到这一点的任何想法/帮助?

2 回答

  • 0

    这可能与Qt有关 . 诀窍是为每个平台包含本机代码,因为Qt不支持开箱即用 . 您可以通过一些工作轻松地将Android-Java和ios-objective-c代码包含到您的c应用程序中:

    对于Android,使用Pablo中的代码创建一个java类 . 利用QtAndroid JNI包装器来调用这些方法(参见https://doc.qt.io/qt-5/qtandroid.htmlhttps://doc.qt.io/qt-5/qandroidjniobject.html#details) . Pro Tip: 您可以使用https://github.com/benlau/androidnative.pri来调用java类 . 它比使用JNI类要容易得多,但需要正确的设置 .

    对于ios,创建一个 mm 文件,一个object-c文件,您可以在其中混合c和objective-c代码 . 只需创建一个c方法,在该方法中使用object-c来存档您的目标 . 它与Pablos的答案非常相似,但你不能使用swift .

  • -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

相关问题