Android调整大小按钮,用于不同分辨率的缩放布局

时间:2013-06-21 10:32:08

标签: android button layout resize resolutions

这是所有Android设备的好方法吗?我有一个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或其他东西会使图像看起来很糟糕。例如,我在backgorund中进行了循环,并且在自动缩放时看起来像是一个椭圆

 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 个答案:

答案 0 :(得分:1)

我建议改用ScaleType

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

Supporting Multiple Screens