Я использую Libgdx для кодировки Android-игры, и, как вы, возможно, знаете, многие разрешения экрана вызывают некоторые проблемы, если они выполнены неправильно. Поэтому я пытаюсь использовать этот блок DP, а не пиксели.Пикселы на провалы, рабочий стол и андроид
Однако, у меня есть этот метод здесь:
public static float pixelToDP(float dp){
return dp * Gdx.graphics.getDensity();
}
метод Gdx.graphics.getDensity()
фактически получает масштаб, так что это уже сделано для меня.
Теперь проблема, libgdx - это кросс-платформа, которая хороша для тестирования. Когда я запускаю это на своем S4, который имеет разрешение 1920x1080 с разрешением 480 точек на дюйм, против моего ужасного и завышенного ноутбука, который имеет 1366x768 @ 92dpi, он размещается именно там, где я его хочу. На рабочем столе это далеко, неплохие несколько сотен пикселей на оси X и Y.
Это связано с тем, что мой экранный снимок измеряется на 92 dpi, разрешение намного ниже, а фактическая игра не является полноэкранным экраном на рабочем столе?
Вот код для рисования объекта:
table.setPosition(MathHelper.pixelToDP(150), MathHelper.pixelToDP(200));
Для того, чтобы получить его совершенным на рабочем столе я должен сделать:
table.setPosition(MathHelper.pixelToDP(480), MathHelper.pixelToDP(700));
Который даже не видно на моем телефоне, так как масштаб на самом деле равен 3х, что отличает 200 пикселей от экрана по оси Y.
Есть ли способ обойти это? Или я в основном собираюсь иметь дело с выполнением проверок платформы и разных блоков кода?
Возможное решение:
Так что я изменил мой дп метод преобразования, если бы я должен был сделать 100 * 0,5 он будет возвращать новое значение 50, но на самом деле я хочу Orignal значение 100 + 100 * 0.5.
Не уверен, если это правильное исправление или нет, но независимо от таблицы втянул в том же месте, как на ноутбук и телефон:
public static float pixelToDP(float dp){
if(Gdx.graphics.getDensity() < 1)
return dp + dp * Gdx.graphics.getDensity();
return dp * Gdx.graphics.getDensity();
Является ли это просто дешевый исправить или это довольно много, как это должно быть сделано?
на рабочем столе он выводит 0,525, а на моем s4 он выводит 3,0. – Gibbo