原文地址:http://android.xsoftlab.net/training/printing/index.html
引言
Android用户会很频繁的浏览设备上的内容,但是有部分情况例外,当屏幕没有足够的方式可以分享信息的时候。那么可以打印Android应用上的内容便给用户提供了一种方式可以查看更大的内容载体,这内容可能来自你的APP或者另一个人所分享的内容。打印还应该允许用户可以创建并打印一段资料,不过该资料并不依靠一台设备,无论这台设备是否电量充足,或者是否有无线网络连接。
在Android 4.4及更高版本上,Android应用程序框架提供了一种服务,这种服务可以使Android应用程序直接打印图像或者文档。这节训练课程描述了如何使你的APP可以实现打印,打印包括图像、HTML页面,以及如何创建并打印自定义文档。
打印照片
拍照并分享出去可能是移动设备上最受欢迎的行为。如果你的程序可以拍照,显示或者允许用户来分享这些照片,你应该考虑可以在应用内部打印这些照片。Android Support Library对打印照片提供了一种简便的功能。该功能只需要少量的代码和一些打印布局的设置就可以实现。
这节课展示了如何使用v4支持库下的PrintHelper类来打印照片。
打印一张图片
Android Support Library PrintHelper类提供了一种简便的方式来打印图像。这个类拥有一个单一的布局选项,setScaleMode(),这个方法可以使你通过以下两种方式打印:
- SCALE_MODE_FIT 这个选项会调整图像的尺寸,以便使整个图像显示在打印页的内部。
- SCALE_MODE_FILL 这个选项会缩放图像的尺寸,以便使图像填充打印页的整个打印区域。选择了这个设置就意味着一些顶部和底部的部分或者左边和右边的部分不会被打印出来。这个选项是默认选项。
setScaleMode()方法的两种选项都会保持图像本身的纵横比。下面的代码展示了如何创建PrintHelper的实例,以及如何设置缩放选项和启动打印进程:
private void doPhotoPrint() {
PrintHelper photoPrinter = new PrintHelper(getActivity());
photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.droids);
photoPrinter.printBitmap("droids.jpg - test print", bitmap);
}
这个方法可以被ActionBar上的菜单点击事件所回调。要注意ActionBar上的所有菜单按钮并不总是被支持的(比如打印按钮),所以应该将这个按钮放置到浮动菜单中。有关更多信息,请参见Action Bar设计指南。
在printBitmap()方法被调用之后,不会再要求你的程序有进一步的行动。当Android用户打印界面出现后,会允许用户选择一台打印机以及打印选项。用户然后就可以打印这些图像或者取消这次的打印。如果用户选择了打印图像,那么一个打印工作便会被创建并且会在系统栏上出现一个打印通知。
如果你想在刚才的图像上添加一些附加内容,你必须构造一个打印文档。有关打印文档的更多信息,请参见课程Printing an HTML Document or Printing a Custom Document。