Я создаю небольшое приложение, которое использует класс surfaceview, который расширяет surfaceholder.callback.Он реализован так же, как пример с лунарлендером.Моя проблема в том, что каждый тип эмулятора, который я использую (низкая, средняя или высокая плотность), на самом деле, похоже, не меняет плотность экрана или разрешение в соответствии с тем, что я ожидал.Я недавно задал этот вопрос о переполнении стека, и меня осенило, что я не делаю ничего плохого с этой функцией, проблема в том, что все используемые мной эмуляторы все-таки распознаются со средней плотностью.
Экран эмулятора высокой плотности показывает очень пикселированные изображения.Изображения эмулятора средней плотности выглядят фантастически.Изображения эмулятора низкой плотности выглядят пиксельно, но не так плохо, как hdpi.
Я сделал mySurfaceHolder.getSurfaceFrame () для каждого эмулятора и придумал:480x800 - hdpi - создает поверхность 320 x 508
По умолчанию (HVGA) - mdpi - создает поверхность 320 x 455 QVGA - 240x320 - ldpi - создает поверхность 320 x 402
Разве эти поверхности не должны быть 480x800, 320x480 и 240x320 соответственно?Изменить: 320x455 имеет смысл, остальное, вероятно, занято в строке заголовка.Но как насчет низкого / высокого?
Итак, я не уверен, что моя проблема:
Как я настраиваю эмулятор.- Я использую HVGA, QVGA, WVGA800 и WVGA854 со стандартными настройками (без пользовательских разрешений)
Что-то не так с моим кодом в классе SurfaceView.Обратите внимание, что я не устанавливаю размер вручную, я полагаюсь на размер, возвращаемый этим методом обратного вызова:
.
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
thread.setSurfaceSize(width, height);
}
Есть мысли?Как всегда, я ценю вашу помощь!