Skip to content

ComposeShadowsPlus: Elevate your Android Compose UI with stunning custom shadows

License

Notifications You must be signed in to change notification settings

GIGAMOLE/ComposeShadowsPlus

Repository files navigation

| Setup Guide | Report new issue

ComposeShadowsPlus

ComposeShadowsPlus is a powerful Android Compose library that empowers developers with the ability to easily create and customize stunning, high-quality shadows for their UI elements.

Features:

  • Android Compose custom shadows with offset, color, and spread support.
  • NativePaint.setShadowLayer(...) & View.LAYER_TYPE_SOFTWARE based custom shadow.
  • RenderScript & ScriptIntrinsicBlur based custom shadow.
  • Advanced sample app.

Sample App

RSBlur SoftLayer Elevation Alpha Content

Download or clone this repository to discover the sample app.

Setup

Add to the root build.gradle.kts:

allprojects {
    repositories {
        ...
        maven("https://jitpack.io")
    }
}

Add to the package build.gradle.kts:

dependencies {
    implementation("com.github.GIGAMOLE:ComposeShadowsPlus:{latest-version}")
}

Latest version: .

Also, it's possible to download the latest artifact from the releases page.

Guide

ComposeShadowsPlus provides two custom shadow Modifiers: RSBlurShadow and SoftLayerShadow.

ComposeShadowsPlus common params:

Param Description
radius The shadow radius.
color The shadow color.
shape The shadow shape.
spread The shadow positive or negative spread.
offset The shadow offset.
isAlphaContentClip Indicates if shadow is clipped for alpha content.

ShadowsPlusDefaults contains default values of custom shadows.

You can use Modifier.shadowsPlus(...) to set the custom shadows with the ShadowsPlusType enum.

RSBlurShadow

RSBlurShadow uses RenderScript and ScriptIntrinsicBlur to blur the shadow content to simulate the shadow.

RSBlurShadow more params:

Param Description
alignRadius The exponential align radius indicator.

To apply RSBlurShadow use Modifier.rsBlurShadow(...).

SoftLayerShadow

SoftLayerShadow uses NativePaint.setShadowLayer(...) to apply the native shadow layer to the shadow content.

To render SoftLayerShadow, Android devices with API < 28(P), need to use View.LAYER_TYPE_SOFTWARE. It's recommended to use SoftLayerShadowContainer to handle this automatically.

To apply SoftLayerShadow use Modifier.softLayerShadow(...).

Elevation

To use clipped shadow for alpha content with elevation(Android Compose .shadow(...)), wrap your content with AlphaContentElevationShadow.

If you want the clipped elevation as Modifier use shadow-gadgets library.

License

MIT License. See the LICENSE file for more details.

Credits

Special thanks to the GoDaddy for the amazing color picker library.

Author:

Basil Miller
gigamole53@gmail.com