---
title: "Annotations with Transparency"
canonical_url: "https://www.nutrient.io/guides/android/samples/annotations-with-transparency-kotlin/"
md_url: "https://www.nutrient.io/guides/android/samples/annotations-with-transparency-kotlin.md"
last_updated: "2025-07-02T00:00:00.000Z"
description: "Create annotations with configurable alpha transparency."
---

# Annotations with Transparency

Create annotations with configurable alpha transparency.

[Get Started](https://www.nutrient.io/sdk/android/getting-started.md)

[All Samples](https://www.nutrient.io/guides/android/samples.md)

[Download](https://www.nutrient.io/guides/android/downloads.md)

[Launch Demo](https://www.nutrient.io/demo/)

---

```kotlin

/*
 *   Copyright © 2025-2026 PSPDFKit GmbH. All rights reserved.
 *
 *   The PSPDFKit Sample applications are licensed with a modified BSD license.
 *   Please see License for details. This notice may not be removed from this file.
 */
package com.pspdfkit.catalog.examples.kotlin

import android.content.Context
import android.graphics.Color
import android.graphics.PointF
import android.graphics.RectF
import android.net.Uri
import android.view.Menu
import android.view.MenuItem
import android.widget.Toast
import androidx.activity.viewModels
import androidx.annotation.ColorInt
import androidx.annotation.IntRange
import androidx.annotation.UiThread
import com.pspdfkit.annotations.Annotation
import com.pspdfkit.annotations.FreeTextAnnotation
import com.pspdfkit.annotations.HighlightAnnotation
import com.pspdfkit.annotations.InkAnnotation
import com.pspdfkit.annotations.LineAnnotation
import com.pspdfkit.annotations.NoteAnnotation
import com.pspdfkit.annotations.PolygonAnnotation
import com.pspdfkit.annotations.PolylineAnnotation
import com.pspdfkit.annotations.SquareAnnotation
import com.pspdfkit.annotations.StampAnnotation
import com.pspdfkit.catalog.R
import com.pspdfkit.catalog.SdkExample
import com.pspdfkit.catalog.tasks.ExtractAssetTask
import com.pspdfkit.catalog.tasks.ExtractAssetTask.OnDocumentExtractedListener
import com.pspdfkit.configuration.activity.PdfActivityConfiguration
import com.pspdfkit.document.PdfDocument
import com.pspdfkit.preferences.PSPDFKitPreferences
import com.pspdfkit.ui.PdfActivity
import com.pspdfkit.ui.PdfActivityIntentBuilder
import java.io.File
import kotlin.getValue

class AnnotationWithAlphaCreationExample(context: Context) :
    SdkExample(context, R.string.annotationWithAlphaCreationExampleTitle, R.string.annotationWithAlphaCreationExampleDescription) {
    override fun launchExample(context: Context, configuration: PdfActivityConfiguration.Builder) {
        configuration // Turn off saving, so we have the clean original document every time the example is
            // launched..autosaveEnabled(false).build()

        // The annotation creator written into newly created annotations. If not set, or set to null
        // a dialog will be shown when creating an annotation, asking you to enter a name.
        PSPDFKitPreferences.get(context).setAnnotationCreator("John Doe")

        // Extract the document from the assets. The launched activity will add annotations to that
        // document.
        ExtractAssetTask.extract(
            WELCOME_DOC,
            title,
            context,
            OnDocumentExtractedListener { documentFile: File? ->
                val intent =
                    PdfActivityIntentBuilder.fromUri(context, Uri.fromFile(documentFile)).configuration(configuration.build()).activityClass(AnnotationWithAlphaCreationActivity::class.java).build()
                context.startActivity(intent)
            },
        )
    }
}

class AnnotationWithAlphaCreationActivity : PdfActivity() {
    private val viewModel: AnnotationCreationViewModel by viewModels()

    override fun onCreateOptionsMenu(menu: Menu): Boolean {
        super.onCreateOptionsMenu(menu)
        menu.add(0, ADD_STAMP_ITEM_ID, 0, "Add Stamp")
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        if (item.itemId == ADD_STAMP_ITEM_ID) {
            createStamp()
            return true
        } else {
            return super.onOptionsItemSelected(item)
        }
    }

    @UiThread
    override fun onDocumentLoaded(document: PdfDocument) {
        viewModel.createObjects {
            val pageIndex = 0
            createNoteAnnotation(pageIndex)
            createHighlightAnnotation(pageIndex, "Nutrient", Color.YELLOW)
            createHighlightAnnotation(pageIndex, "Welcome", Color.GREEN)
            createFreeTextAnnotation(pageIndex)
            createInkAnnotation(pageIndex)
            createLineAnnotation(pageIndex)
            createPolyline(pageIndex)
            createPolygon(pageIndex)
            createSquareAnnotation(pageIndex)
        }
    }

    private fun createStamp() {
        val document = document?: return
        val pageIndex = pageIndex
        if (pageIndex < 0) return

        val pageSize = document.getPageSize(pageIndex)
        val halfWidth = pageSize.width / 2
        val halfHeight = pageSize.height / 2
        val rect = RectF(halfWidth - 100, halfHeight + 100, halfWidth + 100, halfHeight - 100)

        val stamp = StampAnnotation(pageIndex, rect, "STAMP_SUBJECT")
        val color = Color.rgb(255, 0, 0)
        stamp.color = color
        stamp.fillColor = Color.rgb(255, 255, 255)
        stamp.alpha = ALPHA

        addAnnotationToPage(stamp)
    }

    private fun createNoteAnnotation(@IntRange(from = 0) pageIndex: Int) {
        val pageRect = RectF(180f, 692f, 212f, 660f)
        val contents = "This is note annotation was created from code."
        val icon = NoteAnnotation.CROSS
        val color = Color.GREEN

        // Create the annotation, and set its properties.
        val noteAnnotation = NoteAnnotation(pageIndex, pageRect, contents, icon)
        noteAnnotation.color = color
        noteAnnotation.alpha = ALPHA

        addAnnotationToPage(noteAnnotation)
    }

    private fun createHighlightAnnotation(@IntRange(from = 0) pageIndex: Int, highlightedText: String, @ColorInt color: Int) {
        val document = document
        // Find the provided text on the current page.
        val textPosition = document!!.getPageText(pageIndex).indexOf(highlightedText)

        if (textPosition >= 0) {
            // To create a text highlight, extract the rects of the text to highlight and pass them
            // to the annotation constructor.
            val textRects =
                document.getPageTextRects(pageIndex, textPosition, highlightedText.length, true)
            val highlightAnnotation = HighlightAnnotation(pageIndex, textRects)

            highlightAnnotation.color = color
            highlightAnnotation.alpha = ALPHA

            addAnnotationToPage(highlightAnnotation)
        } else {
            Toast.makeText(this, "Can't find the text to highlight.", Toast.LENGTH_SHORT).show()
        }
    }

    private fun createInkAnnotation(@IntRange(from = 0) pageIndex: Int) {
        val inkAnnotation = InkAnnotation(pageIndex)
        inkAnnotation.color = Color.rgb(255, 165, 0) // Orange
        inkAnnotation.alpha = ALPHA
        inkAnnotation.lineWidth = 10f

        // Create a line from a list of points.
        val line: MutableList<PointF> = ArrayList()
        var x = 120
        while (x < 720) {
            val y = if (((x % 120) == 0)) 400 else 350
            line.add(PointF(x.toFloat(), y.toFloat()))
            x += 60
        }

        // Ink annotations can hold multiple lines. This example only uses a single line.
        inkAnnotation.lines = listOf<List<PointF>>(line)

        addAnnotationToPage(inkAnnotation)
    }

    private fun createLineAnnotation(@IntRange(from = 0) pageIndex: Int) {
        val lineAnnotation = LineAnnotation(pageIndex, PointF(400f, 100f), PointF(500f, 100f))

        lineAnnotation.color = Color.CYAN
        lineAnnotation.alpha = ALPHA
        lineAnnotation.lineWidth = 20f

        addAnnotationToPage(lineAnnotation)
    }

    private fun createPolyline(@IntRange(from = 0) pageIndex: Int) {
        val polylineAnnotation =
            PolylineAnnotation(
                pageIndex,
                listOf(PointF(400f, 200f), PointF(500f, 200f), PointF(500f, 150f)),
            )

        polylineAnnotation.alpha = ALPHA
        polylineAnnotation.color = Color.RED
        polylineAnnotation.lineWidth = 20f

        addAnnotationToPage(polylineAnnotation)
    }

    private fun createPolygon(@IntRange(from = 0) pageIndex: Int) {
        val polygonAnnotation =
            PolygonAnnotation(
                pageIndex,
                listOf(PointF(600f, 600f), PointF(600f, 500f), PointF(500f, 550f)),
            )

        polygonAnnotation.alpha = ALPHA
        polygonAnnotation.color = Color.RED
        polygonAnnotation.fillColor = Color.BLUE
        polygonAnnotation.lineWidth = 20f

        addAnnotationToPage(polygonAnnotation)
    }

    private fun createSquareAnnotation(@IntRange(from = 0) pageIndex: Int) {
        val squareAnnotation = SquareAnnotation(pageIndex, RectF(0f, 100f, 100f, 0f))

        squareAnnotation.color = Color.RED
        squareAnnotation.fillColor = Color.RED
        squareAnnotation.alpha = ALPHA

        addAnnotationToPage(squareAnnotation)
    }

    private fun createFreeTextAnnotation(@IntRange(from = 0) pageIndex: Int) {
        val contents = "Add text to pages using FreeTextAnnotations"
        val pageRect = RectF(100f, 980f, 320f, 930f)

        val freeTextAnnotation = FreeTextAnnotation(pageIndex, pageRect, contents)
        freeTextAnnotation.color = Color.BLUE
        freeTextAnnotation.alpha = ALPHA
        freeTextAnnotation.textSize = 20f

        addAnnotationToPage(freeTextAnnotation)
    }

    /** Adds annotation to page asynchronously, refreshing rendering in all UI components.  */
    private fun addAnnotationToPage(annotation: Annotation) {
        pdfFragment?.addAnnotationToPage(annotation, false)
    }

    companion object {
        private const val ADD_STAMP_ITEM_ID = 1234
        private const val ALPHA = 0.4f
    }
}

```

This code sample is an example that illustrates how to use our SDK. Please adapt it to your specific use case.

---

## Related pages

- [Add LTV to Existing Signature](/guides/android/samples/add-ltv-to-existing-signature-kotlin.md)
- [AES Encrypted File](/guides/android/samples/aes-encrypted-file-java.md)
- [AI Assistant (Multiple Documents, Compose)](/guides/android/samples/ai-assistant-multiple-documents-compose-kotlin.md)
- [AI Assistant (Multiple Documents, ViewPager)](/guides/android/samples/ai-assistant-multiple-documents-viewpager-kotlin.md)
- [AI Assistant (Single Document)](/guides/android/samples/ai-assistant-single-document-kotlin.md)
- [Annotation Configuration](/guides/android/samples/annotation-configuration-kotlin.md)
- [Annotation Creation](/guides/android/samples/annotation-creation-kotlin.md)
- [Annotation Flags](/guides/android/samples/annotation-flags-kotlin.md)
- [Annotation Overlay](/guides/android/samples/annotation-overlay-java.md)
- [Annotation Rendering](/guides/android/samples/annotation-rendering-kotlin.md)
- [Annotation Selection Styling](/guides/android/samples/annotation-selection-styling-kotlin.md)
- [Annotation Sidebar](/guides/android/samples/annotation-sidebar-kotlin.md)
- [Application Policy](/guides/android/samples/application-policy-kotlin.md)
- [Bookmark Highlighting](/guides/android/samples/bookmark-highlighting-kotlin.md)
- [Compose Image Document](/guides/android/samples/compose-image-document-kotlin.md)
- [Compose Navigation](/guides/android/samples/compose-navigation-kotlin.md)
- [Construction Floor Plan](/guides/android/samples/construction-floor-plan-kotlin.md)
- [Custom ActionBar Actions](/guides/android/samples/custom-actionbar-actions-kotlin.md)
- [Custom Activity Form Editing](/guides/android/samples/custom-activity-form-editing-java.md)
- [Custom Activity Toolbars](/guides/android/samples/custom-activity-toolbars-java.md)
- [Custom Annotation Creation Toolbar](/guides/android/samples/custom-annotation-creation-toolbar-java.md)
- [Custom Annotation Inspector](/guides/android/samples/custom-annotation-inspector-java.md)
- [Custom Data Provider](/guides/android/samples/custom-data-provider-kotlin.md)
- [Custom Download Dialog](/guides/android/samples/custom-download-dialog-java.md)
- [Custom Electronic Signature](/guides/android/samples/custom-electronic-signature-java.md)
- [Custom Form Highlight Color](/guides/android/samples/custom-form-highlight-color-java.md)
- [Custom Layout](/guides/android/samples/custom-layout-kotlin.md)
- [Custom Main Toolbar](/guides/android/samples/custom-main-toolbar-kotlin.md)
- [Custom Note Hinter](/guides/android/samples/custom-note-hinter-kotlin.md)
- [Custom Outline Provider](/guides/android/samples/custom-outline-provider-kotlin.md)
- [Custom Page Templates](/guides/android/samples/custom-page-templates-java.md)
- [Custom Search UI (Compose)](/guides/android/samples/custom-search-ui-compose-kotlin.md)
- [Custom Search UI (Views)](/guides/android/samples/custom-search-ui-views-java.md)
- [Custom Sharing Dialog](/guides/android/samples/custom-sharing-dialog-java.md)
- [Custom Sharing Menu](/guides/android/samples/custom-sharing-menu-java.md)
- [Custom Stamp Annotations](/guides/android/samples/custom-stamp-annotations-java.md)
- [Custom Toolbar Grouping](/guides/android/samples/custom-toolbar-grouping-java.md)
- [Digital Signature (Basic)](/guides/android/samples/digital-signature-basic-kotlin.md)
- [Digital Signature (Manual)](/guides/android/samples/digital-signature-manual-kotlin.md)
- [Digital Signature (Third-Party)](/guides/android/samples/digital-signature-third-party-kotlin.md)
- [Digital Signature (Two-Step)](/guides/android/samples/digital-signature-two-step-kotlin.md)
- [Disabled Annotation Property](/guides/android/samples/disabled-annotation-property-java.md)
- [Document Comparison](/guides/android/samples/document-comparison-kotlin.md)
- [Document Download](/guides/android/samples/document-download-kotlin.md)
- [Document from Canvas](/guides/android/samples/document-from-canvas-kotlin.md)
- [Document Processing](/guides/android/samples/document-processing-kotlin.md)
- [Document Sharing](/guides/android/samples/document-sharing-java.md)
- [Document Switcher](/guides/android/samples/document-switcher-java.md)
- [DocumentView Composable](/guides/android/samples/documentview-composable-kotlin.md)
- [DocumentView in a Dialog](/guides/android/samples/documentview-in-a-dialog-kotlin.md)
- [Download Progress](/guides/android/samples/download-progress-kotlin.md)
- [Dynamic Pages on Scroll](/guides/android/samples/dynamic-pages-on-scroll-kotlin.md)
- [E-Learning](/guides/android/samples/e-learning-kotlin.md)
- [Electronic + Digital Signing](/guides/android/samples/electronic-digital-signing-kotlin.md)
- [External Document](/guides/android/samples/external-document-kotlin.md)
- [File Annotation Creation](/guides/android/samples/file-annotation-creation-kotlin.md)
- [Filterable Thumbnail Grid](/guides/android/samples/filterable-thumbnail-grid-kotlin.md)
- [Form Click Intercept (Compose)](/guides/android/samples/form-click-intercept-compose-kotlin.md)
- [Form Creation](/guides/android/samples/form-creation-kotlin.md)
- [Form Filling](/guides/android/samples/form-filling-kotlin.md)
- [Forms with JavaScript](/guides/android/samples/forms-with-javascript-kotlin.md)
- [Fragment Runtime Configuration](/guides/android/samples/fragment-runtime-configuration-kotlin.md)
- [Generate PDF Report](/guides/android/samples/generate-pdf-report-kotlin.md)
- [Hide and Reveal Areas](/guides/android/samples/hide-and-reveal-areas-kotlin.md)
- [HTML-to-PDF Conversion](/guides/android/samples/html-to-pdf-conversion-kotlin.md)
- [Image Document](/guides/android/samples/image-document-kotlin.md)
- [Inline Multimedia](/guides/android/samples/inline-multimedia-kotlin.md)
- [Inline Search](/guides/android/samples/inline-search-java.md)
- [Instant Document JSON](/guides/android/samples/instant-document-json-kotlin.md)
- [Instant JSON Attachment](/guides/android/samples/instant-json-attachment-kotlin.md)
- [JavaScript Actions](/guides/android/samples/javascript-actions-kotlin.md)
- [JavaScript Calculator](/guides/android/samples/javascript-calculator-kotlin.md)
- [JavaScript Form Filling](/guides/android/samples/javascript-form-filling-kotlin.md)
- [Kiosk Grid](/guides/android/samples/kiosk-grid-kotlin.md)
- [LTV Signature](/guides/android/samples/ltv-signature-kotlin.md)
- [Measurement Tools](/guides/android/samples/measurement-tools-kotlin.md)
- [Memory Pressure Recovery](/guides/android/samples/memory-pressure-recovery-kotlin.md)
- [Merge Documents](/guides/android/samples/merge-documents-kotlin.md)
- [Multimedia Annotations](/guides/android/samples/multimedia-annotations-kotlin.md)
- [Multiple Documents (Compose Pager)](/guides/android/samples/multiple-documents-compose-pager-kotlin.md)
- [OCR](/guides/android/samples/ocr-kotlin.md)
- [Overlay Views](/guides/android/samples/overlay-views-kotlin.md)
- [Overlay Visibility](/guides/android/samples/overlay-visibility-kotlin.md)
- [Password Protected PDF](/guides/android/samples/password-protected-pdf-kotlin.md)
- [PDF from Image](/guides/android/samples/pdf-from-image-kotlin.md)
- [PdfFragment](/guides/android/samples/pdffragment-kotlin.md)
- [PdfUiFragment](/guides/android/samples/pdfuifragment-kotlin.md)
- [Playground](/guides/android/samples/playground-kotlin.md)
- [Popup Toolbar Customization](/guides/android/samples/popup-toolbar-customization-kotlin.md)
- [Programmatic Zoom](/guides/android/samples/programmatic-zoom-kotlin.md)
- [Reader View](/guides/android/samples/reader-view-kotlin.md)
- [Remote URL](/guides/android/samples/remote-url-kotlin.md)
- [Runtime Configuration](/guides/android/samples/runtime-configuration-kotlin.md)
- [Scientific Paper](/guides/android/samples/scientific-paper-kotlin.md)
- [Screen Reader](/guides/android/samples/screen-reader-java.md)
- [Search Indexing](/guides/android/samples/search-indexing-kotlin.md)
- [Selection Customization](/guides/android/samples/selection-customization-java.md)
- [Signature Parcelize](/guides/android/samples/signature-parcelize-kotlin.md)
- [Signature Storage Database](/guides/android/samples/signature-storage-database-kotlin.md)
- [Sound Extraction](/guides/android/samples/sound-extraction-kotlin.md)
- [Split View](/guides/android/samples/split-view-java.md)
- [Tabbed Documents](/guides/android/samples/tabbed-documents-kotlin.md)
- [Tabbed Documents (Persistent)](/guides/android/samples/tabbed-documents-persistent-kotlin.md)
- [Text Field Suggestions](/guides/android/samples/text-field-suggestions-kotlin.md)
- [Thumbnail Bar Modes](/guides/android/samples/thumbnail-bar-modes-kotlin.md)
- [Try Instant](/guides/android/samples/try-instant-kotlin.md)
- [UI View Modes](/guides/android/samples/ui-view-modes-kotlin.md)
- [Vertical Scrollbar](/guides/android/samples/vertical-scrollbar-java.md)
- [Watermarks](/guides/android/samples/watermarks-kotlin.md)
- [XFDF Import/Export](/guides/android/samples/xfdf-import-export-kotlin.md)

