Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 列表视图的屏幕截图并将其转换为位图_Android_Android Listview_Screenshot - Fatal编程技术网

Android 列表视图的屏幕截图并将其转换为位图

Android 列表视图的屏幕截图并将其转换为位图,android,android-listview,screenshot,Android,Android Listview,Screenshot,我只需要一个截图作为我的ListView的位图。我不知道该怎么做。屏幕的位图不是用来模糊它的,而是在另一个片段中设置为背景。 我在哪里拍摄截图?BaseAdapter还是包含ListView的我的片段? 或者在单击ListView中的项目后打开的新片段中 更新: 我正在从我的新片段调用ViewTreeObserver中的方法。方法loadBitmapFromView非常有效。我现在的问题是我不知道如何获取我想要的图片的ListView。我使用的参数应更改为列表视图中的参数。(参数现在正在形成用于

我只需要一个截图作为我的ListView的位图。我不知道该怎么做。屏幕的位图不是用来模糊它的,而是在另一个片段中设置为背景。 我在哪里拍摄截图?BaseAdapter还是包含ListView的我的片段? 或者在单击ListView中的项目后打开的新片段中

更新: 我正在从我的新片段调用ViewTreeObserver中的方法。方法
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