2015-03-24 2 views
3

Я хочу, чтобы некоторый элемент ui в моей сцене2d ui масштабировался на больших экранах (не обязательно выше резолюции экранов). Его довольно прямо в макете Android, но как заставить его работать в libgdx. Может быть, какой-то API, которого я пропускаю?Как определить, является ли устройство смартфоном или планшетом в libgdx?

Можете ли это сделать через интерфейс в Android-активности? Текущее решение, о котором я могу думать, объявляет флаг в папках разного макета (значения-sw600 и т. Д.) И извлекает его в android-активность в oncreate(), а затем передает его в libgdx через интерфейс. Просьба предложить, если есть лучший способ

+0

Посмотрите на Libgdx 'Viewport's, может быть, вы что-то там найдете. – Springrbua

+0

@Springrbua Я уже использую видовые экраны, но, похоже, нечего ориентировать на большой экран. В любом случае, я получил эту работу безупречно, объявив несколько булевых флагов в xml для большого экрана, а затем вытащил их в Game class через interfacr. –

ответ

2

Если кому-то все еще любопытно использовать более простой способ решения этого вопроса, вы можете использовать метод LibGDX Gdx.graphics.getDensity();. Это возвращает плотность пикселей экрана и может быть преобразована в дюйм измерения. Расчет:

public float getScreenSizeInches() { 
    //According to LibGDX documentation; getDensity() returns a scalar value for 160dpi. 
    float dpi = 160 * Gdx.graphics.getDensity(); 
    float widthInches = Gdx.graphics.getWidth()/dpi; 
    float heightInches = Gdx.graphics.getHeight()/dpi; 

    //Use the pythagorean theorem to get the diagonal screen size 
    return Math.sqrt(Math.pow(widthInches, 2) + Math.pow(heightInches, 2)); 
} 

Я на самом деле не проверял это, но, по идее, он должен работать. Дайте мне знать, если это не так.

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