Android studio Programmatic屏幕截图尝试获取整个列表视图

时间:2017-09-09 19:55:26

标签: java android listview screenshot

我有一个截屏功能,适用于我的大多数活动,但在一个活动中,我有200多个项目的列表视图,当我调用该功能时,它似乎只是挂在黑屏上,我相信这是因为它& #39;试图制作整个列表视图的屏幕截图。

我只能想到两个可能的选择,

1)如果有人知道更好的截屏方式,我基本上希望它像普通的截图一样,但我想以编程方式进行操作的原因是隐藏某些东西。

2)如果有方法从listview / adapter获取物理视图中的项目列表,那么我可以重新填充适配器,然后在我&#39之后将其设置回正常状态完成了。

谢谢,

截图代码:

private void takeScreenshot() {
        Bitmap bitmap=null;
        ByteArrayOutputStream stream = null;

        String tempPass="";
        String tempUser="";

        try {
            //hides private data
            EditText pass = (EditText) findViewById(R.id.password);
            EditText user = (EditText) findViewById(R.id.username);
            tempPass = pass.getText().toString();
            tempUser = user.getText().toString();
            pass.setText("**************");
            user.setText("**************");

            // create bitmap screen capture
            View v1 = getWindow().getDecorView();
            v1.setDrawingCacheEnabled(true);
            bitmap = Bitmap.createBitmap(v1.getDrawingCache());
            v1.setDrawingCacheEnabled(false);

            //converts image to bytearray for transfering
            stream = new ByteArrayOutputStream();
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            byte[] byteArray = stream.toByteArray();

            //unhides private data
            pass.setText(tempPass);
            user.setText(tempUser);

            //sends image to ImageViewActivity
            Intent intent = new Intent(MainActivity.this,ImageViewActivity.class);
            intent.putExtra(EXTRA_MESSAGE,byteArray);
            startActivity(intent);

            Toast.makeText(getApplicationContext(), "Screenshot Successful", Toast.LENGTH_SHORT).show();
        } catch (Throwable e) {
            e.printStackTrace();
        }
    }

0 个答案:

没有答案