Фотосъемка и обмен фотографиями – одни из самых популярных функций мобильных устройств. Если ваше приложение делает фотографии, отображает их или позволяет пользователям делиться изображениями, вам следует рассмотреть возможность включения печати этих изображений в вашем приложении. Библиотека поддержки Android предоставляет удобную функцию для печати изображений с минимальным количеством кода и простым набором параметров макета печати.
В этом уроке показано, как напечатать изображение с помощью класса PrintHelper библиотеки поддержки v4.
Как распечатать изображение
Класс PrintHelper библиотеки поддержки Android позволяет легко печатать изображения. В классе есть один вариант макета – setScaleMode(), который позволяет печатать с одним из двух вариантов:
SCALE_MODE_FIT– изображение будет уменьшено так, чтобы оно полностью помещалось в области печати.SCALE_MODE_FILL– изображение масштабируется так, чтобы заполнить всю область печати. При выборе этого параметра некоторые части верхнего и нижнего или левого и правого краев изображения не печатаются. Этот вариант используется по умолчанию, если вы не задали режим масштабирования.
Оба варианта масштабирования для setScaleMode() сохраняют существующее соотношение сторон изображения. В следующем примере кода показано, как создать экземпляр класса PrintHelper, задать параметр масштабирования и запустить процесс печати:
Kotlin
private fun doPhotoPrint() { activity?.also { context -> PrintHelper(context).apply { scaleMode = PrintHelper.SCALE_MODE_FIT }.also { printHelper -> val bitmap = BitmapFactory.decodeResource(resources, R.drawable.droids) printHelper.printBitmap("droids.jpg - test print", bitmap) } } }
Java
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); }
Этот метод можно вызвать как действие для пункта меню. Обратите внимание, что пункты меню для действий, которые поддерживаются не всегда (например, печать), должны быть помещены в дополнительное меню. Дополнительную информацию можно найти в руководстве по дизайну панели действий.
После вызова метода printBitmap() никаких дополнительных действий от вашего приложения не требуется. Появится пользовательский интерфейс печати Android, в котором пользователь может выбрать принтер и параметры печати. После этого пользователь может распечатать изображение или отменить действие. Если пользователь решит напечатать изображение, будет создано задание печати, а в системной строке появится уведомление о печати.
Если вы хотите включить в распечатки дополнительный контент, помимо изображения, вам необходимо создать документ для печати. Информацию о создании документов для печати можно найти в уроках Печать HTML-документа и Печать пользовательского документа.