本文介绍了在Android中以编程方式截图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用以下代码以编程方式截图:

public static Bitmap takeScreenshot(View view)
    {
        try
        {
            // create bitmap screen capture
            view.setDrawingCacheEnabled(true);
            Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
            view.setDrawingCacheEnabled(false);
            return bitmap;
        }
        catch (Throwable e)
        {
            CustomLogHandler.printError(e);
        }
        return null;
    }

private static void copyFile(Bitmap bitmap)
    {
        File dstFile = getShareResultFile();

        //Delete old file if exist.
        if(dstFile.exists()) {
            dstFile.delete();
        }

        FileOutputStream fos = null;
        try
        {
            fos = new FileOutputStream(dstFile);
            bitmap.compress(Bitmap.CompressFormat.JPEG, 0, fos);
            fos.flush();
        }
        catch (Exception e) {
            CustomLogHandler.printError(e);
        }
        finally {
            if (fos != null) {
                try {
                    fos.close();
                } catch (IOException ioe) {
                    CustomLogHandler.printError(ioe);
                }
            }
        }
    }

有几个问题,如:

  1. 后退箭头、标题和共享菜单背景颜色不正确。看起来很乱。
  2. 工具栏的背景色已完全更改。
  3. 图像质量太差,可绘制的列表项目圆角不光滑。
  4. 未将我设置的布局背景作为父布局的背景。

我从根视图中截取屏幕快照。

推荐答案

bitmap.compress(Bitmap.CompressFormat.JPEG, 0, fos);

首先,您要将其另存为JPEG。JPEG是为照片设计的,您的屏幕截图不是照片。

其次,您将以品质因数0保存此参数。JPEG使用有损压缩算法,质量因数为0表示"请随意使此图像变得非常差,但请尽可能将其压缩"。

我建议切换到:

bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
对于包含您问题中所示内容的屏幕截图,PNG是一种更好的图像格式。我不认为PNG使用质量因子值;我输入100只是为了表明您想要尽可能好的质量。

这篇关于在Android中以编程方式截图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 03:09