Есть ли рекомендуемый размер пикселя для фонов Android? - PullRequest
1 голос
/ 16 апреля 2011

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

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

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

Однако для фона, что должноРазмер пикселя для них будет?

Я создам фон, подобный следующему:

enter image description here

Ответы [ 3 ]

2 голосов
/ 16 апреля 2011

не только о разной плотности экрана, но и о разном размере экрана. было бы непрактично иметь фоновое изображение для каждой конфигурации. Вместо этого я бы порекомендовал использовать код 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
1 голос
/ 16 апреля 2011

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

0 голосов
/ 16 апреля 2011

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

...