Как я могу получить правильный DisplayMetrics из AppWidget в Android? - PullRequest
9 голосов
/ 15 апреля 2010

Мне нужно определить плотность экрана во время выполнения в Android AppWidget. Я установил устройство эмулятора HDPI (avd). Если настроить обычный исполняемый проект и вставить этот код в метод onCreate:

DisplayMetrics dm = getResources().getDisplayMetrics();
Log.d("MyTag", "screen density " + dm.densityDpi);

Выводит «плотность экрана 240», как и ожидалось.

Однако, если я настрою проект AppWidget и вставлю этот код в метод onUpdate:

DisplayMetrics dm = context.getResources().getDisplayMetrics();
Log.d("MyTag", "screen density " + dm.densityDpi);

Выводит «плотность экрана 160». Я заметил, подключив отладчик, что член mDefaultDisplay объекта Resources здесь равен нулю в случае AppWidget.

Точно так же, если я получаю ресурс во время выполнения, используя объект Resources, полученный из context.getResources () в AppWidget, он возвращает неправильный ресурс в зависимости от плотности экрана. Например, у меня есть отрисовка 60x60px для mdpi и 80x80 для hdpi. Если я получаю этот объект Drawable с помощью context.getResources (). GetDrawable (...), он возвращает версию 60x60.

Есть ли способ правильно обращаться с ресурсами во время выполнения из контекста AppWidget?

Спасибо!

1 Ответ

1 голос
/ 15 апреля 2010

Это похоже на ошибку. Если вы можете создать пример проекта, который демонстрирует ошибку, опубликуйте проблему на Android tracker . Если вы думаете об этом, добавьте комментарий, указывающий на проблему.

...