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 Dp
s 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)) }
}
}