要确定设备是平板电脑还是移动设备,我使用标准:如果设备的屏幕对角线大于7个图标,则设备为平板电脑。为了获得对角线,我使用:
QScreen *srn = qApp->screens().at(0);
QSizeF physicalSize = srn->physicalSize();
但是当我使用4.7英寸Nexus 4
时,physicalSize
返回大于7英寸。
我真的不知道,设备实现者是做错了还是Qt框架。无论如何,从playmarket
获得的另一个应用程序正确地确定了问题。 QUESTON:确定,平板电脑或移动设备的最佳方法是什么?
答案 0 :(得分:0)
我不知道你想要做什么,但如果你只想要两个不同的手机和平板电脑布局文件,那么你可以这样做: 使用Fragments时,通常有两个不同的layoutfiles。一个只包含一个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();
答案 1 :(得分:0)
如果您想在inches
中计算显示尺寸,则需要执行以下操作:
QScreen *scr = qApp->screens().at(0);
qDebug() << "My Screen size is : " << scr->physicalDotsPerInch();
请找到更多信息here