屏幕截图比Phonescreen长

时间:2016-06-01 08:43:37

标签: android eclipse screenshot

我无法通过搜索找到问题的解决方案。

我目前正在编写公共传输应用程序。搜索您的运输的结果显示在屏幕上,应该是可共享的。 虽然,当我通过代码截取这个视图的截图时,(只是结果,没有androidbar等),它只占用了那一刻屏幕上的内容。如果结果超出屏幕上的位置,它将被切断。

是否可以保存整个视图?注意:屏幕截图不会保存,只会提供给我的活动,并将其传递给Gmail或其他任何内容。

如果有帮助,这是我用于屏幕截图的代码:

公共类截图{

public static Bitmap takeScreenshot(View view) {
    view.setDrawingCacheEnabled(true);
    Bitmap bitmap = view.getDrawingCache();
    return bitmap;
}

public static Uri saveBitmap(Bitmap bitmap) {
    File imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg");
    FileOutputStream fos;
    try {
        fos = new FileOutputStream(imagePath);
        bitmap.compress(CompressFormat.JPEG, 100, fos);
        fos.flush();
        fos.close();
        return Uri.fromFile(imagePath);
    } catch (FileNotFoundException e) {
        Log.e("GREC", e.getMessage(), e);
    } catch (IOException e) {
        Log.e("GREC", e.getMessage(), e);
    }
    return null;
}

希望有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

此代码可以帮助您

 public static Bitmap loadBitmapFromView(View v) {
    Bitmap b;
    if (v.getMeasuredHeight() <= 0) {
        v.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.RGB_565);
        Canvas c = new Canvas(b);

        v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
        v.setBackgroundColor(Color.WHITE);
        v.draw(c);
        return b;
    } else {
        b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.RGB_565);
        Canvas c = new Canvas(b);
        v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
        v.setBackgroundColor(Color.WHITE);
        v.draw(c);
    }

    return b;
}