java - Android - 如何垂直连接两个相同宽度的位图?

标签 java android android-canvas android-view android-bitmap

我有一个布局,上半部分是谷歌地图,下半部分有一些数据。我需要以编程方式截取整个屏幕的屏幕截图。我正在截取两个半 View 的屏幕截图并想垂直加入它们。如何实现?

最佳答案

确实可以垂直(或水平)连接两个位图。可以通过以下方式完成。

假设您有两个 View ,view1view2。您首先需要为这两个 View 创建三个 位图,如下所示:

int a = view1.getMeasuredWidth();
int b = view1.getMeasuredHeight();
int c = view2.getMeasuredWidth();
int d = view2.getMeasuredHeight();

Bitmap b1 = Bitmap.createBitmap(a, b, Bitmap.Config.ARGB_8888);
Bitmap b2 = Bitmap.createBitmap(c, d, Bitmap.Config.ARGB_8888);
Bitmap b3 = Bitmap.createBitmap(a, b + d, Bitmap.Config.ARGB_8888);

第三个位图 b3 将根据需要包含垂直合并的位图 b1b2。要合并它们,请执行以下操作:

Canvas c1 = new Canvas(b1);
view1.draw(c1);

Canvas c2 = new Canvas(b2);
view2.draw(c2);

Canvas canvas = new Canvas(b3);

canvas.drawBitmap(b2, new Matrix(), null);
canvas.drawBitmap(b1, 0, view2.getHeight(), null);

现在 b3 应该有你想要的。

试试这个。这会起作用。

关于java - Android - 如何垂直连接两个相同宽度的位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33475476/

相关文章:

java - Android:实现 ViewHolder

java - 如何使用捕捉到道路在道路 api 中请求?

java - 在 Android 中处理事件的最佳方式

android - Canvas Eraser 正在绘制一条黑线

java - java spring 禁止的 Ajax 删除请求

java - Spring 启动 : Use Hibernate Session in a unit test

java - Dropwizard: .yml 配置是强制性的吗?

java - 密码学 : using Password Based Encryption (PBE)

android - 如何在 Android 上触摸和拉动文本绕一个圆圈旋转?

不同 API 上的 Android 绘画问题