本文介绍了在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);
}
}
}
}
有几个问题,如:
- 后退箭头、标题和共享菜单背景颜色不正确。看起来很乱。
- 工具栏的背景色已完全更改。
- 图像质量太差,可绘制的列表项目圆角不光滑。
- 未将我设置的布局背景作为父布局的背景。
我从根视图中截取屏幕快照。
推荐答案
bitmap.compress(Bitmap.CompressFormat.JPEG, 0, fos);
首先,您要将其另存为JPEG。JPEG是为照片设计的,您的屏幕截图不是照片。
其次,您将以品质因数0保存此参数。JPEG使用有损压缩算法,质量因数为0表示"请随意使此图像变得非常差,但请尽可能将其压缩"。我建议切换到:
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
对于包含您问题中所示内容的屏幕截图,PNG是一种更好的图像格式。我不认为PNG使用质量因子值;我输入100只是为了表明您想要尽可能好的质量。 这篇关于在Android中以编程方式截图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!