Кнопки изменения размера 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-файлы для разных размеров экрана.

Поддержка нескольких экранов

Другие вопросы по тегам