【问题标题】:How can I scale my bitmap in Android based on the width and height pixels?如何根据宽度和高度像素在 Android 中缩放位图?
【发布时间】:2013-02-05 06:08:16
【问题描述】:

我希望能够根据屏幕尺寸缩放我的图像。在一个普通的 java 小程序中,我会做如下的事情......

int windowWidth = 1280;
int windowHeight = 720;

Image image;

public void paint(Graphics g)
{
    g.drawImage(image, x, y, windowWidth / 4, windowHeight / 16, null);
}

我一直在寻找答案,但我发现的一切似乎都出现了一些奇怪的结果。从我读到的内容来看,我可能需要对与分辨率无关的像素做一些事情,但我不确定 %100。

我要避免的事情是必须为不同的屏幕密度创建一组全新的图像和图标。我上面展示的方法可以毫无问题地调整桌面应用程序的大小。

编辑:

这是我在android中绘制图像时使用的。

Matrix matrix = new Matrix();
Bitmap image;

Constuctor....()
{
image = BitmapFactory.decodeResource(context.getResources(), R.drawable.play);
}

public void render(Canvas c)
{
    c.drawBitmap(image, matrix, null);
}

【问题讨论】:

标签: java android bitmap resize scale


【解决方案1】:

您好,请参阅我发布的问题scale bitmap

如果您使用的是画布,请获取画布的宽度和高度。或者如果你想让它有正式的正常布局,然后使用

获取宽度和高度
DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(metrics);
 dispWidth=metrics.widthPixels;
 dispheight=metrics.heightPixels;

然后像这样根据您的要求缩放我们的位图。在这个我必须有 8 块砖,所以我通过除以列数来取宽度

      String strwidth=String.valueOf(((float)(bmp.getWidth())/NO_COLUMNS));
        if(strwidth.contains("."))
        {
            scalebit=Bitmap.createScaledBitmap(bmp, (int)(Math.ceil(((float)bmp.getWidth())/NO_COLUMNS))*NO_COLUMNS, bmp.getHeight(), true);
        }
        else
        {
            scalebit=bmp;
        }

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-18
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多