# ExpandableTransformationBehavior

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

*** ** * ** ***


```
public abstract class ExpandableTransformationBehavior extends ExpandableBehavior
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) |||
| ↳ | [com.google.android.material.transformation.ExpandableBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior) ||
|   | ↳ | [com.google.android.material.transformation.ExpandableTransformationBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior) |

Known direct subclasses [FabTransformationBehavior](https://developer.android.com/reference/com/google/android/material/transformation/FabTransformationBehavior), [FabTransformationScrimBehavior](https://developer.android.com/reference/com/google/android/material/transformation/FabTransformationScrimBehavior)

|---|---|
| `https://developer.android.com/reference/com/google/android/material/transformation/FabTransformationBehavior` | **This class is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/transition/MaterialContainerTransform` instead. <br /> |
| `https://developer.android.com/reference/com/google/android/material/transformation/FabTransformationScrimBehavior` | **This class is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/transition/MaterialContainerTransform` instead. <br /> |

Known indirect subclasses [FabTransformationSheetBehavior](https://developer.android.com/reference/com/google/android/material/transformation/FabTransformationSheetBehavior)

|---|---|
| `https://developer.android.com/reference/com/google/android/material/transformation/FabTransformationSheetBehavior` | **This class is deprecated.** Use `https://developer.android.com/reference/com/google/android/material/transition/MaterialContainerTransform` instead. <br /> |

*** ** * ** ***

> [!CAUTION]
> **This class is deprecated.**   
>
> Use `https://developer.android.com/reference/com/google/android/material/transition/MaterialContainerTransform` instead.

Base Behavior for views that can react to an `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget`'s `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget#setExpanded(boolean)` state changes by transforming the ExpandableWidget into itself.

Behaviors should override `https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#onCreateExpandedStateChangeAnimation(View,View,boolean,boolean)` to return an animation

## Summary

| ### Public constructors |
|---|
| `[ExpandableTransformationBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#ExpandableTransformationBehavior())()` |
| `[ExpandableTransformationBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#ExpandableTransformationBehavior(Context,AttributeSet))(Context context, AttributeSet attrs)` |

| ### Protected methods |
|---|---|
| `abstract AnimatorSet` | `[onCreateExpandedStateChangeAnimation](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#onCreateExpandedStateChangeAnimation(View,View,boolean,boolean))( View dependency, View child, boolean expanded, boolean isAnimating )` Creates an AnimatorSet to be played for this expanded state change. |
| `boolean` | `[onExpandedStateChange](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#onExpandedStateChange(View,View,boolean,boolean))( View dependency, View child, boolean expanded, boolean animated )` Reacts to a change in expanded state. |

| ### Inherited methods |
|---|
| From [com.google.android.material.transformation.ExpandableBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior) |---|---| | `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget` | `[findExpandableWidget](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior#findExpandableWidget(CoordinatorLayout,View))(CoordinatorLayout parent, View child)` | | `static T` | `<T extends https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior> [from](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior#from(View,java.lang.Class<T>))(View view, https://developer.android.com/reference/java/lang/Class<T> klass)` A utility function to get the `https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior` attached to the `view`. | | `abstract boolean` | `[layoutDependsOn](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior#layoutDependsOn(CoordinatorLayout,View,View))(CoordinatorLayout parent, View child, View dependency)` | | `boolean` | `[onDependentViewChanged](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior#onDependentViewChanged(CoordinatorLayout,View,View))( CoordinatorLayout parent, View child, View dependency )` | | `boolean` | `[onLayoutChild](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableBehavior#onLayoutChild(CoordinatorLayout,View,int))(CoordinatorLayout parent, View child, int layoutDirection)` | |

## Public constructors

### ExpandableTransformationBehavior

```
public [ExpandableTransformationBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#ExpandableTransformationBehavior())()
```

### ExpandableTransformationBehavior

```
public [ExpandableTransformationBehavior](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#ExpandableTransformationBehavior(Context,AttributeSet))(Context context, AttributeSet attrs)
```

## Protected methods

### onCreateExpandedStateChangeAnimation

```
protected abstract AnimatorSet [onCreateExpandedStateChangeAnimation](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#onCreateExpandedStateChangeAnimation(View,View,boolean,boolean))(
    View dependency,
    View child,
    boolean expanded,
    boolean isAnimating
)
```

Creates an AnimatorSet to be played for this expanded state change.

If the new `expanded` state is true, the `dependency` should be hidden and the `child` should be shown.

If the new `expanded` state is false, the `dependency` should be shown and the `child` should be hidden.

| Parameters |
|---|---|
| `View dependency` | the `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget` dependency containing the new expanded state. |
| `View child` | the view that should react to the change in expanded state. |
| `boolean expanded` | the new expanded state. |
| `boolean isAnimating` | whether this state change occurred while a previous state change was still |

### onExpandedStateChange

```
protected boolean [onExpandedStateChange](https://developer.android.com/reference/com/google/android/material/transformation/ExpandableTransformationBehavior#onExpandedStateChange(View,View,boolean,boolean))(
    View dependency,
    View child,
    boolean expanded,
    boolean animated
)
```

Reacts to a change in expanded state. This callback is guaranteed to be called only once even if `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget#setExpanded(boolean)` is called multiple times with the same value. Upon configuration change, this callback is called with `animated` set to false.

| Parameters |
|---|---|
| `View dependency` | the `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget` dependency containing the new expanded state. |
| `View child` | the view that should react to the change in expanded state. |
| `boolean expanded` | the new expanded state. |
| `boolean animated` | true if `https://developer.android.com/reference/com/google/android/material/expandable/ExpandableWidget#setExpanded(boolean)` was called, false if restoring from a configuration change. |

| Returns |
|---|---|
| `boolean` | true if the Behavior changed the child view's size or position, false otherwise. |