Кнопки изменения размера Android для разных разрешений
Это хороший способ для всех устройств Android? У меня есть изображение в качестве фона, и я изменяю его размер в соответствии с разрешением устройства Android.
private Bitmap getResizedBitmap()
{
Bitmap resizedBitmap;
Bitmap bmp=BitmapFactory.decodeResource(getResources(), R.drawable.background_3ball);
x640 = bmp.getWidth();
y960 = bmp.getHeight();
if(screenRatio > ratioOrginal)
{
imageWidth=(int)((double)y960*widthMain/heightMain);
imageHeight=y960;
int x = (x640-imageWidth)/2;
resizedBitmap = Bitmap.createBitmap(bmp,x,0, imageWidth, imageHeight);
}
else if(screenRatio < ratioOrginal)
{
imageWidth=x640;
imageHeight=(int)((double)x640*heightMain/widthMain);
int y = (y960-imageHeight)/2;
resizedBitmap = Bitmap.createBitmap(bmp,0,y, imageWidth, imageHeight);
}
else
{
return bmp;
}
tw.setText(widthMain + "\n" + heightMain + "\n" + imageWidth + "\n" + imageHeight);
return resizedBitmap;
}
private void SetBackground()
{
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
widthMain = metrics.widthPixels;
heightMain = metrics.heightPixels;
screenRatio = ((double)heightMain) / widthMain;
Bitmap resizedBitmap = getResizedBitmap();
imageBackground.setImageBitmap(resizedBitmap);
}
использование dp или другой вещи делает изображение плохо выглядящим. Например, у меня есть Цирцея в backgorund, и кажется, что это elipse при автоматическом масштабировании
for example my image has dimensions of 640x960.
ratioOrginal is 960:640=1.5
if a device is mdpi and having dimension of 320x480
screenRatio=480/320=1.5 and it is okay.
but if it is mdpi and having dimension of 480x800
screenRatio=900/480 is NOT 1.5.
both are mdpi, but the ratio is not standard.
I can not understand how people do this
in supporting multiple screens there is one xml for mdpi's
how it get's different resolutions.
1 ответ
Я бы порекомендовал вместо этого использовать ScaleType.
Android рекомендует использовать dp и создавать разные layout-файлы для разных размеров экрана.