Skip to main content

View To Image

[ Reference ]

Description

Utility for convert views to images. Works for any view and view groups, including layouts with all their children views.


Usage

Call the following function of the utility passing the configuration to generate the image of the view.

[ Configuration Parameters ]

val bitmap = ViewToImage.convert(
view = binding.rootLayout,
backgroundColor = getColorCompat(R.color.colorBackground),
backgroundCornerRadius = CornerRadius(10f).asDpToPx(context),
trimBorders = false,
padding = Padding(0f, 0f, 18f, 0f).asDpToPx(context),
margin = Margin(0f),
viewsToExclude = arrayListOf(
ExcludeView(binding.bottomSeparator, ExcludeMode.CROP_VERTICALLY),
ExcludeView(binding.termsAndPolicy, ExcludeMode.CROP_VERTICALLY),
ExcludeView(binding.openSourceLicenses, ExcludeMode.CROP_VERTICALLY),
ExcludeView(binding.closeBtn, ExcludeMode.CROP_VERTICALLY)
)
)

Considerations

> Padding and Margin

When converting the view to an image, a margin and padding can be specified, the margin is completely independent (and it will always be transparent), and the padding is applied within the specified background, for example:


> Exclude Children Views

If the view to be converted to an image is a view group as a layout, by default the generated image includes all children views, however, it is possible to pass a configuration to exclude certain children views in different ways.

ExcludeMode enum defines the ways in which the child view can be excluded from the image.

[ Reference ]


ExcludeView define the configuration to exclude a child view from the image.

[ Reference ]

note

The children views to exclude must belong directly to the view. For example, if the view is a Linear Layout, which has a Constraint Layout as child view, the Constraint Layout can be excluded, but not its children views.

To exemplify the ways in which a child view can be excluded, we will consider the following layout:

- Hide

ExcludeMode.HIDE

In this mode, the space occupied by the child view is replaced by the background color.

viewsToExclude = arrayListOf(
ExcludeView(demoButton, ExcludeMode.HIDE)
)

- Crop Vertically

ExcludeMode.CROP_VERTICALLY

In this mode, the image of the view is cropped vertically, deleting all the space occupied by the child view.

- Crop Horizontally

ExcludeMode.CROP_HORIZONTALLY

In this mode, the image of the view is cropped horizontally, deleting all the space occupied by the child view.

- Crop All

ExcludeMode.CROP_ALL

In this mode, the image of the view is cropped vertically and horizontally, deleting all the space occupied by the child view.