Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法拍摄可见的+;android中布局的不可见部分_Java_Android_Screenshot_Android Bitmap_Bitmapimage - Fatal编程技术网

Java 无法拍摄可见的+;android中布局的不可见部分

Java 无法拍摄可见的+;android中布局的不可见部分,java,android,screenshot,android-bitmap,bitmapimage,Java,Android,Screenshot,Android Bitmap,Bitmapimage,我想保存整个可滚动布局的屏幕截图,但它只捕获屏幕上可见的部分 这是我的全部布局 以下是截图: 以下是屏幕截图的代码: private void takeScreenshot() { View v1 = getWindow().getDecorView().getRootView();; v1.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());

我想保存整个可滚动布局的屏幕截图,但它只捕获屏幕上可见的部分

这是我的全部布局

以下是截图:

以下是屏幕截图的代码:

private void takeScreenshot() {
    View v1 = getWindow().getDecorView().getRootView();;
    v1.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(v1.getDrawingCache());
    v1.setDrawingCacheEnabled(false);
    saveScreenshot(bitmap,"filename");
}

public void saveScreenshot(Bitmap bitmap,String name) {
    String mPath = Environment.getExternalStorageDirectory().toString() + "/" + name + ".jpg";
    File imageFile = new File(mPath);
    Msg.log(mPath);
    try {
        FileOutputStream outputStream = new FileOutputStream(imageFile);
        int quality = 100;
        bitmap.compress(Bitmap.CompressFormat.JPEG, quality, outputStream);
        outputStream.flush();
        outputStream.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

使用以下代码拍摄完整的滚动视图屏幕快照

    Bitmap bitmap = getBitmapFromView(scrollview, scrollview.getChildAt(0).getHeight(), scrollview.getChildAt(0).getWidth());

private Bitmap getBitmapFromView(View view, int height, int width) {
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Drawable bgDrawable = view.getBackground();
    if (bgDrawable != null)
        bgDrawable.draw(canvas);
    else
        canvas.drawColor(Color.WHITE);
    view.draw(canvas);
    return bitmap;
}
替换代码
saveScreenshot(位图,“文件名”)与上述代码的输出<代码>返回位图

示例:


使用以下代码拍摄完整滚动视图屏幕快照

    Bitmap bitmap = getBitmapFromView(scrollview, scrollview.getChildAt(0).getHeight(), scrollview.getChildAt(0).getWidth());

private Bitmap getBitmapFromView(View view, int height, int width) {
    Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    Drawable bgDrawable = view.getBackground();
    if (bgDrawable != null)
        bgDrawable.draw(canvas);
    else
        canvas.drawColor(Color.WHITE);
    view.draw(canvas);
    return bitmap;
}
替换代码
saveScreenshot(位图,“文件名”)与上述代码的输出<代码>返回位图

示例: