Java 是否将滚动视图中的所有内容转换为位图?
我尝试将我的Java 是否将滚动视图中的所有内容转换为位图?,java,android,uiscrollview,screenshot,Java,Android,Uiscrollview,Screenshot,我尝试将我的滚动视图转换为位图,我的滚动视图的内容溢出屏幕(因此可以滚动),在我可以在滚动视图中捕获我的活动后,但我遇到了一个问题,用于保存屏幕快照的位图,无法创建所有视图,只有最后一个滚动视图,其余部分为黑屏,如下所示: 这是我在ScrollView中为所有视图截图的代码: scroll_pp=(ScrollView)polis.findViewById(R.id.scroll_pp); utktest=polis.findViewById(R.id.scroll_pp);
滚动视图
转换为位图
,我的滚动视图
的内容溢出屏幕(因此可以滚动),在我可以在滚动视图
中捕获我的活动后,但我遇到了一个问题,用于保存屏幕快照的位图
,无法创建所有视图,只有最后一个滚动视图
,其余部分为黑屏,如下所示:
这是我在ScrollView
中为所有视图截图的代码:
scroll_pp=(ScrollView)polis.findViewById(R.id.scroll_pp);
utktest=polis.findViewById(R.id.scroll_pp);
int totalHeight = scroll_pp.getChildAt(0).getHeight();
int totalWidth = scroll_pp.getChildAt(0).getWidth();
Bitmap b= MethodSupport.loadBitmapFromView(utktest, totalWidth, totalHeight);
String extr = Environment.getExternalStorageDirectory().toString() + File.separator + "Folder";
String fileName = "Test.jpg";
File myPath = new File(extr, fileName);
FileOutputStream fos = null;
try {
fos = new FileOutputStream(myPath);
b.compress(Bitmap.CompressFormat.JPEG, 100, fos);
fos.flush();
fos.close();
MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), b, "Screen", "screen");
}catch (FileNotFoundException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
public static Bitmap loadBitmapFromView(View v, int width, int height) {
Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
因此,我的代码是否有问题,因此我无法按照我的要求显示
位图
。您需要获取ScrollView的第一个子项
,并将其转换为位图
示例:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
android:id="@+id/rlChildContainer"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
</RelativeLayout>
</ScrollView>
您应该尝试仅在加载屏幕并绘制布局时加载位图,不要从“活动的onCreate方法”中加载。加载屏幕并绘制布局时加载位图是什么意思。我只是想问一下在哪里可以找到ScrollView的第一个孩子。谢谢你花了一个小时的时间来解决这个问题。我不知道我应该带孩子去。