Dp
Dp
value class Dp(val value: Float) : Comparable<Dp>
Dimension value representing device-independent pixels (dp). Component APIs specify their
dimensions such as line thickness in DP with Dp objects. Hairline (1 pixel) thickness may be
specified with Hairline, a dimension that take up no space. Dp are normally defined using dp,
which can be applied to Int, Double, and Float.
Drawing and Layout are done in pixels. To retrieve the pixel size of a Dp, use Density.toPx:
Functions
inline operator fun plus(other: Dp) = Dp(this.value + other.value)
Add two Dps together.
inline operator fun minus(other: Dp) = Dp(this.value - other.value)
Subtract a Dp from another one.
inline operator fun unaryMinus() = Dp(-value)
This is the same as multiplying the Dp by -1.0.
inline operator fun div(other: Float): Dp
Divide a Dp by a scalar.
inline operator fun div(other: Int): Dp
inline operator fun div(other: Dp): Float
Divide by another Dp to get a scalar.
inline operator fun times(other: Float): Dp
Multiply a Dp by a scalar.
inline operator fun times(other: Int): Dp
Companion Object
Properties
val Hairline = Dp(0f)
A dimension used to represent a hairline drawing element. Hairline elements take up no space, but will draw a single pixel, independent of the device's resolution and density.
val Infinity = Dp(Float.POSITIVE_INFINITY)
Infinite dp dimension.
val Unspecified = Dp(Float.NaN)
Constant that means unspecified Dp. Instead of comparing a Dp value to this constant,
consider using isSpecified and isUnspecified instead.
Code Examples
DpSample
@Composable
fun DpSample() {
Box(
Modifier.padding(
10.dp, // Int
10f.dp, // Float
20.0.dp, // Double
10.dp,
)
)
}
ToPxSample
@Composable
fun ToPxSample() {
val lineThickness = 6.dp
Canvas(Modifier.fillMaxSize()) {
val lineThicknessPx = lineThickness.toPx()
inset(lineThicknessPx / 2) { drawRect(Color.Red, style = Stroke(lineThicknessPx)) }
}
}
