Плотность в приложениях для Android - PullRequest
0 голосов
/ 07 января 2012

Я рисую растровое изображение на SurfaceView, используя Canvas.drawBitmap (). У меня есть растровое изображение в папке res / drawable, и кажется, что оно корректно масштабируется на всех устройствах.
Некоторые пользователи жаловались на то, что при изменении плотности экрана своего устройства (с использованием рутированной программы под названием LCDDensity Changer) растровые изображения не масштабируются соответственно. Большое растровое изображение будет сжато, как будто оно все еще ищет старую плотность.

Есть ли способ обработки изменений плотности, когда пользователи используют такие программы, как LCD Density Changer?

Другая информация:
1. minSDKVersion = 3
2. targetSDKVersion не установлен
3. Я использую getMetrics () для определения высоты и ширины экрана
4. Я не использую папки drawable-hdpi, ldpi и др.

Ответы [ 2 ]

0 голосов
/ 09 января 2012

У меня было несколько проблем здесь.Я был нацелен на v1.5, и я использовал жестко запрограммированные константы для местоположений экрана без включения ограничивающего прямоугольника.

Я собираюсь:
1. Переключиться на 2.2 framework (который лучше совместим сразрешение экрана и плотность
2. Используйте «drawBitmap (растровое изображение, Rect src, Rect dst, Paint paint)» вместо «drawBitmap (растровое изображение, изображение с плавающей точкой, плавающая вершина, Paint Paint)». Это позволяет мне указатьименно там, где я хочу нарисовать графику, и она будет соответственно масштабироваться.
3. Начните использовать папки ldpi, hdpi, xhdpi и т. д. Я также рассматриваю возможность использования папки hdpi и предоставления возможности другим устройствам уменьшать изображения.(Я бы не использовал xhdpi, потому что где-то читал, что он поддерживается только в gingerbread 2.3).

0 голосов
/ 07 января 2012

Один подход, я думаю, вам нужно использовать hdpi, ldpi и т. Д. Вот статья о том, как это сделать. Плотность Android

Второй подход, вы можете получить плотность экранастрого использовать класс DisplayMetrics и иметь разные изображения для каждой плотности.Вот ТАК обсуждение на получить плотность экрана

DisplayMetrics metrics = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrics);
...