На данный момент у меня есть только относительная компоновка с несколькими кнопками и установите android:background="#FFFFFF"
Я хотел бы создать фоновое изображение для использования, но я не уверен, какой размер изображения я должен создать.
Я понимаю, что для значков меню/значков запуска я должен был создать 3 набора из них для ldpi, mdpi и hdpi.
Однако, для фона, какими должны быть размеры пикселей для них?
Я создам фон, похожий на следующий:
не только разные плотности экрана, но и разные размеры экрана. было бы непрактично иметь фоновое изображение для каждой конфигурации. вместо этого я бы рекомендовал использовать 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
Вы должны прочитать Поддержка нескольких экранов в лучших рекомендациях руководства разработчика Android.
Я бы также рекомендовал посмотреть на Android 9 patch drawables (хотя ваш рисунок может быть слишком сложным для этого)