2

这是所有安卓设备的好方法吗?我有一个 imageview 作为背景,我根据 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 或其他东西会使图像看起来很糟糕。例如,我在背景中有圆形,它看起来像一个椭圆,同时自动缩放它

 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.
4

1 回答 1

1

我建议改用ScaleType

Android 建议使用 dp 并为不同的屏幕尺寸创建不同的布局文件。

支持多屏

于 2013-06-21T10:53:42.867 回答