Added in API level 11

DragShadowBuilder


open class DragShadowBuilder
kotlin.Any
   ↳ android.view.View.DragShadowBuilder

Creates an image that the system displays during the drag and drop operation. This is called a "drag shadow". The default implementation for a DragShadowBuilder based on a View returns an image that has exactly the same appearance as the given View. The default also positions the center of the drag shadow directly under the touch point. If no View is provided (the constructor with no parameters is used), and onProvideShadowMetrics() and onDrawShadow() are not overridden, then the default is an invisible drag shadow.

You are not required to use the View you provide to the constructor as the basis of the drag shadow. The onDrawShadow() method allows you to draw anything you want as the drag shadow.

You pass a DragShadowBuilder object to the system when you start the drag. The system calls onProvideShadowMetrics() to get the size and position of the drag shadow. It uses this data to construct a android.graphics.Canvas object, then it calls onDrawShadow() so that your application can draw the shadow image in the Canvas.

Summary

Public constructors

Constructs a shadow image builder based on a View.

Construct a shadow builder object with no associated View.

Public methods
View!

Returns the View object that had been passed to the DragShadowBuilder(android.view.View) constructor.

open Unit

Draws the shadow image.

open Unit
onProvideShadowMetrics(outShadowSize: Point!, outShadowTouchPoint: Point!)

Provides the metrics for the shadow image.

Public constructors

DragShadowBuilder

Added in API level 11
DragShadowBuilder(view: View!)

Constructs a shadow image builder based on a View. By default, the resulting drag shadow will have the same appearance and dimensions as the View, with the touch point over the center of the View.

Parameters
view View!: A View. Any View in scope can be used.

DragShadowBuilder

Added in API level 11
DragShadowBuilder()

Construct a shadow builder object with no associated View. This constructor variant is only useful when the onProvideShadowMetrics(android.graphics.Point,android.graphics.Point) and onDrawShadow(android.graphics.Canvas) methods are also overridden in order to supply the drag shadow's dimensions and appearance without reference to any View object.

Public methods

getView

Added in API level 11
fun getView(): View!

Returns the View object that had been passed to the DragShadowBuilder(android.view.View) constructor. If that View parameter was null or if the DragShadowBuilder() constructor was used to instantiate the builder object, this method will return null.

Return
View! The View object associate with this builder object.

onDrawShadow

Added in API level 11
open fun onDrawShadow(canvas: Canvas): Unit

Draws the shadow image. The system creates the android.graphics.Canvas object based on the dimensions it received from the onProvideShadowMetrics(android.graphics.Point,android.graphics.Point) callback.

Parameters
canvas Canvas: A android.graphics.Canvas object in which to draw the shadow image. This value cannot be null.

onProvideShadowMetrics

Added in API level 11
open fun onProvideShadowMetrics(
    outShadowSize: Point!,
    outShadowTouchPoint: Point!
): Unit

Provides the metrics for the shadow image. These include the dimensions of the shadow image, and the point within that shadow that should be centered under the touch location while dragging.

The default implementation sets the dimensions of the shadow to be the same as the dimensions of the View itself and centers the shadow under the touch point.

Parameters
outShadowSize Point!: A android.graphics.Point containing the width and height of the shadow image. Your application must set android.graphics.Point#x to the desired width and must set android.graphics.Point#y to the desired height of the image. Since Android P, the width and height must be positive values.
outShadowTouchPoint Point!: A android.graphics.Point for the position within the shadow image that should be underneath the touch point during the drag and drop operation. Your application must set android.graphics.Point#x to the X coordinate and android.graphics.Point#y to the Y coordinate of this position.