# PatternPathMotion

Artifact: [androidx.transition:transition](https://developer.android.com/jetpack/androidx/releases/transition) [View Source](https://cs.android.com/search?q=file:androidx/transition/PatternPathMotion.java+class:androidx.transition.PatternPathMotion) Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/transition#1.0.0)

*** ** * ** ***


```
public class PatternPathMotion extends PathMotion
```

<br />

|---|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object.html) |||
| ↳ | [androidx.transition.PathMotion](https://developer.android.com/reference/androidx/transition/PathMotion) ||
|   | ↳ | [androidx.transition.PatternPathMotion](https://developer.android.com/reference/androidx/transition/PatternPathMotion) |

*** ** * ** ***

A PathMotion that takes a Path pattern and applies it to the separation between two points. The starting point of the Path will be moved to the origin and the end point will be scaled and rotated so that it matches with the target end point.

This may be used in XML as an element inside a transition.

```
<changeBounds>
    <patternPathMotion android:patternPathData="M0 0 L0 100 L100 100"/>
</changeBounds>
```

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/transition/PatternPathMotion#PatternPathMotion()()` Constructs a PatternPathMotion with a straight-line pattern. |
| `https://developer.android.com/reference/androidx/transition/PatternPathMotion#PatternPathMotion(android.graphics.Path)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html patternPath)` Creates a PatternPathMotion with the Path defining a pattern of motion between two coordinates. |
| `https://developer.android.com/reference/androidx/transition/PatternPathMotion#PatternPathMotion(android.content.Context,android.util.AttributeSet)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/content/Context.html context, @https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/util/AttributeSet.html attrs)` |

| ### Public methods |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html` | `https://developer.android.com/reference/androidx/transition/PatternPathMotion#getPath(float,float,float,float)(float startX, float startY, float endX, float endY)` Provide a Path to interpolate between two points `(startX, startY)` and `(endX, endY)`. |
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html` | `https://developer.android.com/reference/androidx/transition/PatternPathMotion#getPatternPath()()` Returns the Path defining a pattern of motion between two coordinates. |
| `void` | `https://developer.android.com/reference/androidx/transition/PatternPathMotion#setPatternPath(android.graphics.Path)(@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html patternPath)` Sets the Path defining a pattern of motion between two coordinates. |

## Public constructors

### PatternPathMotion

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/transition#1.0.0)

```
public PatternPathMotion()
```

Constructs a PatternPathMotion with a straight-line pattern.

### PatternPathMotion

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/transition#1.0.0)

```
public PatternPathMotion(@NonNull Path patternPath)
```

Creates a PatternPathMotion with the Path defining a pattern of motion between two coordinates. The pattern will be translated, rotated, and scaled to fit between the start and end points. The pattern must not be empty and must have the end point differ from the start point.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html patternPath` | A Path to be used as a pattern for two-dimensional motion. |

### PatternPathMotion

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/transition#1.0.0)

```
public PatternPathMotion(@NonNull Context context, @NonNull AttributeSet attrs)
```

## Public methods

### getPath

```
public @NonNull Path getPath(float startX, float startY, float endX, float endY)
```

Provide a Path to interpolate between two points `(startX, startY)` and `(endX, endY)`. This allows controlled curved motion along two dimensions.

| Parameters |
|---|---|
| `float startX` | The x coordinate of the starting point. |
| `float startY` | The y coordinate of the starting point. |
| `float endX` | The x coordinate of the ending point. |
| `float endY` | The y coordinate of the ending point. |

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html` | A Path along which the points should be interpolated. The returned Path must start at point `(startX, startY)`, typically using `https://developer.android.com/reference/android/graphics/Path.html#moveTo(float, float)` and end at `(endX, endY)`. |

### getPatternPath

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/transition#1.0.0)

```
public @NonNull Path getPatternPath()
```

Returns the Path defining a pattern of motion between two coordinates. The pattern will be translated, rotated, and scaled to fit between the start and end points. The pattern must not be empty and must have the end point differ from the start point.

| Returns |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html` | the Path defining a pattern of motion between two coordinates. |

### setPatternPath

Added in [1.0.0](https://developer.android.com/jetpack/androidx/releases/transition#1.0.0)

```
public void setPatternPath(@NonNull Path patternPath)
```

Sets the Path defining a pattern of motion between two coordinates. The pattern will be translated, rotated, and scaled to fit between the start and end points. The pattern must not be empty and must have the end point differ from the start point.

| Parameters |
|---|---|
| `@https://jspecify.dev/docs/api/org/jspecify/annotations/NonNull.html https://developer.android.com/reference/android/graphics/Path.html patternPath` | A Path to be used as a pattern for two-dimensional motion. |