我有一个视图,我想将其存储为图像(例如截取它的屏幕截图)。为此,我使用以下代码:
View view = findViewById(R.id.share_preview);
Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.draw(c);
Run Code Online (Sandbox Code Playgroud)
然后我将位图存储到图库中。
问题是,保存的图像始终与视图具有相同的大小。由于视图的大小取决于手机屏幕的大小,因此图像在每个设备上的大小都不同。
是否有可能获得更高分辨率的视图图像(并且每个设备上的分辨率相同)?
我尝试过的是在绘制到画布上之前在视图上调用scaleX()和scaleY()。视图由此缩放,但图像仍然具有旧大小(我还更改了位图的大小)。代码如下所示:
View view = findViewById(R.id.share_preview);
// here's the difference
view.setScaleX(2);
view.setScaleY(2);
Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
view.draw(c);
Run Code Online (Sandbox Code Playgroud)
也许需要很长时间才能更新秤。但我不知道如何检查缩放何时完成(并且缩放视图也不应该被渲染,因为它看起来完全错误)。