Android 位图布局的屏幕截图
Android screenshot of a layout to bitmap
我正在尝试截取由两个图像视图组成的相对布局。其中一个 imageview 可以在触摸时移动。
代码如下所示
<RelativeLayout
android:id="@+id/imageLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imgPhoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
<ImageView
android:id="@+id/imgBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
以下是我创建布局位图的代码。
imageLayout.setDrawingCacheEnabled(true);
imageLayout.buildDrawingCache();
Bitmap mergedImage = imageLayout.getDrawingCache();
代码运行良好,可以截取两张图片。但是,当我四处移动 imgPhoto 时,屏幕截图不会反映更改后的位置。它仍然显示原始未移动的 imgPhoto。我该如何解决?谢谢
在重试之前尝试禁用绘图缓存:
imageLayout.setDrawingCacheEnabled(true);
imageLayout.buildDrawingCache();
Bitmap mergedImage = imageLayout.getDrawingCache();
imageLayout.setDrawingCacheEnabled(false);
应该可以。
您也可以使用View.destroyDrawingCache()
。
我正在尝试截取由两个图像视图组成的相对布局。其中一个 imageview 可以在触摸时移动。
代码如下所示
<RelativeLayout
android:id="@+id/imageLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imgPhoto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
/>
<ImageView
android:id="@+id/imgBackground"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_centerVertical="true"
/>
</RelativeLayout>
以下是我创建布局位图的代码。
imageLayout.setDrawingCacheEnabled(true);
imageLayout.buildDrawingCache();
Bitmap mergedImage = imageLayout.getDrawingCache();
代码运行良好,可以截取两张图片。但是,当我四处移动 imgPhoto 时,屏幕截图不会反映更改后的位置。它仍然显示原始未移动的 imgPhoto。我该如何解决?谢谢
在重试之前尝试禁用绘图缓存:
imageLayout.setDrawingCacheEnabled(true);
imageLayout.buildDrawingCache();
Bitmap mergedImage = imageLayout.getDrawingCache();
imageLayout.setDrawingCacheEnabled(false);
应该可以。
您也可以使用View.destroyDrawingCache()
。