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