在第二个活动中显示捕获的屏幕截图(在imageview或图库中)

时间:2015-12-07 07:58:07

标签: android screenshot

我的代码是从第一个活动中捕获屏幕截图。在我点击按钮的第一个活动中,它将捕获屏幕并将其保存到手机中,并在第二个活动的图像视图或图库中显示所有图像。

第一项活动:

Button btn;

ImageView img;
Bitmap bitmap;

int j = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_screen__main);
    //final BitmapDrawable bitmapDrawable = new BitmapDrawable(bitmap);
    imgv_capturedImage = (ImageView) findViewById(R.id.imageView1);
    img = (ImageView) findViewById(R.id.imageView1);
    btn = (Button) findViewById(R.id.btn_screenshoot);
    btn .setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {           
            captureScreen(v);
            saveImage(bitmap);

            Log.d("SCREEN", "ONCLICK");
            Intent i = new Intent(getApplicationContext(),B.class);
            i.putExtra("image",bitmap);
            startActivity(i);
        }
    });
}


public  void captureScreen(View v1){
    Log.d("SCREEN", "CAPTURE");
    View rootview = v1.getRootView();
    rootview.setDrawingCacheEnabled(true);
    bitmap = rootview.getDrawingCache();

}

public void saveImage(Bitmap b){
    Log.d("SCREEN", "SAVE");
    if (Environment.MEDIA_MOUNTED.equals(Environment
            .getExternalStorageState())) {
        File sdCard = Environment.getExternalStorageDirectory();
        File directory = new File(sdCard.getAbsolutePath()
                + "/ScreenShots");
        directory.mkdirs();

        String filename = "screenshot" + j + ".jpg";
        File yourFile = new File(directory, filename);

        while (yourFile.exists()) {
            j++;
            filename = "screenshot" + j + ".jpg";
            yourFile = new File(directory, filename);
        }

        if (!yourFile.exists()) {
            if (directory.canWrite()) {
                try {
                    FileOutputStream out = new FileOutputStream(
                            yourFile, true);
                    bitmap.compress(Bitmap.CompressFormat.PNG, 80,
                            out);
                    out.flush();
                    out.close();
                    Toast.makeText(Screen_MainActivity.this,"File exported to /sdcard/ScreenShots/screenshot"+ j + ".jpg",
                            Toast.LENGTH_SHORT).show();
                    j++;
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    } else {
        Toast.makeText(Screen_MainActivity.this,
                "Sorry SD Card not available in your Device!",
                Toast.LENGTH_SHORT).show();
    }

}
}

第二项活动:

Screen_MainActivity sc;
ImageView imgView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    Log.d("SCREEN", "B");
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.b);
    Intent i = new Intent();
    Bitmap bitmap = (Bitmap)i.getParcelableExtra("image");
    imgView = (ImageView) findViewById(R.id.imageView1);

    imgView.setImageBitmap(bitmap);
}
}

1 个答案:

答案 0 :(得分:3)

将文件的路径发送到第二个活动,而不是发送整个位图。并在第二次活动中检索它。