Есть ли рекомендуемый размер пикселя для фонов Android?

1

На данный момент у меня есть только относительная компоновка с несколькими кнопками и установите android:background="#FFFFFF"

Я хотел бы создать фоновое изображение для использования, но я не уверен, какой размер изображения я должен создать.

Я понимаю, что для значков меню/значков запуска я должен был создать 3 набора из них для ldpi, mdpi и hdpi.

Однако, для фона, какими должны быть размеры пикселей для них?

Я создам фон, похожий на следующий:

Изображение 174551

Теги:
android-2.1-eclair

3 ответа

2
Лучший ответ

не только разные плотности экрана, но и разные размеры экрана. было бы непрактично иметь фоновое изображение для каждой конфигурации. вместо этого я бы рекомендовал использовать java-код для получения изображения и масштабирования его до размера экрана, независимо от размера или разрешения экрана.

в этом примере я вытащил из игры, которую у меня есть, у меня есть битмаг bg и разрешение экрана сохранено до maxwidth и maxheight. Я сравниваю битмап с фоном, затем устанавливаю некоторые значения масштаба. oldx/oldy определяют, изменилось ли разрешение экрана с момента последнего его проверки. Я создаю матрицу и изменяю размер растрового изображения, сохраняю его в bgresized, а затем устанавливаю свой oldx/oldy, чтобы мое следующее обновление было готово к масштабированию, если это необходимо. затем, я рисую новый фон

этот код я использовал холст, который вы можете использовать в своем методе onDraw (Canvas canvas), или вам не нравятся холсты, вы можете изменить его вокруг, используя его в изменениях onCreate и ориентации, или что-то подобное

checkbackgroundsize();
bgwidth = bg.getWidth();
    bgheight = bg.getHeight();
    scalex = (float)maxwidth / (float)bgwidth;
    scaley = (float)maxheight / (float)bgheight;
    if ((oldx != scalex) || (oldy != scaley)){//if the screen changed sizes
        Matrix matrix = new Matrix();
        matrix.postScale(scalex, scaley);
        bgresized = Bitmap.createBitmap(bg, 0, 0, bgwidth, bgheight, matrix, true);
        oldx = scalex;
        oldy = scaley;
    }

    canvas.drawBitmap(bgresized, 0, 0, null);//draw resized background
  • 0
    Просто вопрос: поскольку ваш предпочтительный подход - масштабирование изображений во время выполнения, каково базовое разрешение для ваших элементов рисования? Я могу себе представить, что у вас есть drawables, основанные на xhdpi, и вы уменьшаете их только для других устройств, если это необходимо, поскольку это кажется лучшей идеей, чем растягивание их для увеличения, но я не уверен.
1

Вы должны прочитать Поддержка нескольких экранов в лучших рекомендациях руководства разработчика Android.

0

Я бы также рекомендовал посмотреть на Android 9 patch drawables (хотя ваш рисунок может быть слишком сложным для этого)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню