Android 列表视图的屏幕截图并将其转换为位图
我只需要一个截图作为我的ListView的位图。我不知道该怎么做。屏幕的位图不是用来模糊它的,而是在另一个片段中设置为背景。 我在哪里拍摄截图?BaseAdapter还是包含ListView的我的片段? 或者在单击ListView中的项目后打开的新片段中 更新: 我正在从我的新片段调用ViewTreeObserver中的方法。方法Android 列表视图的屏幕截图并将其转换为位图,android,android-listview,screenshot,Android,Android Listview,Screenshot,我只需要一个截图作为我的ListView的位图。我不知道该怎么做。屏幕的位图不是用来模糊它的,而是在另一个片段中设置为背景。 我在哪里拍摄截图?BaseAdapter还是包含ListView的我的片段? 或者在单击ListView中的项目后打开的新片段中 更新: 我正在从我的新片段调用ViewTreeObserver中的方法。方法loadBitmapFromView非常有效。我现在的问题是我不知道如何获取我想要的图片的ListView。我使用的参数应更改为列表视图中的参数。(参数现在正在形成用于
loadBitmapFromView
非常有效。我现在的问题是我不知道如何获取我想要的图片的ListView。我使用的参数应更改为列表视图中的参数。(参数现在正在形成用于测试的新片段)
这就是我如何从ListView的BaseAdapter调用我的新片段的方法,我实际上想要从中获取图片
ImageView imageView = (ImageView) rowView.findViewById(R.id.thumb_button_1);
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MOKPagerFragment pagerFragment = new MOKPagerFragment();
FragmentTransaction fragmentTransaction = ((Activity) mContext).getFragmentManager().beginTransaction();
fragmentTransaction.setCustomAnimations(R.anim.fade_in, R.anim.fade_out);
fragmentTransaction.add(R.id.fragment_container, pagerFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
});
抱歉,这让人困惑 从包含ListView的
片段中获取屏幕截图,使用以下代码获取屏幕截图:
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.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
v.draw(c);
return b;
}
然后将img.png读取为位图,并将其转换为jpg,如下所示
Bitmap screen = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ File.separator +"img.png");
now you can use screen bitmap
参考查看此链接我认为这超出了我的需要。我不需要所有项目的截图,包括那些没有显示。只需要一个ListView当前状态的屏幕截图,这样我就可以在背景中模糊位图了。谢谢,我会试试的。如何从新片段调用此方法以获取位图?(对不起,我是android和编程新手)loadBitmapFromView(视图v,int-width,int-height)
采用3个参数,1)视图对象(您想要的屏幕截图,这里是ListView),2)图像宽度,3)图像高度。如果您想拍摄整个列表视图的屏幕截图,请参考以下内容,我会得到以下错误java.lang.IllegalArgumentException:宽度和高度必须大于0。不确定我是否做对了。调用该方法时,您提供的宽度和高度是多少?您能否编辑您的问题并将代码放在调用loadBitmapFromView()
方法的位置?该方法有效。首先,我试着从新片段中调用onCreatView,但意识到该视图尚未膨胀,并且没有with或hight。如果你不介意的话,我会用一个新问题编辑代码。
if your phone is rooted try this
Process sh = Runtime.getRuntime().exec("su", null,null);
OutputStream os = sh.getOutputStream();
os.write(("/system/bin/screencap -p " + "/sdcard/img.png").getBytes("ASCII"));
os.flush();
os.close();
sh.waitFor();
Bitmap screen = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+ File.separator +"img.png");
now you can use screen bitmap