【问题标题】:A proper way to determine Tablet / Mobile in Qt在 Qt 中确定平板电脑/手机的正确方法
【发布时间】:2015-06-24 04:02:19
【问题描述】:

要确定设备是平板电脑还是移动设备,我使用标准:如果设备的屏幕对角线大于 7 iches,则设备是平板电脑。为了得到对角线,我使用:

QScreen *srn = qApp->screens().at(0);
QSizeF physicalSize = srn->physicalSize();

但是当我使用 4.7 英寸的 Nexus 4 时,physicalSize 返回大于 7 英寸。 我真的不知道是设备实现者犯了错误,还是 Qt 框架出错了。无论如何,从playmarket 获得的另一个应用程序正确地确定了此事。问题:确定设备是平板电脑还是移动设备的最佳方法是什么?

【问题讨论】:

    标签: android qt size screen


    【解决方案1】:

    如果你想在inches 中计算显示尺寸,那么你需要做如下:

    QScreen *scr = qApp->screens().at(0);
    qDebug() << "My Screen size is : " << scr->physicalDotsPerInch();
    

    请查找更多信息here

    【讨论】:

      【解决方案2】:

      我真的不知道你想做什么,但如果你只想要手机和平板电脑的两个不同布局文件,那么你可以这样做: 当您使用 Fragments 时,您通常有两个不同的布局文件。一个只包含一个用于移动设备的 Framelayout,另一个包含两个用于平板电脑设备的 Framelayout。

      确定设备是手机还是平板电脑的一个好方法是在您的 values 文件夹中创建一个 refs.xml 文件。只需在其中放置一个带有名称的项目以及您要引用的布局。此文件适用于移动设备:

      <resources>
      <item name="activity_masterdetail" type="layout">@layout/activity_fragment</item>
      </resources>
      

      然后创建另一个名为 values-sw600dp 的值文件夹。在此文件夹中创建另一个 refs.xml 文件。为两个 refs 文件提供相同的项目名称非常重要。然后参考您的平板电脑布局。

      <resources>
      <item name="activity_masterdetail" type="layout">@layout/activity_twopane</item>
      </resources>
      

      现在您可以使用您的项目名称设置内容视图,如果您有平板电脑或手机,android 只会选择正确的。

      在您的活动中的 onCreate() 方法中:

      setContentView(R.layout.activity_masterdetail);
      

      现在您必须检查您的平板电脑视图的 Framecontainer 是否为空:

      if (findViewById(R.id.yourFragmentDetailContainerForTablets) == null) {
         doYourCode();
      } else {
         doYourCode();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-09
        • 1970-01-01
        • 2014-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多