面对特定视图拍摄快照的问题

时间:2018-06-08 07:48:48

标签: android

当我在android中拍摄特定视图的快照时。截取屏幕截图后,我的整个视图将变为空白。请检查我的错误代码。我在谷歌搜索了很多引用,但无法解决我的问题。请有人帮助我。

   // here is my code

 fb_share_btn.setOnClickListener (new View.OnClickListener ( ) {
            @Override
            public void onClick(View view) {
                boolean checkPermission = checkPermission();
                /*Bitmap bitmap = takeScreenshot();*/

                Bitmap bitmap = loadBitMapFromView(findViewById (R.id.tv_screenshot),findViewById (R.id.tv_screenshot).getWidth (),findViewById (R.id.tv_screenshot).getHeight ());

                saveBitmap(bitmap);
                shareIt();
            }
        });

// save bitmap function

public void saveBitmap(Bitmap bitmap) {
        imagePath = new File (Environment.getExternalStorageDirectory ()+ "/screenshot.png");


        Log.i ("Message","Testingabc:"+ imagePath);
        FileOutputStream fos;
        try {
            fos = new FileOutputStream (imagePath);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            Log.e("GREC", e.getMessage(), e);
        } catch (IOException e) {
            Log.e("GREC", e.getMessage(), e);
        }
    }

    private Bitmap loadBitMapFromView(View v, int width, int height) {
        Bitmap b = Bitmap.createBitmap(width , height, Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas (b);
        c.drawColor (Color.WHITE);


        v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
        v.draw(c);
        return b;
    }
    private void shareIt() {
        Uri uri = FileProvider.getUriForFile(TimeCounter.this, BuildConfig.APPLICATION_ID + ".provider",imagePath);
        Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
        sharingIntent.setType("image/*");
        String shareBody = "In Tweecher, My highest score with screen shot";
        sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My Tweecher score");
        sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
        sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
        sharingIntent.setPackage("com.facebook.katana");

        startActivity(sharingIntent);
    }
}

1 个答案:

答案 0 :(得分:0)

将此代码与AsycTask一起使用

 @Override
        protected void onPreExecute() {
 try {
                View v1 = getWindow().getDecorView().getRootView();
                v1.setDrawingCacheEnabled(true);
                bitmap = Bitmap.createBitmap(v1.getDrawingCache());
                v1.setDrawingCacheEnabled(false);
            } catch (Exception e) {
                e.printStackTrace();
            }
}

@Override
        protected Integer doInBackground(Integer... integers) {
            try {
                File root = new File(Environment.getExternalStorageDirectory(), "/Screenshot/");
                if (!root.exists()) {
                    root.mkdirs();
                }
                imageFile = new File(root.toString() + "/" + imageName + ".jpg");
                FileOutputStream outputStream = new FileOutputStream(imageFile);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 75, outputStream);
                outputStream.flush();
                outputStream.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

            return 0;
        }
}