gpt4 book ai didi

Android createbitmap 宽度在不同设备上表现不同

转载 作者:行者123 更新时间:2023-11-29 21:31:10 25 4
gpt4 key购买 nike

我有一个线性布局(宽度 = 填充父级,基本上它填满了设备的整个宽度),它包含 2 个子布局。一个 width=fill_parent 的线性布局(让我们称之为 linear1),第二个是 width=fill_parent 的 webview。默认情况下,webview 定义为 visibility=GONE,因此它不会显示在屏幕上,也不占用任何空间。

<ParentLinear>
<Linear1 width=fill_parent></Linear1>
<Webview width=fill_parent></Webview>
</ParentLinear>

我以编程方式将表面 View 加载到线性布局 linear1 中,并且 web View 保持 visibility=gone。表面 View 在所有设备上占据了手机的整个宽度,没有问题。现在在某些情况下,我以编程方式隐藏 linear1 (visibility=gone) 并使用 createbitmap 创建一个新位图/使用 canvas 写入,将其写入文件,然后将其加载到 webview 中并使 webview 可见。为了使位图只使用设备的整个宽度,不多不少,我所做的是在使用 getwidth 隐藏它之前找到 linear1 的宽度(我得到正确的值,它不是 0)然后我将其设置为我正在创建的位图的宽度。

现在位图创建没有问题,我将它作为文件写入设备,然后它从文件系统加载到 webview 中,一切都很好,很漂亮。它的行为完全符合我希望它在 HTC Inspire(我认为是 andriod 2.3)上的行为,位图/webview 占据了设备的整个宽度,位图的大小与 linear1 的宽度完全相同。但是当我在 HTC One MIni(android 4.2.2)上测试这个时,位图的宽度比设备的宽度和 linear1 的宽度大得多,尽管我最初是使用 linear1 的宽度创建位图的占据设备的整个宽度。当我在 Kindle FIre(kindle fire 的第一个版本)上测试它时,位图的宽度小于 linear1 的宽度。在 HTC Inspire 上基本上按预期工作,但在 HTC One Mini 和 KIndle Fire 上不同。我没有在任何其他设备上测试过。

需要明确的是,我指的不是我知道可以调整的 webview 的缩放,我指的是位图的大小。这可能与每个设备的分辨率、每捏的像素等有关,但我不明白的是,因为我实际上使用 linear1 的宽度来设置位图的宽度,那为什么不完全是相同的。还有一件事,如果我在位图上执行 getwidth,我得到的数字与 linear1 的相同,但在屏幕上它们不匹配,位图明显变大或变小。如果您能给我一些指示以了解其工作原理,请告诉我。

这是我认为相关的代码部分。

    int bitmapX =  linear1.getWidth() //this is the value under question
int bitmapY = 600; // will need to convert from dip to pixel later
Bitmap myBitMap = Bitmap.createBitmap(bitmapX, bitmapY, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(myBitMap);

-- there is other code which is not shown here to write stuff into the bitmap using canvas --

canvas.save();
canvas.translate(
myBitMap.getWidth() / 2 ,
myBitMap.getHeight() / 2);
canvas.restore();
writeBitmap(myBitMap); //writes the bitmap to a file calling a user defined function.
myBitMap.recycle();

最佳答案

我认为您必须将这些数量乘以设备密度。

尝试将这些金额乘以

this.getResources().getDisplayMetrics().density

关于Android createbitmap 宽度在不同设备上表现不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19453510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com