我会尽力解释我到底需要做什么.

我有3个独立的屏幕,分别是A、B、C.还有一个叫做"主屏幕"的屏幕,其中所有3个屏幕的位图都应该显示在Gallery view中,用户可以 Select 他想要的视图.

我已经能够获得所有3个屏幕的位图,并将其显示在Gallery视图中,只需将所有代码放在主屏幕活动中即可.现在,这让代码复杂了很多,我想简化一下.

所以,我可以从主屏幕调用另一个活动,不显示它,只获取该屏幕的位图吗.例如,假设我只调用主屏幕,它调用活动A、B、C,并且没有显示来自A、B、C的任何活动.它只是通过getDrawingCache()提供该屏幕的位图.然后我们可以在主屏幕的Gallery view中显示这些位图.

我希望我已经很清楚地解释了这个问题.

请告诉我这是否可行.

推荐答案

有一种方法可以做到这一点.你必须创建一个位图和画布,并调用视图.画画(画布);

以下是代码:

public static Bitmap loadBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
    v.draw(c);
    return b;
}

如果视图在其大小为零之前未显示.可以这样测量:

if (v.getMeasuredHeight() <= 0) {
    v.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
    v.draw(c);
    return b;
}

编辑:根据this postPassing 101 as value to 102 doesn't to do any good(尽管对于某些视图类它确实有效),推荐的方法是:

// Either this
int specWidth = MeasureSpec.makeMeasureSpec(parentWidth, MeasureSpec.AT_MOST);
// Or this
int specWidth = MeasureSpec.makeMeasureSpec(0 /* any */, MeasureSpec.UNSPECIFIED);
view.measure(specWidth, specWidth);
int questionWidth = view.getMeasuredWidth();

Android相关问答推荐

处理Room数据库中的嵌套实体

添加可组合元素的列表?

为什么柱子的高度不都一样?

如何在Android中打印到命令行

Jetpack Compose中尺寸不断增加的动画

从片段导航回来

为什么 Android Studio 中的 theme.xml 目录没有任何原色

只能从同一个库组内调用成功(引用groupId=androidx.work from groupId=My Composable)

NFC getNdefMessage 在 Android 13 上写入标签后返回 null

是否可以在 Kotlin 中为 mutableStateOf() 设置自定义设置器

在 Jetpack Compose 中单击时更改表面项目的背景 colored颜色

如何在 Jetpack Compose 中添加多个标签

自定义 Recyclerview [Android & Kotlin]

Jetpack Compose 重组竞争条件

如何在 Android 应用中录制短视频?

我应该使用 Bluetooth Classic 还是 Bluetooth LE 与我的移动应用程序通信?

为什么按钮没有拉伸到屏幕边缘?

为什么使用 React Native 和 expo 创建的 APK 体积这么大?

单个用户可以在 Firebase 身份验证中将多个电话号码链接到他的帐户吗?

如何在 Jetpack Compose 中将 NavigationRail 的内容居中