# CircularRevealHelper

[View Source](https://github.com/material-components/material-components-android/blob/1.14.0/lib/java/com/google/android/material/circularreveal/CircularRevealHelper.java)

*** ** * ** ***


```
public class CircularRevealHelper
```

<br />

*** ** * ** ***

Helper class to implement circular reveal functionality.

A `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget` subclass will call the corresponding method in this helper, which contains the actual implementations for circular reveal. This helper communicates back to the widget via the `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper.Delegate`.

## Summary

| ### Nested types |
|---|
| `public interface https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper.Delegate` Delegate interface to be implemented by the `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget` that owns this helper. |
| `@https://developer.android.com/reference/java/lang/annotation/Retention(value = https://developer.android.com/reference/java/lang/annotation/RetentionPolicy.SOURCE) public annotation https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper.Strategy` Which strategy this view should use to create the circular reveal effect. |

| ### Constants |
|---|---|
| `static final int` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#BITMAP_SHADER() = 0` Specify that this view should use a BitmapShader to create the circular reveal effect. |
| `static final int` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#CLIP_PATH() = 1` Specify that this view should use clipPath to create the circular reveal effect. |
| `static final int` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#REVEAL_ANIMATOR() = 2` Specify that this view should use createCircularReveal to create the circular reveal effect. |
| `static final int` | `@https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper.Strategy https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#STRATEGY() = 2` |

| ### Public fields |
|---|---|
| `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#revealInfo()` The circular reveal representation which affects how the current frame will be drawn. |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#CircularRevealHelper(com.google.android.material.circularreveal.CircularRevealHelper.Delegate)(https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper.Delegate delegate)` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#buildCircularRevealCache()()` |
| `void` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#destroyCircularRevealCache()()` |
| `void` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#draw(Canvas)(Canvas canvas)` |
| `Drawable` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#getCircularRevealOverlayDrawable()()` |
| `int` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#getCircularRevealScrimColor()()` |
| `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#getRevealInfo()()` |
| `boolean` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#isOpaque()()` |
| `void` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#setCircularRevealOverlayDrawable(Drawable)(Drawable drawable)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#setCircularRevealScrimColor(int)(int color)` |
| `void` | `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#setRevealInfo(com.google.android.material.circularreveal.CircularRevealWidget.RevealInfo)(https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo revealInfo)` Sets the reveal info, ensuring that a reveal circle with a large enough radius that covers the entire View has its `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#radius()` set to `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#INVALID_RADIUS()`. |

## Constants

### BITMAP_SHADER

```
public static final int BITMAP_SHADER = 0
```

Specify that this view should use a BitmapShader to create the circular reveal effect. The downside that it can only animate a static Bitmap.

### CLIP_PATH

```
public static final int CLIP_PATH = 1
```

Specify that this view should use clipPath to create the circular reveal effect.

### REVEAL_ANIMATOR

```
public static final int REVEAL_ANIMATOR = 2
```

Specify that this view should use createCircularReveal to create the circular reveal effect.

### STRATEGY

```
@CircularRevealHelper.Strategy
public static final int STRATEGY = 2
```

## Public fields

### revealInfo

```
public CircularRevealWidget.RevealInfo revealInfo
```

The circular reveal representation which affects how the current frame will be drawn.

A non-null RevealInfo is `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#isInvalid()` if a circular reveal is active and the circular reveal does not cover all four corners of this view. When the circular reveal is such that it covers the entire view, `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#radius()` should be set to `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#INVALID_RADIUS()`, making the RevealInfo invalid. An invalid RevealInfo is a optimization that allows `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealHelper#draw(Canvas)` to use the fastest code path.

## Public constructors

### CircularRevealHelper

```
public CircularRevealHelper(CircularRevealHelper.Delegate delegate)
```

## Public methods

### buildCircularRevealCache

```
public void buildCircularRevealCache()
```

### destroyCircularRevealCache

```
public void destroyCircularRevealCache()
```

### draw

```
public void draw(Canvas canvas)
```

### getCircularRevealOverlayDrawable

```
public Drawable getCircularRevealOverlayDrawable()
```

### getCircularRevealScrimColor

```
public int getCircularRevealScrimColor()
```

### getRevealInfo

```
public CircularRevealWidget.RevealInfo getRevealInfo()
```

### isOpaque

```
public boolean isOpaque()
```

### setCircularRevealOverlayDrawable

```
public void setCircularRevealOverlayDrawable(Drawable drawable)
```

### setCircularRevealScrimColor

```
public void setCircularRevealScrimColor(int color)
```

### setRevealInfo

```
public void setRevealInfo(CircularRevealWidget.RevealInfo revealInfo)
```

Sets the reveal info, ensuring that a reveal circle with a large enough radius that covers the entire View has its `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#radius()` set to `https://developer.android.com/reference/com/google/android/material/circularreveal/CircularRevealWidget.RevealInfo#INVALID_RADIUS()`.