gpt4 book ai didi

android - 我如何以编程方式获取/合并 Google map v2 的屏幕截图和 xml 的布局?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:33 25 4
gpt4 key购买 nike

我正在使用此代码截取 Google Map v2 的屏幕截图 answer这给了我输出:

enter image description here

map 截屏哪个好

用下面的代码我可以用黑色 map 屏幕拍摄布局的屏幕截图 没关系,因为使用以下代码 Map 将在 ScreenShot 中变黑

String mPath = Environment.getExternalStorageDirectory().toString()
+ "/" + "myTestScr" + System.currentTimeMillis() + ".jpeg";
Bitmap bitmap;
View v1 = (View) findViewById(R.id.rootviewtest);
v1.setDrawingCacheEnabled(true);
bitmap = Bitmap.createBitmap(v1.getDrawingCache());
v1.setDrawingCacheEnabled(false);

OutputStream fout = null;
File imageFile = new File(mPath);

try {
fout = new FileOutputStream(imageFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
fout.flush();
fout.close();

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

以上代码的输出:

enter image description here

我真正需要的是:

enter image description here

那么,现在我的问题是如何以编程方式获取3rd屏幕中的输出?

以编程方式合并两个(1 和 2)屏幕,帮助我拍摄一个屏幕截图?

或在拍摄两个(1 和 2)屏幕截图后以编程方式合并两个图像的任何其他替代方法?

最佳答案

调用以下方法对 map 进行截图:

public void captureMapScreen() {
SnapshotReadyCallback callback = new SnapshotReadyCallback() {

@Override
public void onSnapshotReady(Bitmap snapshot) {
try {
mView.setDrawingCacheEnabled(true);
Bitmap backBitmap = mView.getDrawingCache();
Bitmap bmOverlay = Bitmap.createBitmap(
backBitmap.getWidth(), backBitmap.getHeight(),
backBitmap.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(snapshot, new Matrix(), null);
canvas.drawBitmap(backBitmap, 0, 0, null);
FileOutputStream out = new FileOutputStream(
Environment.getExternalStorageDirectory()
+ "/MapScreenShot"
+ System.currentTimeMillis() + ".png");

bmOverlay.compress(Bitmap.CompressFormat.PNG, 90, out);
} catch (Exception e) {
e.printStackTrace();
}
}
};

mMap.snapshot(callback);

}

mview 是布局的 Root View ,mMap 是 map fragment 。

确保您拥有最新的 Google Play Services API。

mView.setDrawingCacheEnabled(true);
Bitmap backBitmap = mView.getDrawingCache();
Bitmap bmOverlay = Bitmap.createBitmap(
backBitmap.getWidth(), backBitmap.getHeight(),
backBitmap.getConfig());
Canvas canvas = new Canvas(bmOverlay);
canvas.drawBitmap(snapshot, new Matrix(), null);
canvas.drawBitmap(backBitmap, 0, 0, null);

跳过这些行并使用 snapshot.compress(Bitmap.CompressFormat.PNG, 90, out); 如果您只想要 map 的屏幕截图。

关于android - 我如何以编程方式获取/合并 Google map v2 的屏幕截图和 xml 的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18309625/

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