如何获取当前布局的位图(用于将屏幕共享为图像)而不是截屏?

时间:2016-04-08 08:13:43

标签: android layout view bitmap

如何获取当前布局的位图(用于将屏幕共享为图像)而不是截屏?我正在使用以下行获取布局视图, 我能够获得这种布局的位图,但图像看起来是空的(我有空白图像)。这是我的代码。

View cardShareView = getLayoutInflater().inflate(R.layout.activity_cad_profile, null);

boolean imageResult=saveImageInLocal(getBitmapFromView(cardShareView), "cad_share.png") == true

public static Bitmap getBitmapFromView(View view) {
    view.measure(View.MeasureSpec.UNSPECIFIED, View.MeasureSpec.UNSPECIFIED);
    Bitmap bitmap = Bitmap.createBitmap(view.getMeasuredWidth(), view.getMeasuredHeight(),
            Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
    view.draw(canvas);
    return bitmap;
}

private boolean saveImageInLocal(Bitmap imageData, String filename) {
    String iconsStoragePath = Environment.getExternalStorageDirectory() + "/KKMC/";
    File sdIconStorageDir = new File(iconsStoragePath);
    //create storage directories, if they don't exist
    sdIconStorageDir.mkdirs();

    try {
        filePath = sdIconStorageDir.toString() + filename;
        FileOutputStream fileOutputStream = new FileOutputStream(filePath);

        BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
        //choose another format if PNG doesn't suit you
        imageData.compress(Bitmap.CompressFormat.PNG, 70, bos);

        bos.flush();
        bos.close();

    } catch (FileNotFoundException e) {
        Log.w("TAG", "Error saving image file: " + e.getMessage());
        return false;
    } catch (IOException e) {
        Log.w("TAG", "Error saving image file: " + e.getMessage());
        return false;
    }

    return true;
}

预先感谢您的回复。

期待this imageI got this image

1 个答案:

答案 0 :(得分:0)

最后,我创建了重复的布局(activity_cad_profile.xml),以获取在加载主布局时加载的图像的完整视图。我不知道这是否正确。但它对我来说很好。