Печать фотографий

Фотосъемка и обмен фотографиями – одни из самых популярных функций мобильных устройств. Если ваше приложение делает фотографии, отображает их или позволяет пользователям делиться изображениями, вам следует рассмотреть возможность включения печати этих изображений в вашем приложении. Библиотека поддержки 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-документа и Печать пользовательского документа.