2015-06-23 4 views
0

Для определения устройства - планшета или мобильного устройства, я использую критерии: если диагональ экрана устройства превышает 7 бит, устройство представляет собой планшет. Для того, чтобы получить диагональ, я использую:Правильный способ определения Tablet/Mobile в Qt

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

Но когда я использую Nexus 4, который имеет 4,7 дюйма, physicalSize возвращает больше 7 дюймов. Я действительно не знаю, были ли разработчики устройств ошибками или картой Qt. В любом случае, другие приложения, полученные от playmarket, правильно определяют вопрос. QUESTON: Каков наилучший способ определения, планшета или мобильного устройства?

ответ

0

Я действительно не знаю, что вы хотите сделать, но если вам нужны только два разных файла макета для телефона и планшета, вы можете сделать это: Когда вы работаете с фрагментами, у вас обычно есть два разных макета. Один из них содержит Framelayout, который предназначен для мобильных устройств, и один, который содержит два Framelayouts для планшетов devies.

Хорошим способом определить, является ли устройство телефоном или планшетом, является создание файла refs.xml в папке значений. Просто поставьте элемент с именем в нем и макетом, к которому вы хотите обратиться. Этот файл предназначен для мобильного устройства:

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

Чем вы reate других значений папки с именем значения-sw600dp. В этой папке вы создаете еще один файл refs.xml. Его ВАЖНО дать одно и то же имя для обоих файлов refs. Затем вы ссылаетесь на планшет вашего планшета.

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

Теперь вы можете получить установить вид контента с именем элемента и андроид будет просто выбрать правильный, если у вас есть планшет или телефон.

В вашем методе OnCreate() в вашей деятельности:

setContentView(R.layout.activity_masterdetail); 

Теперь вы должны проверить, если ваш Framecontainer мнение о планшетном равно нулю:

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

Если вы хотите рассчитать размер дисплея в inches, то вам нужно сделать это, как показано ниже:

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

вы можете найти больше информации here

Смежные вопросы