UI āϰāϚāύāĻž āĻ•āϰ⧁āύ

āϞ⧇āφāωāϟ, āĻ…āĻ™ā§āĻ•āύ āĻāĻŦāĻ‚ āχāύāĻĒ⧁āϟ āϏāĻš āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽā§āĻĒā§‹āϜ UI āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤
āϏāĻ°ā§āĻŦāĻļ⧇āώ āφāĻĒāĻĄā§‡āϟ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϰāĻŋāϞāĻŋāϜ āĻĒā§āϰāĻžāĻ°ā§āĻĨā§€ āĻŽā§āĻ•ā§āϤāĻŋ āĻŦāĻŋāϟāĻž āϰāĻŋāϞāĻŋāϜ āφāϞāĻĢāĻž āϰāĻŋāϞāĻŋāϜ
āφāĻ—āĻ¸ā§āϟ 27, 2025 1.9.0 - - 1.10.0-āφāϞāĻĢāĻž02

āĻ—āĻ āύ

āĻ•āĻŽā§āĻĒā§‹āϜ āĻšāϞ androidx āĻŽāĻ§ā§āϝ⧇ 7āϟāĻŋ Maven Group Id-āĻāϰ āϏāĻ‚āĻŽāĻŋāĻļā§āϰāĻŖāĨ¤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ—ā§‹āĻˇā§āĻ ā§€āϤ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻžāϰ āĻāĻ•āϟāĻŋ āϞāĻ•ā§āĻˇā§āϝāϝ⧁āĻ•ā§āϤ āωāĻĒāϏ⧇āϟ āϰāϝāĻŧ⧇āϛ⧇, āĻĒā§āϰāϤāĻŋāϟāĻŋāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϰāĻŋāϞāĻŋāϜ āύ⧋āĻŸā§‡āϰ āϏ⧇āϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāχ āĻŸā§‡āĻŦāĻŋāϞāϟāĻŋ āϰāĻŋāϞāĻŋāϜ āύ⧋āĻŸā§‡āϰ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϏ⧇āĻŸā§‡āϰ āĻ—ā§āϰ⧁āĻĒ āĻāĻŦāĻ‚ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧇āĨ¤

āĻ—ā§āϰ⧁āĻĒ āĻŦāĻ°ā§āĻŖāύāĻž
compose.animation āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻžāϕ⧇ āϏāĻŽā§ƒāĻĻā§āϧ āĻ•āϰāϤ⧇ āϤāĻžāĻĻ⧇āϰ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āϰāϚāύāĻž āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϗ⧁āϞāĻŋāϤ⧇ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύāĨ¤
compose.compiler @Composable āĻĢāĻžāĻ‚āĻļāύ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻ°ā§āĻŽ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ Kotlin āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĒā§āϞāĻžāĻ—āχāύ āĻĻāĻŋāϝāĻŧ⧇ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāĻžāύ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤
compose.foundation āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚ āĻŦā§āϞāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āϏāĻš āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āĻ•āĻŽā§āĻĒā§‹āϜ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āϞāĻŋāϖ⧁āύ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĄāĻŋāϜāĻžāχāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϟ⧁āĻ•āϰāĻž āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰ⧁āύāĨ¤
compose.material āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĄāĻŋāϜāĻžāχāύ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻ¸ā§āϤ⧁āϤ āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āĻ•āĻŽā§āĻĒā§‹āϜ UI āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύāĨ¤ āĻāϟāĻŋ āϰāϚāύāĻžāϰ āωāĻšā§āϚ āĻ¸ā§āϤāϰ⧇āϰ āĻāĻ¨ā§āĻŸā§āϰāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ, āϝāĻž www.material.io-āϤ⧇ āĻŦāĻ°ā§āĻŖāĻŋāϤ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞ⧇ āĻāĻŽāύ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎
compose.material3 āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĄāĻŋāϜāĻžāχāύ 3 āωāĻĒāĻžāĻĻāĻžāύ āϏāĻš āĻœā§‡āϟāĻĒā§āϝāĻžāĻ• āĻ•āĻŽā§āĻĒā§‹āϜ UI āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ, āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĄāĻŋāϜāĻžāχāύ⧇āϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻŦāĻŋāĻŦāĻ°ā§āϤāύāĨ¤ āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ 3-āĻ āφāĻĒāĻĄā§‡āĻŸā§‡āĻĄ āĻĨāĻŋāĻŽāĻŋāĻ‚ āĻāĻŦāĻ‚ āωāĻĒāĻžāĻĻāĻžāύ āĻāĻŦāĻ‚ āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āχāω āĻŦā§āϝāĻ•ā§āϤāĻŋāĻ—āϤāĻ•āϰāĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϰāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻŽāύ āĻĄāĻžāϝāĻŧāύāĻžāĻŽāĻŋāĻ• āĻ•āĻžāϞāĻžāϰ, āĻāĻŦāĻ‚ āύāϤ⧁āύ Android 12 āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻ¸ā§āϟāĻžāχāϞ āĻāĻŦāĻ‚ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ UI āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
compose.runtime āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āϰ āĻĒā§āϰ⧋āĻ—ā§āϰāĻžāĻŽāĻŋāĻ‚ āĻŽāĻĄā§‡āϞ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‡āϟ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āĻŽā§ŒāϞāĻŋāĻ• āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚ āĻŦā§āϞāĻ• āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒā§‹āϜ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĒā§āϞāĻžāĻ—āχāύāϕ⧇ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŽā§‚āϞ āϰāĻžāύāϟāĻžāχāĻŽāĨ¤
compose.ui āϞ⧇āφāωāϟ, āĻ…āĻ™ā§āĻ•āύ āĻāĻŦāĻ‚ āχāύāĻĒ⧁āϟ āϏāĻš āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ āϏāĻžāĻĨ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽā§āĻĒā§‹āϜ UI āĻāϰ āĻŽā§ŒāϞāĻŋāĻ• āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻž

āϰāϚāύāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝ⧋āĻ— āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϕ⧇ āĻ…āĻŦāĻļā§āϝāχ āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ⧇ Google Maven āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ Google āĻāϰ Maven āϏāĻ‚āĻ—ā§āϰāĻšāĻ¸ā§āĻĨāϞ āĻĒāĻĄāĻŧ⧁āύāĨ¤

āφāĻĒāύāĻžāϰ āĻ…ā§āϝāĻžāĻĒ āĻŦāĻž āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϜāĻ¨ā§āϝ build.gradle āĻĢāĻžāχāϞ⧇ āφāĻĒāύāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝ⧋āĻ— āĻ•āϰ⧁āύ:

āĻ—ā§āϰ⧋āĻ­āĻŋ

dependencies {
    implementation "androidx.compose.ui:ui:1.9.0"
}

android {
    buildFeatures {
        compose true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

āϕ⧋āϟāϞāĻŋāύ

dependencies {
    implementation("androidx.compose.ui:ui:1.9.0")
}

android {
    buildFeatures {
        compose = true
    }

    composeOptions {
        kotlinCompilerExtensionVersion = "1.5.15"
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ, āĻŦāĻŋāĻ˛ā§āĻĄ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ āĻĻ⧇āϖ⧁āύāĨ¤

āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž

āφāĻĒāύāĻžāϰ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻœā§‡āϟāĻĒā§āϝāĻžāĻ•āϕ⧇ āφāϰāĻ“ āĻ­āĻžāϞ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāϤ⧁āύ āϏāĻŽāĻ¸ā§āϝāĻž āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰ⧇āύ āĻŦāĻž āĻāχ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āωāĻ¨ā§āύāϤāĻŋāϰ āϜāĻ¨ā§āϝ āϧāĻžāϰāύāĻž āĻĒāĻžāύ āϤāĻžāĻšāϞ⧇ āφāĻŽāĻžāĻĻ⧇āϰ āϜāĻžāύāĻžāύāĨ¤ āφāĻĒāύāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āφāϗ⧇ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻāχ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϤ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύ⧎ āφāĻĒāύāĻŋ āϤāĻžāϰāĻ•āĻž āĻŦā§‹āϤāĻžāĻŽā§‡ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏāĻŽāĻ¸ā§āϝāĻžāϝāĻŧ āφāĻĒāύāĻžāϰ āĻ­ā§‹āϟ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻŽāĻ¸ā§āϝāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ

āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āχāĻ¸ā§āϝ⧁ āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻžāϰ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĻ⧇āϖ⧁āύāĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.10

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.10.0-alpha02

āφāĻ—āĻ¸ā§āϟ 27, 2025

androidx.compose.ui:ui-*:1.10.0-alpha02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.10.0-alpha02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • FillableData āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧇ āĻŦ⧁āϞāĻŋāϝāĻŧāĻžāύ āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž āĻŽāĻžāύ āϏāĻš āϟāĻ—āϞ āĻāĻŦāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āĻŽāϤ⧋ āύāύ-āĻŸā§‡āĻ•ā§āϏāϟ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ FillableData āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ FillableData-āĻāϰ āĻŦ⧁āϞāĻŋāϝāĻŧāĻžāύ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽā§‡āϰ AutofillValue āϤ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻž FillableData āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖāϗ⧁āϞāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰāĨ¤ āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŋāĻ• āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋ āĻāĻŦāĻ‚ āĻ•āĻ°ā§āĻŽ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ. ( Ia8105 , Icc5cf )
  • āύāύ-āϟāĻžāϚ āĻŽā§‹āĻĄā§‡, āĻ­āĻŋāω āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ¸ā§āĻ•ā§āϰāĻŋāύ⧇āϰ āĻĢā§‹āĻ•āĻžāϏāϝ⧋āĻ—ā§āϝ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋāϤ⧇ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•/āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĢā§‹āĻ•āĻžāϏ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤ āĻāχ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋ āϰāϚāύāĻžāϝāĻŧ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ ComposeUiFlags.isInitialFocusOnFocusableAvailable āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( Ib9178 )
  • āĻĒāϤāĻžāĻ•āĻž āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ isPointerInteropFilterDispatchingFixEnabled āĨ¤ ( IAA589 )
  • āϏāϰāĻžāύ⧋ āĻĒāϤāĻžāĻ•āĻž isNestedScrollInteropPostFlingFixEnabled āĨ¤ ( I2a756 )
  • isHiddenFromAccessibility() āĻāĻŦāĻ‚ isInHiddenAccessibilitySubtree() āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻžāϰ āĻŽāĻŋāϞ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ ( I9f5a1 )
  • āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āϏāĻŽāϝāĻŧāϏ⧂āĻšā§€āϤ⧇ āϏāĻŽāĻ¸ā§āϤ āĻŦāϕ⧇āϝāĻŧāĻž āĻ•āĻžāϜ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ MainTestClock āĻ runCurrent() āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ StandardTestDispatcher āĻ āϚāϞāĻŽāĻžāύ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āϝ⧇āĻ–āĻžāύ⧇ āĻ•āĻžāϜāϗ⧁āϞāĻŋ 0ms āĻĻ⧇āϰāĻŋ āĻšāϞ⧇ āĻ…āĻŦāĻŋāϞāĻŽā§āĻŦ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏāĻŽāϝāĻŧāϏ⧂āĻšā§€āϤ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ ComposeTestRule āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ StandardTestDispatcher āĻĒāĻžāϏ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ StandardTestDispatcher āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āϏ⧇āϟāφāĻĒ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ UnconfinedTestDispatcher āĻ āϚāĻžāϞāĻžāύ⧋ āĻšāϝāĻŧ, āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ runCurrent() āĻ•āĻ–āύāχ āĻ•āϞ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āύāĻžāĨ¤
  • āĻāĻ•āϟāĻŋ StandardTestDispatcher āĻ āĻĒāϰ⧀āĻ•ā§āώāĻž āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϐāϤāĻŋāĻšāĻžāϏāĻŋāĻ•āĻ­āĻžāĻŦ⧇, āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻ•āĻžāĻ āĻžāĻŽā§‹āϟāĻŋ āĻāĻ•āϟāĻŋ UnconfinedTestDispatcher āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ (āĻāĻŦāĻ‚ āĻāĻ–āύāĻ“ āϰāϝāĻŧ⧇āϛ⧇), āϝāĻž āϏ⧂āĻ•ā§āĻˇā§āĻŽ āωāĻĒāĻžāϝāĻŧ⧇ āĻāĻ•āϟāĻŋ āωāĻ¤ā§āĻĒāĻžāĻĻāύ āĻĒāϰāĻŋāĻŦ⧇āĻļ āĻĨ⧇āϕ⧇ āĻĒ⧃āĻĨāĻ•āĨ¤ āφāĻĒāύāĻŋ āĻāĻ–āύ āφāĻĒāύāĻžāϰ āύāĻŋāϜāĻ¸ā§āĻŦ StandardTestDispatcher āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ ComposeTestRule āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ (āĻŦāĻž runComposeUiTest āϕ⧇ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ) āĻāϟāĻŋāϕ⧇ effectContext āϝ⧋āĻ— āĻ•āϰ⧇ āĻāχ āϏ⧇āϟāφāĻĒāϟāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ ( I334d0 , b/254115946 )
  • SlotTree āĻĨ⧇āϕ⧇ āύ⧋āĻĄā§‡āϰ āĻāĻ•āϟāĻŋ āĻŸā§āϰāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āĻĄ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύāĨ¤ ( I997d3 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ•āĻŽā§āĻĒā§‹āϜ UI āĻāĻ–āύ Android-āĻ āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ-āϏāĻšā§‡āϤāύ RetainScopes āχāύāĻ¸ā§āϟāϞ āĻ•āϰ⧇āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āφāϚāϰāĻŖ āĻāĻ–āύ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āϜ⧁āĻĄāĻŧ⧇ retain āĻŽāĻžāύ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻŦ⧇āĨ¤ ( Id4a09 , b/177562901 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āφāϚāϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāĻž āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ⧇āϰ āĻŦ⧇āĻ— āĻ—āĻŖāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ VelocityTracker āĻāϰ āĻ•ā§āώāĻŽāϤāĻž āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ ( I621e8 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.10.0-alpha01

13 āφāĻ—āĻ¸ā§āϟ, 2025

androidx.compose.ui:ui-*:1.10.0-alpha01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.10.0-alpha01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻāĻ•āϟāĻŋ ComposeView āĻ āĻŽāĻžāωāϏ āĻŦāĻž āϟāĻžāϚāĻĒā§āϝāĻžāĻĄ āĻĻāĻŋāϝāĻŧ⧇ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĄāĻžāωāύ āĻāĻ–āύ āĻĢā§‹āĻ•āĻžāϏ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāĻŦ⧇ āϝāĻĻāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āĻĄāĻžāωāύ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āύ⧋āĻĄā§‡āϰ āϏ⧀āĻŽāĻžāύāĻžāϝāĻŧ āύāĻž āϘāĻŸā§‡āĨ¤ āĻāϰ āĻĢāϞ⧇ āĻāĻ•āϟāĻŋ "āĻŸā§āϝāĻžāĻĒ-āϟ⧁-āĻ•ā§āϞāĻŋāϝāĻŧāĻžāϰ āĻĢā§‹āĻ•āĻžāϏ" UX āĻšāϝāĻŧ āϝāĻž āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻĄāĻŋāĻ­āĻžāχāϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āφāϚāϰāϪ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤāĨ¤ āĻāχ āφāϚāϰāĻŖāϟāĻŋ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ AbstractComposeView.isClearFocusOnPointerDownEnabled API āĻĻāĻŋāϝāĻŧ⧇ āĻ…āĻĒā§āϟ-āφāωāϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I6322b , b/282963174 )
  • āĻŸā§‡āĻ•ā§āϏāϟ āĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāύ⧇āϰ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ FillableData āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύāĨ¤ ( if9bd2 )
  • āĻ­āĻžāĻ— āĻ•āϰāĻž āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϕ⧇ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āϏāĻ•ā§āώāĻŽ āĻāĻŦāĻ‚ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ API āϝāĻž āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āϚāϞāĻŽāĻžāύ āĻ­āĻžāĻ— āĻ•āϰāĻž āωāĻĒāĻžāĻĻāĻžāύ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āϰāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āĻšāĻŋāϏāĻžāĻŦ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ⧎ āĻŸā§āϰāĻžāύāϜāĻŋāĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻļ⧇āϝāĻŧāĻžāϰ āĻ•āϰāĻž āωāĻĒāĻžāĻĻāĻžāύ āύāĻŋāĻˇā§āĻĒāĻ¤ā§āϤāĻŋ āĻšāϞ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āϞāĻ•ā§āĻˇā§āϝ āϏ⧀āĻŽāĻž āϏ⧇āϟ āφāĻĒ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ APIāĨ¤ āĻāĻ•āϟāĻŋ LookaheadScope āĻāϰ LayoutCoordinates āĻĒ⧇āϤ⧇ āύāϤ⧁āύ APIāĨ¤ ( I18dd4 , b/409819304 , b/395670637 )
  • āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āχāĻ¨ā§āϟāĻžāϰāĻĒ-āĻ āϏāĻ āĻŋāĻ• āĻĒā§‚āĻ°ā§āĻŖāϏāĻ‚āĻ–ā§āϝāĻž āĻĒāĻžāĻ āĻžāύ⧋āϰ āĻĒāϰ⧀āĻ•ā§āώāĻž āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāύ āĻ•āϰāϤ⧇ āĻĒāϤāĻžāĻ•āĻžāϟāĻŋ isNestedScrollInteropIntegerPropagationEnabled āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( if8316 )
  • āĻĒā§āϰāĻĻāĻ¤ā§āϤ āϰ⧇āĻ•ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒ āĻ•āϰ⧇ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻļāĻŋāĻļ⧁āϰ āĻĻāĻŋāϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āϏāϰāĻžāϤ⧇ DelegatableNode āĻ requestFocusForChildInRootBounds() āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I001ef )
  • āϏāϰāĻžāύ⧋ āĻĢā§āĻ˛ā§āϝāĻžāĻ—āϗ⧁āϞāĻŋ isOnScrollChangedCallbackEnabled , isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled , isFlingContinuationAtBoundsEnabled , isAutomaticNestedPrefetchEnabled , DragGesturePickUpEnabled isPointerInteropFilterDispatchingFixEnabled , isNestedScrollInteropPostFlingFixEnabled , isNestedScrollDispatcherNodeFixEnabled ( I36c18 )
  • āĻĒā§āϰāĻ¤ā§āϝāĻžāĻŦāĻ°ā§āϤāĻŋāϤ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāϤ⧇ SemanticsNode āĻĢāĻžāχāĻ¨ā§āĻĄāĻžāϰ āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻŦāĻžāϚāĻ• āĻĢāĻžāĻ‚āĻļāύ⧇ @CheckResult āĻŸā§€āĻ•āĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I6f86e , b/201652748 )
  • āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āωāĻ¨ā§āύāϤ āĻ•āϰ⧁āύ ( I3c7c0 )
  • CompositionLocal āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ āϝāĻž āĻ…āĻŸā§‹āĻĢāĻŋāϞ⧇āϰ āϏāĻĢāϞ āĻĢāĻŋāϞāĻŋāĻ‚ āĻšāĻžāχāϞāĻžāχāĻŸā§‡āϰ āĻŦā§āϰāĻžāĻļ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I52329 )
  • āύāϤ⧁āύ āχāĻ¨ā§āϟāĻžāϰāĻĒā§‹āϞ⧇āĻŸā§‡āĻŦāϞ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĒā§āϰāĻ•āĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āχāĻ¨ā§āϟāĻžāϰāĻĒā§‹āϞ⧇āĻļāύ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ, āϧāϰ⧇ āύāĻŋāχ āϝ⧇ āĻāĻ• āĻĒā§āϰāĻ•āĻžāϰ āϜāĻžāύ⧇ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ…āĻ¨ā§āϝ āĻĨ⧇āϕ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāϤ⧇ āĻšāϝāĻŧāĨ¤ āĻāχ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāϟāĻŋ āĻŦā§āϰāĻžāĻļ āĻāĻŦāĻ‚ āφāĻ•ā§ƒāϤāĻŋāϰ āĻŽāϤ⧋ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϧāϰāύ⧇āϰ āϰāϚāύāĻžāϝāĻŧ āϞāĻŋāĻ­āĻžāϰ⧇āϜ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻŦ⧇ āĻŦāĻžāĻšā§āϝāĻŋāĻ•āĻ­āĻžāĻŦ⧇āĻ“ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I58eab )
  • āĻāĻ–āύ āĻ¸ā§āĻ•ā§āϰ⧋āϞāϝ⧋āĻ—ā§āϝ 2 āĻĄāĻžāχāĻŽā§‡āύāĻļāύāĻžāϞ āĻŽāĻžāωāϏ āĻšā§āχāϞ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϕ⧇ āφāϰāĻ“ āĻ­āĻžāϞ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤ MouseInjectionScope āĻ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĒāϰ⧀āĻ•ā§āώāĻž API āĻāϏ⧇āϛ⧇āĨ¤ āφāĻŽāϰāĻž MouseInjectionScope āĻ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āĻāĻŦāĻ‚ isMouseWheel1DAxisLockingEnabled ( I136df ) āύāĻžāĻŽā§‡ āύāϤ⧁āύ āφāϚāϰāĻŖ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāϤāĻžāĻ•āĻžāĻ“ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĻ›āĻŋāĨ¤
  • āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āϟāĻžāχāĻĒ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‡āϟ, āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ āϟāĻžāχāĻĒ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§‡āϟ, āϟāĻžāϚāĻ¸ā§āĻ•ā§āϰāĻŋāύ āĻ¸ā§āĻŸā§‡āϟ āĻāĻŦāĻ‚ UI āĻŽā§‹āĻĄ āϟāĻžāχāĻĒ ( I282f0 ) āĻāϰ āϜāĻ¨ā§āϝ DeviceConfigurationOverrides āϝ⧋āĻ— āĻ•āϰ⧁āύ
  • Tight āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ LineHeightStyle.Mode āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻŽā§‹āĻĄāϟāĻŋ āϛ⧋āϟ āϞāĻžāχāύ⧇āϰ āωāĻšā§āϚāϤāĻž āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇ āĻāĻŽāύāĻ•āĻŋ āϝāĻ–āύ āϤāĻžāϰāĻž āϏāĻŽā§āĻ­āĻŦāϤ āϞāĻŽā§āĻŦāĻž āĻ—ā§āϞāĻŋāĻĢ āĻ•āĻžāϟāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( Id3849 )
  • āĻŦāĻ•ā§āϏāĻŋāĻ‚ āĻĒā§āϰāϤāĻŋāϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ BaselineShift āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŽāĻžāύ āϰāϝāĻŧ⧇āϛ⧇ BaselineShift , Hyphens , LineBreak , TextAlign , āĻāĻŦāĻ‚ TextDirection āĻāĻ–āύ isSpecified Helper āĻĢāĻžāĻ‚āĻļāύ āϰāϝāĻŧ⧇āϛ⧇ Hyphens , TextAlign , TextDecoration , āĻāĻŦāĻ‚ TextDirection āĻāĻ–āύ valueOf() āĻŽā§‡āĻĨāĻĄāϰ⧇āĻļāύ āĻāĻŦāĻ‚ āĻŽāĻžāύ āχāĻ¨ā§āϏāϰāĻžāχāĻœā§‡āĻļāύ āĻāĻŦāĻ‚ āĻŸā§‡āĻ•ā§āϏāϟ āĻĄāĻŋāϰ⧇āĻ•āĻļāύ āφāϛ⧇āĨ¤ ( I8d44c )
  • āĻĒā§āϰāĻŋāĻ­āĻŋāω āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āύāĻžāĻŽāϗ⧁āϞāĻŋāϕ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ getDisplayName āĻĒāĻĻā§āϧāϤāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ ( I19bdf , b/241699422 )
  • āϝāĻ–āύ Dp āĻŽāĻžāύāϗ⧁āϞāĻŋāϕ⧇ Unspecified-āĻāϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āĻ•āĻŽ-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻž āĻŦāĻĄāĻŧ-āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āĻāϟāĻŋ āĻāĻ–āύ āϏāĻ°ā§āĻŦāĻĻāĻž āĻŽāĻŋāĻĨā§āϝāĻž āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤ Dp.compareTo(Unspecified) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϞ⧇ āϏāĻ°ā§āĻŦāĻĻāĻž 0 āĻĢ⧇āϰāϤ āφāϏ⧇āĨ¤ ComposeUiUnitFlags.isDpCompareToChanged āĻĢā§āĻ˛ā§āϝāĻžāĻ— āϏ⧇āϟ āĻ•āϰāĻž āĻšāϞ⧇ āϤāĻž Dp.compareTo() āĻĒā§‚āĻ°ā§āĻŦ⧇āϰ āφāϚāϰāϪ⧇ āĻĢāĻŋāϰ⧇ āφāϏāĻŦ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ•āĻŽ-āĻāϰ āĻšā§‡āϝāĻŧ⧇ āĻŦāĻĄāĻŧ-āĻāϰ āϏāĻžāĻĨ⧇ āϤ⧁āϞāύāĻž āĻ•āϰāĻž āϏāĻ°ā§āĻŦāĻĻāĻž āĻŽāĻŋāĻĨā§āϝāĻž āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āύāĻž, āĻāĻŦāĻ‚ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āφāϚāϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ compareTo() āĻ•āϰ⧇āĨ¤ Float.compareTo() āĨ¤ ( ifa88b , b/429221319 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĄāĻŋāĻĢāĻ˛ā§āϟ minSdk āϕ⧇ API 21 āĻĨ⧇āϕ⧇ API 23 āĻ āϏāϰāĻžāύ⧋ āĻšāĻšā§āϛ⧇ ( Ibdfca , b/380448311 , b/435705964 , b/435705223 )
  • āĻāĻ•āϟāĻŋ āĻŸā§āϰāĻžāύāϜāĻŋāĻļāύ āϚāϞāĻžāĻ•āĻžāϞ⧀āύ āύāϤ⧁āύ AndroidComposeViews āϤ⧈āϰāĻŋāϤ⧇ āĻŦāĻžāϧāĻž āĻĻ⧇āϝāĻŧ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇āĨ¤ ( I2e23e , b/340894487 , b/287484338 )
  • āĻāĻ•āϟāĻŋ āϭ⧇āĻ•ā§āϟāϰ āĻĄā§āϰāϝāĻŧ⧇āĻŦāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻ•āϟāĻŋ āϰāϙ⧇āϰ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇ āϝāĻž āĻāĻ•āϟāĻŋ āϰāĻ™ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ fillColor āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ¸ā§āĻŦāĻšā§āĻ› āĻŦāĻž āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻŦāĻšā§āĻ› āύāϝāĻŧāĨ¤ ( I3b041 , b/328677973 )
  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĨāĻŋāĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϰāϙ⧇āϰ āϏāĻžāĻĨ⧇ painterResource āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϞ⧋āĻĄ āĻ•āϰāĻž āφāχāĻ•āύāϗ⧁āϞāĻŋ āĻĨāĻŋāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧāύāĻŋ⧎ ( I85ea0 , b/424416571 )
  • onFillData āĻāĻŦāĻ‚ fillableData āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž ( I45d9e ) āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ
  • āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ¸ā§āĻŸā§‡āϟ āĻāύāϕ⧋āĻĄāĻŋāĻ‚ āĻāĻ–āύ āϏāĻ°ā§āĻŦāĻĻāĻž StateRestorationTester āĻ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻĨāĻžāϕ⧇āĨ¤ āĻāϟāĻŋ āĻ…ā§āϝāĻžāύāĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āĻĒāĻžāĻ°ā§āϏ⧇āϞāĻžāχāĻœā§‡āĻļāύ⧇āϰ āĻŽāϤ⧋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāĻžāύ āĻ¸ā§āĻŸā§‡āϟ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āφāϚāϰāĻŖāϕ⧇ āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ āĻ•āϰ⧇⧎ ( I38211 , b/408154192 , b/382294247 )
  • āĻĢā§‹āĻ•āĻžāϏ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤ ( 57b31a11 , b/431111149 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0

13 āφāĻ—āĻ¸ā§āϟ, 2025

androidx.compose.ui:ui-*:1.9.0 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

1.8.0 āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-āĻ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻāχ āĻŦā§āϞāĻ—āĻĒā§‹āĻ¸ā§āĻŸā§‡ āĻ•āĻ­āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎
  • āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ•āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ–āύ āĻ¨ā§āϝ⧂āύāϤāĻŽ 8.8.2 āĻāϰ AGP āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧎ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ AGP āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ gradle.properties āĻ android.experimental.lint.version=8.8.2 (āĻŦāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϞāĻŋāĻ¨ā§āϟāϕ⧇ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ IDE-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻ•āĻŽā§āĻĒā§‹āϜ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ• āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, Android Studio Ladybug āĻŦāĻž āφāϰāĻ“ āύāϤ⧁āύ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤
  • āĻŦā§āϰ⧇āĻ•āĻŋāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: graphicsLayer āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻāĻ–āύ SemanticsModifierNode āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇āĨ¤ āĻāϰ āĻĢāϞ⧇ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻŸā§āϰāĻŋāϤ⧇ āύāϤ⧁āύ SemanticsNodes āϝ⧁āĻ•ā§āϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāχ, āϏ⧇āĻŽā§āϝāĻžāĻ¨ā§āϟāĻŋāĻ• āĻŸā§āϰāĻŋ āĻ—āĻ āύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻžāϰ āĻĻāĻŋāϕ⧇ āύāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖ āĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĻāĻžāĻŦāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ onChild , onParent , onSibling āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ…āύ⧁āϰ⧂āĻĒ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻĻāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻāĻŦāĻ‚ āϟāĻžāĻ°ā§āϗ⧇āϟ āύ⧋āĻĄāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāχ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻžāϗ⧁āϞāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻžāϰ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āωāĻĒāĻžāϝāĻŧ āĻšāϞ āϏāϰāĻžāϏāϰāĻŋ āϞāĻ•ā§āĻˇā§āϝ āύ⧋āĻĄā§‡ āĻāĻ•āϟāĻŋ testTag āϝ⧋āĻ— āĻ•āϰāĻžāĨ¤ āφāϰ⧇āĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϞ āĻāĻ•āϟāĻŋ āϞ⧁āϜāĻžāϰ āĻŽā§āϝāĻžāϚāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž, āϝ⧇āĻŽāύ onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) āĨ¤ ( I638b5 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-rc01

30 āϜ⧁āϞāĻžāχ, 2025

androidx.compose.ui:ui-*:1.9.0-rc01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-rc01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĨāĻŋāĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϰāĻ‚ āϏāĻš painterResource āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϞ⧋āĻĄ āĻ•āϰāĻž āφāχāĻ•āύāϗ⧁āϞāĻŋ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĨāĻŋāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧāύāĻŋ⧎ ( I85ea0 , b/424416571 )
  • APIs 21(Lollipop) āĻāĻŦāĻ‚ 28(Pie) āĻāϰ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻĒāĻĻā§āϧāϤāĻŋāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ⧎ ( Iebf99 , b/425120571 , b/420462749 )
  • āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ āύāϤ⧁āύ āĻĸā§‹āĻ•āĻžāύ⧋ onLayoutRectChanged āϏāĻ‚āĻļā§‹āϧāĻ• āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āφāĻŦāĻžāϰ āĻ•āϞ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ ( l9aa91 ), ( lb348a )
  • āĻāĻ•āϟāĻŋ āĻ…āĻĢāϏ⧇āϟ āĻ•ā§āϝāĻžāĻļ⧇ āϭ⧁āϞāĻ­āĻžāĻŦ⧇ āĻ…āĻŦ⧈āϧ āĻšāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ, āϝāĻžāϰ āĻĢāϞ⧇ onLayoutRectChanged āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϗ⧁āϞāĻŋāϕ⧇ āϭ⧁āϞ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• ( ibd4cd ), ( lddc57 ) āĻĻāĻŋāϝāĻŧ⧇ āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ
  • onLayoutRectChanged āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ ( lddc57 , b/426750475 ) āĻĻā§āĻŦāĻžāϰāĻž āϭ⧁āϞ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• āĻĒā§āϰāĻžāĻĒā§āϤ āĻ˜ā§‚āĻ°ā§āĻŖāĻŋāϤ/ āϤāĻŋāĻ°ā§āϝāĻ• āϞ⧇āφāωāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ LazyList āĻ dragAndDropSource āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āĻĻ⧃āĻļā§āϝ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻ āĻ­āĻŋāĻ•ā§āϟāϰ āϰ⧇āĻ¨ā§āĻĄāĻŋāύāĻž! ( dc3bcd3 , b/425894792 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-beta03

āϜ⧁āϞāĻžāχ 16, 2025

androidx.compose.ui:ui-*:1.9.0-beta03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.9.0-beta03 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻŽāĻžāύāĻ­āĻžāĻŦ⧇ āĻ…āĻ¸ā§āĻĒāĻˇā§āϟ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻ›āĻžāϝāĻŧāĻžāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻ…āĻĢāϏ⧇āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧāύāĻŋ⧎

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-beta02

2 āϜ⧁āϞāĻžāχ, 2025

androidx.compose.ui:ui-*:1.9.0-beta02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.9.0-beta02 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϏāĻ™ā§āĻ—ā§€ āĻŦāĻ¸ā§āϤ⧁āϕ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻĨ⧇āϕ⧇ āĻŽā§āϝāĻžāϚ āĻ•ā§āϞāĻžāϏ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤ ( I8452a )
  • āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ isTrackFocusEnabled āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻĒāϤāĻžāĻ•āĻž ( I003fd )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āϝāĻ–āύ āϕ⧋āύ WindowInsets ComposeView āĻāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϤ⧇ āĻāύāĻ•ā§āϰ⧋āϚ āĻ•āϰ⧇ āύāĻž, WindowInsetsRulers āĻŽāĻžāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ ( I71221 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-beta01

18 āϜ⧁āύ, 2025

androidx.compose.ui:ui-*:1.9.0-beta01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦā§āϰ⧇āĻ•āĻŋāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • graphicsLayer āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻāĻ–āύ SemanticsModifierNode āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇āĨ¤ āĻāϰ āĻĢāϞ⧇ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻŸā§āϰāĻŋāϤ⧇ āύāϤ⧁āύ SemanticsNodes āϝ⧁āĻ•ā§āϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āϤāĻžāχ, āϏ⧇āĻŽā§āϝāĻžāĻ¨ā§āϟāĻŋāĻ• āĻŸā§āϰāĻŋ āĻ—āĻ āύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻžāϰ āĻĻāĻŋāϕ⧇ āύāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ āωāĻĻāĻžāĻšāϰāĻŖ āĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻĻāĻžāĻŦāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ onChild , onParent , onSibling āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ…āύ⧁āϰ⧂āĻĒ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻĻāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻāĻŦāĻ‚ āϟāĻžāĻ°ā§āϗ⧇āϟ āύ⧋āĻĄāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύ⧋āĻĄ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻāχ āĻŦā§āϝāĻ°ā§āĻĨāϤāĻžāϗ⧁āϞāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻžāϰ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āωāĻĒāĻžāϝāĻŧ āĻšāϞ āϏāϰāĻžāϏāϰāĻŋ āϞāĻ•ā§āĻˇā§āϝ āύ⧋āĻĄā§‡ āĻāĻ•āϟāĻŋ testTag āϝ⧋āĻ— āĻ•āϰāĻžāĨ¤ āφāϰ⧇āĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϞ āĻāĻ•āϟāĻŋ āϞ⧁āϜāĻžāϰ āĻŽā§āϝāĻžāϚāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž, āϝ⧇āĻŽāύ onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target")) āĨ¤ ( I638b5 )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • ShadowContext āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻ•āϟāĻŋ āϏāĻŋāϞ āĻ•āϰāĻž āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ ( I3ce40 )
  • āĻāĻ•āϟāĻŋ āĻĒāϰ⧋āĻ•ā§āώ āĻ¸ā§āĻĒāĻ°ā§āĻļ āχāϭ⧇āĻ¨ā§āϟ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ•ā§āϰāϏ āĻŽāĻĄāĻŋāωāϞ āωāĻĒāĻžāϝāĻŧ āϝ⧋āĻ— āĻ•āϰ⧇ (āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϜāĻ¨ā§āϝ) ( I22e4c )
  • IndirectTouchEvent.nativeEvent āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤ ( I6fda5 )
  • API āĻ•āĻžāωāĻ¨ā§āϏāĻŋāϞ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ API āĻĒ⧃āĻˇā§āĻ āϕ⧇ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇āĨ¤ ( Ibf378 )
  • FrameRateCategory.NoPreference āĻ§ā§āϰ⧁āĻŦāĻ• āϏāϰāĻžāύāĨ¤ Modifier.requestedFrameRate āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ Modifier.preferredFrameRate āĨ¤ ( I2f976 )
  • WindowInsetsRulers : āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ rulersIgnoringVisibility āϏāĻ°ā§āĻŦā§‹āĻšā§āϚāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ getDisplayCutoutBounds() PlacementScope āĻāϰ āĻāĻ•āϟāĻŋ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āĻšāϤ⧇āĨ¤ WindowInsetsAnimationProperties āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ WindowInsetsAnimation āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ getAnimationProperties() āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ getAnimation() āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I3816f )
  • ShadowParams āϕ⧇ Shadow āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I11cca )
  • āĻĢā§āϰ⧇āĻŽ āϰ⧇āϟ API-āĻāϰ āϜāĻ¨ā§āϝ āĻĒā§āϝāĻžāϕ⧇āϜāϟāĻŋ androidx.compose.ui.ui āĻĨ⧇āϕ⧇ androidx.compose.ui ( I8994e ) āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ
  • WindowInsetsRulers āύāĻžāĻŽā§‡āϰ āϏāĻžāϧāĻžāϰāĻŖ āϕ⧋āĻĄā§‡ InsetsRulers āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻĒāĻŋāφāχāϕ⧇ āϏāϰāϞ⧀āĻ•ā§ƒāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ āϏāĻŽāĻ¸ā§āϤ āχāύāϏ⧇āϟ WindowInsetsRulers āĻšāϝāĻŧāĨ¤ āĻāĻ•āϟāĻŋ AnimationProperties āĻ•ā§āϞāĻžāϏ⧇ āύāύ-āϰ⧁āϞāĻžāĻ°ā§āϏ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻŦ⧇āϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ WindowInsetsRulers.innermostOf() āĻāĻ•āĻžāϧāĻŋāĻ• WindowInsetsRulers āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I2f0c6 , b/415012444 )
  • āĻ•āĻŽā§āĻĒā§‹āϜ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻ‰ā§ŽāϏ āϤāĻĨā§āϝ āĻĒāĻžāĻ°ā§āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϟ⧁āϞāĻŋāĻ‚ API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iceaf9 , b/408492167 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • isGetFocusedRectReturnEmptyEnabled āĻāϰ āĻĢā§āĻ˛ā§āϝāĻžāĻ—āϟāĻŋ āĻāĻ–āύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ ( Ife722 )
  • performScrollToNode āĻ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇, āϝāĻž āĻ•āĻŋāϛ⧁ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϞāĻ•ā§āĻˇā§āϝ āύ⧋āĻĄā§‡ āĻĒ⧌āρāĻ›āĻžāϝāĻŧāύāĻŋāĨ¤ āĻāχ āĻĢāĻŋāĻ•ā§āϏ⧇āϰ āϏāĻžāĻĨ⧇, āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϟāĻŋ āϏāĻ°ā§āĻŦāĻĻāĻž āϞāĻ•ā§āĻˇā§āϝ āύ⧋āĻĄā§‡ āĻĒ⧌āρāĻ›āĻžāύ⧋ āωāϚāĻŋāϤāĨ¤ āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ°ā§āĻļā§āĻŦāĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻšāϞ āĻ•āĻ°ā§āĻŽā§‡āϰ āĻļ⧇āώ⧇ āϏāĻ āĻŋāĻ• āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻāĻ–āύ āĻ­āĻŋāĻ¨ā§āύ āĻšāϤ⧇ āĻĒāĻžāϰ⧇, āϝāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋāϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇ āϝāĻž āϏāĻ āĻŋāĻ• āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰ⧇āĨ¤ ( I2c8a1 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha04

āϜ⧁āύ 4, 2025

androidx.compose.ui:ui-*:1.9.0-alpha04 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha04-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜāϝ⧋āĻ—ā§āϝ āĻ›āĻžāϝāĻŧāĻžāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āϏāĻ‚āĻļā§‹āϧāĻ• API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I2058d , b/160665122 )
  • āĻāĻ•āϟāĻŋ SemanticsModifierNode.isImportantForBounds āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰ⧇ āϝ⧇ āϏ⧀āĻŽāĻž āĻ—āĻŖāύāĻž āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āύ⧋āĻĄāϟāĻŋ āĻŦāĻŋāĻŦ⧇āϚāύāĻžāϝāĻŧ āύ⧇āĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āĻ•āĻŋāύāĻžāĨ¤ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āϏāĻ¤ā§āϝ āĻāĻŦāĻ‚ āϏ⧀āĻŽāĻžāϰ āϜāĻ¨ā§āϝ āύ⧋āĻĄāϟāĻŋāϕ⧇ āĻŦāĻŋāĻŦ⧇āϚāύāĻžāϝāĻŧ āύ⧇āĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āύāϝāĻŧ āϤāĻž āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŽāĻŋāĻĨā§āϝāĻžāϤ⧇ āϏ⧇āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I7ebec )
  • āĻ…ā§āϝāĻžāύāĻĄā§āϰāϝāĻŧ⧇āĻĄ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻžāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ SemanticsPropertyKey āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻž AccessibilityNodeInfo.getExtras āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻ•ā§āϏāĻĒā§‹āϜ āĻ•āϰāĻž āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻĒāϞāĻŦā§āϧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I2ed51 )
  • ComposeUiFlags.isRemoveFocusedViewFixEnabled āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻĒāϤāĻžāĻ•āĻžāϟāĻŋāϕ⧇ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ ( I50328 )
  • āύāϤ⧁āύ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜāϝ⧋āĻ—ā§āϝ āĻ›āĻžāϝāĻŧāĻž āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ āĻāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇ DropShadowPainter āĻāĻŦāĻ‚ InnerShadowPainter āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ DropShadow/InnerShadow āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāĨ¤ āĻļā§āϝāĻžāĻĄā§‹ āχāύāĻĢā§āϰāĻžāĻ¸ā§āĻŸā§āϰāĻžāĻ•āϚāĻžāϰ āĻāĻŽāύāĻ­āĻžāĻŦ⧇ āĻļ⧇āϝāĻŧāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇ āĻāĻ•āχ āĻœā§‡āύāĻžāϰ⧇āϟ āĻ•āϰāĻž āĻ›āĻžāϝāĻŧāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ•āϞāϏāĻžāχāĻŸā§‡ āĻļ⧇āϝāĻŧāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻļā§āϝāĻžāĻĄā§‹ āĻāύ-āĻŦāĻžāϰ āϰāĻŋ-āĻœā§‡āύāĻžāϰ⧇āϟ āύāĻž āĻ•āϰ⧇āĨ¤ ( I24f7a , b/160665122 )
  • CompositeShader āĻāĻŦāĻ‚ CompositeShaderBrush āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ āϝāĻž āĻĻ⧁āϟāĻŋ āĻļ⧇āĻĄāĻžāϰ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻĢāϞāĻžāĻĢāϞ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āĻļ⧇āĻĄāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻŽā§āϝāĻžāĻŸā§āϰāĻŋāĻ•ā§āϏ āϏ⧇āϟ āĻ•āϰāϤ⧇ ShaderBrush#transform āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ ( I2621a , b/160665122 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • NestedScrollInteropConnection āĻ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĢā§āϞāĻŋāĻ‚ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻĻ⧃āĻļā§āϝ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϭ⧁āϞ āĻ•ā§āϰāĻŽā§‡ āĻ›āĻŋāϞāĨ¤ ( I56ad4 )
  • āĻĒā§‚āĻ°ā§āĻŦ⧇, āĻĒā§‚āĻ°ā§āĻŖ āĻ¸ā§āĻ•ā§āϰ⧀āύ āφāρāĻ•āĻž āĻĄāĻžāϝāĻŧāĻžāϞāĻ—āϗ⧁āϞāĻŋ āĻĄāĻŋāϏāĻĒā§āϞ⧇ āĻ•āĻžāϟāφāωāϟ āĻ…āĻžā§āϚāϞ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻ…āĻ™ā§āĻ•āύ āĻ•āϰāϤ āύāĻžāĨ¤ āĻāχ āĻŦāĻžāĻ—āϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ decorFitsSystemWindows = false āĻāĻŦāĻ‚ usePlatformDefaultWidth = false āϏāĻš āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āĻžāϟāφāωāϟ āĻ…āĻžā§āϚāϞ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I9e975 )
  • āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ TalkBack āϏāĻŦ⧁āϜ āĻĢā§‹āĻ•āĻžāϏ āϏ⧂āϚāĻ•āϟāĻŋ āĻĒāϟāĻ­ā§‚āĻŽāĻŋāϤ⧇ āĻĨāĻžāĻ•āĻžāĻ•āĻžāϞ⧀āύ āϚāĻžāϞ⧁ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇ āφāρāĻ•āĻž āĻšāϝāĻŧāύāĻŋ⧎ ( Ifd12a )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha03

20 āĻŽā§‡, 2025

androidx.compose.ui:ui-*:1.9.0-alpha03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha03-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĢā§āĻ˛ā§āϝāĻžāĻ— ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled āĻāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϝāĻžāϤ⧇ ComposeView āĻ āϝāĻ–āύ āĻ•āĻŋāϛ⧁āχ āĻĢā§‹āĻ•āĻžāϏāϝ⧋āĻ—ā§āϝ āύāĻž āĻšāϝāĻŧ, āϤāĻ–āύ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ–āĻžāϞāĻŋ āĻŽāĻžāύ⧇āϰ āϰ⧇āĻ•ā§āϟ āϏ⧇āϟ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻĢā§‹āĻ•āĻžāϏ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύāϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ­āĻŋāω āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻĨ⧇āϕ⧇ āĻŦāĻžāϧāĻž āĻĻ⧇āϝāĻŧāĨ¤ āĻāϟāĻŋ āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝāĻ–āύ āĻāĻ•āϟāĻŋ IME āĻāϰ āĻāĻ•āϟāĻŋ NEXT āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĨāĻžāϕ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻāϟāĻŋ ComposeView āĻ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ requestFocus() āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϝāĻŧāĨ¤ ( Ibd0e2 , b/369256395 )
  • āĻĒāϤāĻžāĻ•āĻž āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻāĻŋāύ isNestedScrollDispatcherNodeFixEnabled āĨ¤ ( I0d24a )
  • DialogProperties ' dialogContentTitle āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ windowTitle āĻ•āϰ⧁āύ ( Ibd27b )
  • Modifier.onFirstVisible āĻāĻŦāĻ‚ Modifier.onVisibilityChanged āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϗ⧁āϞāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϝ⧇āϗ⧁āϞāĻŋ Modifier.onLayoutRectChanged āĻāϰ āωāĻĒāϰ⧇ āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āωāĻšā§āϚ āĻ¸ā§āϤāϰ⧇āϰ āϏāĻ‚āĻļā§‹āϧāĻ•āĨ¤ āĻāχ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϗ⧁āϞāĻŋ āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āϝ⧇āĻŽāύ āϞāĻ—āĻŋāĻ‚ āχāĻŽāĻĒā§āϰ⧇āĻļāύ, āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ āĻ­āĻŋāĻĄāĻŋāĻ“ āĻĒā§āϞ⧇ āĻ•āϰāĻž āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āĻāϗ⧁āϞāĻŋ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻžāϰ āĻ•āĻĨāĻž āĻŽāĻžāĻĨāĻžāϝāĻŧ āϰ⧇āϖ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻ¤ā§āϝāĻžāϗ⧇āϰ āĻā§āρāĻ•āĻŋ āĻ›āĻžāĻĄāĻŧāĻžāχ āϏāĻŽāĻžāϞ⧋āϚāύāĻžāĻŽā§‚āϞāĻ• āϤāĻžāϞāĻŋāĻ•āĻž-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧ⧎ āĻāχ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ API āϗ⧁āϞāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāĻ“, āĻāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ RelativeLayoutBounds āĻ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϏ⧇āχāϏāĻžāĻĨ⧇ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻšāĻœā§‡āχ āĻ…āύ⧁āϰ⧂āĻĒ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϏāĻšāϜ āĻ•āϰ⧇ āϝāĻž āϤāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ āĻŋāĻ• āωāĻĒāϝ⧁āĻ•ā§āϤāĨ¤ ( I759b8 )
  • āĻāχ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋāϰ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ āĻŦāĻŋāĻ•āĻžāĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻ•āĻžāωāĻ¨ā§āĻŸā§‡ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• setDiagnosticStackTraceEnabled āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ ( I11db3 )
  • āϰāĻžāĻœā§āϝ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ Modifier.scrollable2D , Scrollable2DState āĻāĻŦāĻ‚ āϏāĻšāϚāϰ APIs āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ⧎ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āϏāĻžāϧāĻžāϰāĻŖ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ic61c8 , b/214410040 )
  • āĻ•āĻŽā§āĻĒā§‹āϜ 64-āĻŦāĻŋāϟ āϰāϙ⧇āϰ āĻŽāĻžāύāϗ⧁āϞāĻŋ Android ColorLongs āϏāĻžāĻĨ⧇ āϏāϰāĻžāϏāϰāĻŋ āϤ⧁āϞāύ⧀āϝāĻŧ āύāϝāĻŧ āĻ•āĻžāϰāĻŖ āĻ•āĻŋāϛ⧁ āϰāϙ⧇āϰ āĻ¸ā§āĻĨāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āϰāϙ⧇āϰ āĻ¸ā§āĻĨāĻžāύ āφāχāĻĄāĻŋāϗ⧁āϞāĻŋ āĻ…āĻ°ā§āĻĄāĻžāϰ⧇āϰ āĻŦāĻžāχāϰ⧇āĨ¤ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ•āĻžāϞāĻžāϰ āĻ¸ā§āĻĒ⧇āϏ⧇ āĻāĻŦāĻ‚ āĻĨ⧇āϕ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāϤ⧇, āĻĻ⧁āϟāĻŋ āύāϤ⧁āύ API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇: toColorLong() āĻāĻŦāĻ‚ fromColorLong() āĨ¤ ( I36899 )
  • āύāĻŋāĻŽā§āύ āφāĻŦāĻĻā§āϧ āĻĢā§āϞāĻŋāĻ‚ āĻŦ⧇āĻ— āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ ViewConfiguration.minimumFlingVelocity āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I11aab )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha02

7 āĻŽā§‡, 2025

androidx.compose.ui:ui-*:1.9.0-alpha02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • dialogContentTitle āĻ DialogProperties āϝ⧋āĻ— āĻ•āϰ⧁āύ, āϝāĻž āĻ•āĻ¨ā§āĻŸā§‡āĻ¨ā§āϟ āωāχāĻ¨ā§āĻĄā§‹ āĻļāĻŋāϰ⧋āύāĻžāĻŽ āϏ⧇āϟ āĻ•āϰ⧇āĨ¤ bf9d670

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āωāχāĻ¨ā§āĻĄā§‹ āχāύāϏ⧇āϟ āĻļāĻžāϏāĻ•āϗ⧁āϞāĻŋ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€āĻ­āĻžāĻŦ⧇ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ 8d1402
  • DragGestureNode āĻ VelocityTracker āĻ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻž āĻ āĻŋāĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāϟāĻŋ āύāϤ⧁āύ āĻĒāϤāĻžāĻ•āĻž isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled āĻĻāĻŋāϝāĻŧ⧇ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ 254ddb

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha01

23 āĻāĻĒā§āϰāĻŋāϞ, 2025

androidx.compose.ui:ui-*:1.9.0-alpha01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.9.0-alpha01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒāĻžāĻ āĻžāύ⧋ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ•āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ–āύ āĻ¨ā§āϝ⧂āύāϤāĻŽ 8.8.2 āĻāϰ AGP āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧎ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ AGP āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāϤ⧇ āύāĻž āĻĒāĻžāϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ gradle.properties āĻ android.experimental.lint.version=8.8.2 (āĻŦāĻž āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϞāĻŋāĻ¨ā§āϟāϕ⧇ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ IDE-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻ•āĻŽā§āĻĒā§‹āϜ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ• āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ, Android Studio Ladybug āĻŦāĻž āφāϰāĻ“ āύāϤ⧁āύ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻšāĻŋāϟ āĻĒāĻžāĻĨ āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻžāϰ (āĻĄāĻŋāĻŦāĻžāĻ—) āĻāϰ āϜāĻ¨ā§āϝ āĻŸā§āϰ⧇āϏ āĻŦāĻŋāĻŦ⧃āϤāĻŋ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ āĻĒāϤāĻžāĻ•āĻž āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( I1b2a1 )
  • āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĒāĻĻā§āϧāϤāĻŋ āĻšāϤ⧇ InnerRectRulers āĻāĻŦāĻ‚ OuterRectRules āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ RectRulers āĻĒāĻžāĻŦāϞāĻŋāĻ• API āĻĨ⧇āϕ⧇ āύāĻžāĻŽ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ DerivedRulers āĻāĻ–āύ āωāĻ˛ā§āϞāĻŽā§āĻŦ āĻāĻŦāĻ‚ āĻ…āύ⧁āĻ­ā§‚āĻŽāĻŋāĻ• āĻļāĻžāϏāϕ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĨ¤ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ MergedHorizontalRulers āĻāĻŦāĻ‚ MergedVerticalRulers minOf āĻāĻŦāĻ‚ maxOf āĻĒāĻĻā§āϧāϤāĻŋ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iee89f , b/408192133 )
  • androidx.compose.ui.LocalSavedStateRegistryOwner androidx.savedstate.compose.LocalSavedStateRegistryOwner āĻāϰ āĻĒāĻ•ā§āώ⧇ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰ⧁āύāĨ¤ ( I5439f , b/377946781 )
  • āĻāĻ•āϟāĻŋ Modifier.keepScreenOn āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻĄāĻŋāϏāĻĒā§āϞ⧇āϟāĻŋ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĨāĻžāĻ•āĻž āĻ…āĻŦāĻ¸ā§āĻĨāĻžāϝāĻŧ āϘ⧁āĻŽā§‹āϤ⧇ āύāĻž āĻĒāĻžāϰ⧇ ( Ib5af4 , b/408284174 )
  • āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻĒā§āϰāĻĒāĻžāĻ°ā§āϟāĻŋ Shape āϝ⧋āĻ— āĻ•āϰ⧁āύ, āϝāĻž āϏ⧇āϟ āĻ•āϰāĻž āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻ–āύ UI āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āφāĻ•ā§ƒāϤāĻŋ āϤāĻžāϰ āφāĻŦāĻĻā§āϧ āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĨ⧇āϕ⧇ āĻ­āĻŋāĻ¨ā§āύ āĻšāϝāĻŧ, āϝ⧇āĻŽāύ, āĻŦ⧃āĻ¤ā§āϤāĻžāĻ•āĻžāϰ āϕ⧋āĻŖāĻžāϰ āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰāĨ¤ ( I1376f )
  • AndroidViews āĻ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāϭ⧇āĻ¨ā§āϟ āĻĒā§āϰ⧇āϰāϪ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āϏ⧁āϰāĻ•ā§āώāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāϤāĻžāĻ•āĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ isPointerInteropFilterDispatchingFixEnabled āĨ¤ ( I0e272 , b/372055500 , b/408002332 )
  • FocusRestorer āφāϰ āφāϗ⧇āϰ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āφāχāĻŸā§‡āĻŽ āĻĒāĻŋāύ āĻ•āϰ⧇ āύāĻžāĨ¤ āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āφāχāĻŸā§‡āĻŽāϟāĻŋāϤ⧇ āĻāĻ•āχ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻšā§āϝāĻžāĻļ āϰāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻāĻ•āϟāĻŋ āϕ⧀ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ, āϝāĻžāϤ⧇ āĻĢā§‹āĻ•āĻžāϏ āϏāĻĢāϞāĻ­āĻžāĻŦ⧇ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( I4203b , b/330696779 )
  • ViewTreeObserver.OnScrollChanged āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰāϤ⧇ āϰāϚāύāĻžāϕ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻāĻŋāύāĨ¤ āĻāχ āφāϚāϰāĻŖāϟāĻŋ isOnScrollChangedCallbackEnabled āĻĒāϤāĻžāĻ•āĻžāϰ āĻ…āϧ⧀āύ⧇ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻŽāϰāĻž DelegatableNode dispatchOnScrollChanged āĻāϰ āĻāĻ•āϟāĻŋ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύāĻ“ āϚāĻžāϞ⧁ āĻ•āϰ⧇āĻ›āĻŋāĨ¤ ( I34b9d , b/238109286 )
  • currentCompositeKeyHash āĻāĻ–āύ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ currentCompositeKeyHashCode āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āϰāĻŋāĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟ āĻāĻĒāĻŋāφāχ āĻāĻ•āχ āĻšā§āϝāĻžāĻļāϕ⧇ āφāϰāĻ“ āĻŦāĻŋāϟ āĻĻāĻŋāϝāĻŧ⧇ āĻāύāϕ⧋āĻĄ āĻ•āϰ⧇, āϝāĻž āĻāĻ•āχ āĻšā§āϝāĻžāĻļ āϕ⧀ āĻĨāĻžāĻ•āĻž āĻĨ⧇āϕ⧇ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻšāĻžāϝāĻŧāĻžāϰāĻžāĻ°ā§āĻ•āĻŋāϤ⧇ āĻĻ⧁āϟāĻŋ āĻāϞ⧋āĻŽā§‡āϞ⧋āĻ­āĻžāĻŦ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻšā§€āύ āĻ—ā§āϰ⧁āĻĒ⧇āϰ āϏāĻŽā§āĻ­āĻžāĻŦāύāĻž āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( I4cb6a , b/177562901 )
  • Kotlin 2.0 āĻāϰ āϏāĻžāĻĨ⧇ āϰāĻŋāϞāĻŋāϜ āĻ•āϰāĻž āĻĒā§āϰāĻœā§‡āĻ•ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ KGP 2.0.0 āĻŦāĻž āύāϤ⧁āύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ ( Idb6b5 )
  • FocusRequester āϜāĻ¨ā§āϝ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ• āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ⧇āϰ āĻ­āĻŋāϤāϰ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ ( I6bf91 )
  • āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āωāĻĒāϰ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āĻĢā§āϰ⧇āĻŽ āϰ⧇āϟ āĻŦāĻž āĻĢā§āϰ⧇āĻŽ āϰ⧇āϟ āĻŦāĻŋāĻ­āĻžāĻ— āϏ⧇āϟ āĻ•āϰāĻžāϰ āĻ•ā§āώāĻŽāϤāĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Ie5201 ) āĻ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āύ⧇āϟāĻŋāĻ­ MotionEvent āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύāĨ¤ ( I17286 )
  • getChecked() + setChecked(int) āϝ⧋āĻ— āĻ•āϰ⧁āύ, isChecked + setChecked(boolean) ( Iaac9d )
  • graphicsLayer āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻāĻ–āύ āĻāĻ•āϟāĻŋ blendMode āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ colorFilter ( Iab0e6 ) āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇
  • āϕ⧋āϝāĻŧ⧇āϰāĻŋ āϰāĻŋāϏ⧋āĻ°ā§āϏ-āĻāϰ āϜāĻ¨ā§āϝ LocalResources āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϝāĻ–āύ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāĻŦ⧇ āϤāĻ–āύ LocalResources.current āĻ•āϞ āĻ•āϰāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻ•āĻŽā§āĻĒā§‹āϜ āĻšāĻŦ⧇, āϤāĻžāχ stringResource() āĻāϰ āĻŽāϤ⧋ API-āϤ⧇ āĻ•āϞ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻŽāĻžāύ āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇āĨ¤ ( I50c13 , b/274786917 )
  • āĻĒāϰ⧋āĻ•ā§āώ āĻ¸ā§āĻĒāĻ°ā§āĻļ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• API āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύ ( Icff57 )
  • āĻāχ āϰāĻŋāϞāĻŋāϜāϟāĻŋ āϞ⧇āφāωāĻŸā§‡āϰ āϏāĻŽāϝāĻŧ āύāĻŋāĻ•ā§āώāĻŋāĻĒā§āϤ āĻ…āĻĒā§āϰāĻžāϏāĻ™ā§āĻ—āĻŋāĻ• āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽāϗ⧁āϞāĻŋāϰ āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚ āωāĻ¨ā§āύāϤ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āϰāϚāύāĻžāϝ⧋āĻ—ā§āϝ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϰ āĻĒāĻ°ā§āϝāĻžāϝāĻŧāϗ⧁āϞāĻŋ āφāρāĻ•āϤ⧇ āĻĒāĻžāϰ⧇⧎ āĻĒā§‚āĻ°ā§āĻŦ⧇, āĻāĻ–āĻžāύ⧇ āϧāϰāĻž āύāĻž āĻĒāĻĄāĻŧāĻž āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϰāĻžāύāĻžāϰāϕ⧇ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āĻ…āĻ•āĻžāϞ⧇ āĻŸā§‡āĻ¸ā§āϟ āĻ¸ā§āϝ⧁āϟāϟāĻŋ āĻļ⧇āώ āĻ•āϰāĻŦ⧇āĨ¤ āĻāχ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ¸ā§āϝ⧁āϟ āĻļ⧇āώ āύāĻž āĻ•āϰ⧇āχ āφāϰāĻ“ āϏ⧁āĻ¨ā§āĻĻāϰāĻ­āĻžāĻŦ⧇ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I9928b , b/314128080 )
  • āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• GlobalAssertions API-āϕ⧇ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻ›āĻŋāϞ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻšā§‡āĻ• āϚāĻžāϞāĻžāύ⧋, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏ⧇āχ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ enableAccessibilityChecks() āĻĻ⧇āϖ⧁āύāĨ¤ ( I50aa5 )
  • SemanticsNodeInteraction.performTextInputSelection āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧ āĻāĻŦāĻ‚ āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ relativeToOriginal āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻŽā§‚āϞ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻĒāĻžāĻ ā§āϝ āĻŦāĻž āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻĒāĻžāĻ ā§āϝ⧇ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( I3a905 , b/261561038 , b/277018945 )
  • AnnotatedString ( I1d066 , b/383269496 , b/139326648 ) āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻŦ⧁āϞ⧇āϟ āϤāĻžāϞāĻŋāĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ API āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ
  • runWithMeasurementDisabled āĻāϰ āĻĒāĻ•ā§āώ⧇ runWithTimingDisabled āĻŦāĻ°ā§āϜāύ āĻ•āϰ⧁āύ, āϝāĻž āφāϚāϰāĻŖāϕ⧇ āφāϰāĻ“ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰ⧇ - āϏāĻŽāĻ¸ā§āϤ āĻŽā§‡āĻŸā§āϰāĻŋāĻ• āĻŦāĻŋāϰāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤāĻ­āĻžāĻŦ⧇, MicrobenchmarkScope āϏ⧁āĻĒāĻžāϰāĻ•ā§āϞāĻžāϏāϟāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύ āϝ⧇āĻšā§‡āϤ⧁ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ“āĻĒ⧇āύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ runWithMeasurementDisabled āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦ āύāϝāĻŧ, āϝ⧇āĻšā§‡āϤ⧁ āĻāϟāĻŋ āχāύāϞāĻžāχāύāĨ¤ ( I9e23b , b/389149423 , b/149979716 )
  • āύāϤ⧁āύ āĻĄāĻŋāĻ­āĻžāχāϏ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ ui-tooling Devices API āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ia2ac1 )
  • āĻĒā§āϰāĻŋāĻ­āĻŋāω āĻ¸ā§āĻ•ā§āϰ⧀āύ āĻŽāĻžāĻĒ⧇āϰ āϏāĻ‚āĻ—ā§āϰāĻšā§‡ āĻŸā§āϝāĻžāĻŦāϞ⧇āϟ āĻĒā§‹āĻ°ā§āĻŸā§āϰ⧇āϟ āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϕ⧇ āĻŦāĻĄāĻŧ āωāχāĻ¨ā§āĻĄā§‹āϜ āĻŦāĻŋāĻŦ⧇āϚāύāĻž āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇ ( Ia1976 )
  • āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏāĻŽāϝāĻŧ⧇ āĻŽāĻžāύ āϏāĻš āĻŸā§āϰ⧇āϏ āϚāĻŋāĻšā§āύāĻŋāϤ/āϞāĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŸā§āϰ⧇āϏ āĻŽāĻžāύ API āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ āĻŸā§āϰ⧇āϏ āĻŽāĻžāύāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĢ⧇āĻŸā§‹āϤ⧇ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϞ⧇āύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĻ⧇āĻ–āĻžāϝāĻŧ āϝāĻž āĻāĻ•āϟāĻŋ āĻŸā§āϰ⧇āϏ⧇āϰ āϟāĻžāχāĻŽāϞāĻžāχāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĻ⧇āĻ–āĻž āϝāĻžāϝāĻŧāĨ¤ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āϤāĻžāϰāĻž Trace.setCounter āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( āφāχāĻĄāĻŋāϏāĻŋāĻāĻĢā§Ēā§Ž )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āχ āĻĒā§āϰāϝ⧋āĻœā§āϝ ( I570b2 , b/404645679 , b/407931790 ) āĻĒā§āϰ⧇āϰāύ āĻāĻĄāĻŧāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāϰāϤāĻŋāϝ⧋āĻ—ā§āϝ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻ•āĻĻ⧇āϰ āĻĒāĻžāĻ āĻžāύ⧋ āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤
  • android:dialogTheme āĻāĻ–āύ āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āϏ⧇āϟ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻ–āύ decorFitsSystemWindows āĻŽāĻŋāĻĨā§āϝāĻž āĻšāϝāĻŧ ( I7922f , b/246909281 )
  • āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĄāĻžāϝāĻŧāĻžāϞāϗ⧇āϰ āĻŦāĻžāχāϰ⧇ āϧāϰāĻž āĻĒāĻĄāĻŧāĻž āϝ⧇āϕ⧋āύ⧋ āĻ—āϤāĻŋ āχāϭ⧇āĻ¨ā§āϟ āĻĄāĻžāϝāĻŧāĻžāϞāĻ—āϟāĻŋāϕ⧇ āĻ–āĻžāϰāĻŋāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( IA78fd )
  • āĻ•āĻŽā§āĻĒā§‹āϜ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ•āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ–āύ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϞāĻžāχāύ āĻĨ⧇āϕ⧇ āĻ¨ā§āϝ⧂āύāϤāĻŽ 8.8.2 āĻāϰ AGP āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻāĻŦāĻ‚ IDE āϏāĻŽāĻ°ā§āĻĨāύ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ Android Studio Ladybug āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧎ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ AGP-āĻāϰ āĻĒ⧁āϰāĻžāύ⧋ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ āφāĻĒāύāĻŋ AGP-āϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āύāĻž āĻ•āϰ⧇, Lint āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āφāĻĒāĻ—ā§āϰ⧇āĻĄ āĻ•āϰāϤ⧇ gradle.properties-āĻ android.experimental.lint.version=8.8.2 āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ ( I6f2a8 )
  • āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ InputText āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āφāωāϟāĻĒ⧁āϟ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻžāϰ āφāϗ⧇ āĻāĻ•āϟāĻŋ textfield āĻŽāĻžāύ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰ⧇āĨ¤ ( Iae46a , b/395911609 , b/176949051 )
  • āϏāϰāĻžāύ⧋ enableAccessibilityChecks() API āϝāĻž compose:ui:ui-test-accessibility āφāϞāĻžāĻĻāĻž āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡āϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻšā§‡āĻ• āϚāĻžāϞ⧁ āĻ•āϰ⧇ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ TestRule āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ TestRule ( I3c318 , b/391567 ) āĻ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ compose:ui:ui-test-junit4-accessibility āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇āύ
  • LaunchedEffect āĻ āĻ•āĻŽā§āĻĒā§‹āϜ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻŸā§āϰ⧇āϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ CoroutineScope ( I705c0 , b/354163858 ) rememberCoroutineScope

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āĻāĻ•āϟāĻŋ āϏāĻžāϏāĻĒ⧇āĻ¨ā§āĻĄ āĻŦā§āϞāĻ• āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϤ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• runComposeUiTest āĻĢāĻžāĻ‚āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻŦāĻžāχāύāĻžāϰāĻŋ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤ āĻŽāϜāĻžāϰ runComposeUiTest āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I3b88c , b/361577328 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.3

18 āϜ⧁āύ, 2025

androidx.compose.ui:ui-*:1.8.3 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.3-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • isGetFocusedRectReturnEmptyEnabled āĻāϰ āĻĢā§āĻ˛ā§āϝāĻžāĻ—āϟāĻŋ āĻāĻ–āύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āϝāĻžāϚāĻžāχ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ ( Ife722 )
  • āĻĢā§āĻ˛ā§āϝāĻžāĻ— ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled āĻāϟāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϝāĻžāϤ⧇ ComposeView āĻ āϝāĻ–āύ āĻ•āĻŋāϛ⧁āχ āĻĢā§‹āĻ•āĻžāϏāϝ⧋āĻ—ā§āϝ āύāĻž āĻšāϝāĻŧ, āϤāĻ–āύ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ–āĻžāϞāĻŋ āĻŽāĻžāύ⧇āϰ āϰ⧇āĻ•ā§āϟ āϏ⧇āϟ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻĢā§‹āĻ•āĻžāϏ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύāϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ­āĻŋāω āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻž āĻĨ⧇āϕ⧇ āĻŦāĻžāϧāĻž āĻĻ⧇āϝāĻŧāĨ¤ āĻāϟāĻŋ āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āϝāĻ–āύ āĻāĻ•āϟāĻŋ IME āĻāϰ āĻāĻ•āϟāĻŋ NEXT āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻĨāĻžāϕ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻāϟāĻŋ ComposeView āĻ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ requestFocus() āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϝāĻŧāĨ¤ ( Ibd0e2 , b/369256395 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.2

20 āĻŽā§‡, 2025

androidx.compose.ui:ui-*:1.8.2 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.2-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĄāĻžāϝāĻŧāĻžāϞāϗ⧇ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āχāϭ⧇āĻ¨ā§āϟ āĻ¸ā§āĻŸā§āϰ⧀āĻŽā§‡āϰ āϏāĻŽāϝāĻŧ āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āϏāϰāĻžāύ⧋ āĻšāϞ⧇ NPE āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰ⧇ ( 6a7e7f )
  • āĻĄā§āϰ-āĻ…āύāϞāĻŋ āφāĻĒāĻĄā§‡āϟāϗ⧁āϞāĻŋ āϘāϟāϞ⧇ āĻĒā§āϰāϤāĻŋ āĻĨā§āϰ⧋āϟāϞāĻĄ āϟāĻžāχāĻŽāϞāĻžāχāύ⧇ āφāĻĒāĻĄā§‡āϟ āύāĻž āĻšāĻ“āϝāĻŧāĻž onLayoutRectChange āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ ( 03b82d )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.1

7 āĻŽā§‡, 2025

androidx.compose.ui:ui-*:1.8.1 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.1-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • onLayoutRectChanged āĻāĻŦāĻ‚ LazyLayout d791b11 āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻŋāϛ⧁ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧁āύ
  • āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒāϰāĻŋāĻŽāĻžāĻĒ⧇āϰ āĻ…āύ⧁āϰ⧋āϧāϗ⧁āϞāĻŋ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝāĻžāύāĨ¤ āĻāχ āĻŦāĻžāĻ—āϟāĻŋ āĻ…āϞāϏ āϞ⧇āφāωāĻŸā§‡āϰ āĻ¸ā§āĻ•ā§āϰāϞāĻŋāĻ‚ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻžāϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āĻ•āĻŋāϛ⧁ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒā§āϰāĻŋāĻĢ⧇āϚ āĻĻāĻ•ā§āώāϤāĻžāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāĻ›āĻŋāϞ āύāĻž, āĻĒāϰāĻŋāĻŽāĻžāĻĒāϟāĻŋ āĻĢā§āϰ⧇āĻŽā§‡āϰ āĻŽāĻ§ā§āϝ⧇āχ āϘāϟāĻ›āĻŋāϞāĨ¤ 742087a

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0

23 āĻāĻĒā§āϰāĻŋāϞ, 2025

androidx.compose.ui:ui-*:1.8.0 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

1.7.0 āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ•āĻŽā§āĻĒā§‹āϜ 1.8 āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŋāĻ• āĻ…āĻŸā§‹āĻĢāĻŋāϞ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āϝ⧋āĻ— āĻ•āϰāĻž āϏāĻŽāĻ°ā§āĻĨāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧁āύ āϝ⧇ UI āĻāĻŦāĻ‚ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ⧇āϰ āϝ⧇ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋ āφāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āύ āϏ⧇āϗ⧁āϞāĻŋ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8 āĻŦāĻž āωāĻšā§āϚāϤāϰ, āĻ•āĻžāϰāĻŖ āĻĒāĻžāĻ ā§āϝ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āωāĻ­āϝāĻŧ āĻŽāĻĄāĻŋāωāϞ⧇āϰ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧎ API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻŦāĻ‚ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ, āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āφāϰāĻ“ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĻ⧇āϖ⧁āύ, āĻāĻ–āĻžāύ⧇ āĨ¤
  • āĻ•āĻŽā§āĻĒā§‹āϜ 1.8 āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āϧāϰāϪ⧇āϰ āĻšā§āϝāĻžāĻĒāϟāĻŋāĻ• āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇: Confirm , ContextClick , GestureEnd , GestureThresholdActivate , Reject , SegmentFrequentTick , SegmentTick , ToggleOn , ToggleOff , VirtualKey āĨ¤ āĻāϟāĻŋ LocalHapticFeedback āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝ, āĻāϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āωāĻĒāϞāĻŦā§āϧ āĻĨāĻžāϕ⧇ āϝāĻ–āύ āĻ­āĻžāχāĻŦā§āϰ⧇āϟāϰ API āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϝ⧇ āĻšā§āϝāĻžāĻĒāϟāĻŋāĻ•ā§āϏ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤāĨ¤
  • Modifier.focusRestorer() āĻāĻŦāĻ‚ onEnter āĻāĻŦāĻ‚ onExit FocusProperties ( I6e667 ) āϏāĻš āĻāĻ•āĻžāϧāĻŋāĻ• āĻĢā§‹āĻ•āĻžāϏ API āĻāĻ–āύ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞāĨ¤ āφāĻĒāύāĻŋ āϝāĻ–āύ requestFocus āĻ•āϞ āĻ•āϰ⧇āύ āϤāĻ–āύ āφāĻĒāύāĻŋ āĻāĻ–āύ āĻāĻ•āϟāĻŋ FocusDirection āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĻāĻŋāĻ• āĻĻāĻŋāϝāĻŧ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ focusRequester āĻāĻŦāĻ‚ FocusTargetModifierNode āωāĻ­āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ requestFocus(FocusDirection) API āϝ⧋āĻ— āĻ•āϰ⧇āĻ›āĻŋāĨ¤ (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-rc03

9 āĻāĻĒā§āϰāĻŋāϞ, 2025

androidx.compose.ui:ui-*:1.8.0-rc03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-rc03-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ•āĻŋāϛ⧁ āĻĢā§‹āĻ•āĻžāϏ āχāĻ¨ā§āϟāĻžāϰāĻĒ āĻĢāĻŋāĻ•ā§āϏ āĻ…āĻ•ā§āώāĻŽ āĻ•āϰ⧇ āϝāĻž āĻāĻ•āϟāĻŋ āϰāĻŋāĻ—ā§āϰ⧇āĻļāύ āϘāϟāĻžāϝāĻŧāĨ¤ ( b9d998 , b/369256395 , b/378570682 , b/376142752 , b388590015/ , b/389994198 , b/391378895 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-rc02

26 āĻŽāĻžāĻ°ā§āϚ, 2025

androidx.compose.ui:ui-*:1.8.0-rc02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-rc02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āĻ­āĻŋāω āĻ•āĻŽā§āĻĒā§‹āϜ āĻšāĻžāϝāĻŧāĻžāϰāĻžāĻ°ā§āĻ•āĻŋāϤ⧇ āĻāĻŽāĻŦ⧇āĻĄ āĻ•āϰāĻž āĻšāϞ⧇ āϤāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĒā§āϰāĻŦ⧇āĻļāĻ•āĻžāϰ⧀ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ⧇āϰ āĻ•āĻžāϰāĻŖ āĻšāĻŦ⧇ āϝāĻ–āύ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āĻ­āĻŋāω āĻāĻ•āϟāĻŋ āĻ…āϞāϏāϞāĻŋāĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ ( 765562 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-rc01

12 āĻŽāĻžāĻ°ā§āϚ, 2025

androidx.compose.ui:ui-*:1.8.0-rc01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-rc01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āϏāĻĢā§āϟ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āϏāĻš āĻāĻ•āϟāĻŋ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž AndroidView āϏāϰāĻžāύ⧋ āĻšāϞ⧇ āĻ•ā§āĻ°ā§āϝāĻžāĻļ⧇āϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇⧎ ( Ic725a )
  • āύāϤ⧁āύ āĻĢā§‹āĻ•āĻžāϏ āĻ¸ā§āĻŸā§‡āϟ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻŋāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇āĨ¤ ( b/395895685 )
  • āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ ā§āϝ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ LaunchedEffect āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻŦā§āϞāĻ• āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇āĨ¤ ( b/392539099 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-beta03

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰ⧀ 26, 2025

androidx.compose.ui:ui-*:1.8.0-beta03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.8.0-beta03 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϏāϰāĻžāύ⧋ enableAccessibilityChecks() API āϝāĻž compose:ui:ui-test-accessibility āφāϞāĻžāĻĻāĻž āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ Android-āĻāϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻšā§‡āĻ• āϚāĻžāϞ⧁ āĻ•āϰ⧇ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ TestRule āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰ⧇āύ āĻāĻŦāĻ‚ TestRule ( I547ef , b/3915607 ) āĻ āĻ•āϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ compose:ui:ui-test-junit4-accessibility āύāĻž āĻ•āϰ⧇āύ
  • āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ InputText āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āφāωāϟāĻĒ⧁āϟ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻžāϰ āφāϗ⧇ āĻāĻ•āϟāĻŋ āĻŸā§‡āĻ•ā§āϏāϟāĻĢāĻŋāĻ˛ā§āĻĄā§‡āϰ āĻŽāĻžāύ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻ•āϰ⧇āĨ¤ ( IAe46a )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϰ āĻ•āĻžāϰāϪ⧇ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϗ⧁āϞāĻŋ āχāύāĻĒ⧁āϟ āĻĒāĻžāĻ ā§āϝ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āφāωāϟāĻĒ⧁āϟ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻĒāĻžāĻ ā§āϝ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤ ( Iae46a , b/395911609 , b/176949051 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-beta02

12 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2025

androidx.compose.ui:ui-*:1.8.0-beta02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.8.0-beta02 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • Configuration#screenWidth / heightDp āĻ āĻ•āϞ⧇āϰ āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϏāϤāĻ°ā§āĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ¨ā§āϟ āĻšā§‡āĻ• āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ - āĻŦāĻ°ā§āϤāĻŽāĻžāύ āωāχāĻ¨ā§āĻĄā§‹āϰ āφāĻ•āĻžāϰ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ LocalWindowInfo.current.containerSize āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-beta01

āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 29, 2025

androidx.compose.ui:ui-*:1.8.0-beta01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.8.0-beta01 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • ContextualFlowRow āĻāĻŦāĻ‚ ContextualFlowColumn āĻ…āĻŦāϚāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āĻāχ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āωāĻĒāĻžāĻĻāĻžāύāϟāĻŋ 1.7 āϏāĻžāϞ⧇ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻāĻ–āύāĻ“ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋ, āĻāĻŦāĻ‚ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύāϕ⧇ āĻ…āĻŦāĻžāĻžā§āĻ›āĻŋāϤ āĻŦāϞ⧇ āĻŽāύ⧇ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇, āĻāχ āωāĻĒāĻžāĻĻāĻžāύāϟāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āωāĻĒāĻžāĻĻāĻžāύ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
    • FlowRow āĻāĻŦāĻ‚ FlowColumn āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž 1.7-āĻ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϝāĻžāϤ⧇ āĻāĻ•āϟāĻŋ overflow āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ…āĻŦāϚāϝāĻŧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻāχ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ›āĻžāĻĄāĻŧāĻž āĻ“āĻ­āĻžāϰāϞ⧋āĻĄāϗ⧁āϞāĻŋ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāχ āĻ“āĻ­āĻžāϰāϞ⧋āĻĄāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāĻĢāĻ˛ā§āϟ "āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋" āφāϚāϰāĻŖ āĻšāĻŦ⧇ "āĻ•ā§āϞāĻŋāĻĒ", āϝ⧇āĻŽāύāϟāĻŋ āĻāϟāĻŋāϰ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ⧇āϰ āĻĒāϰ āĻĨ⧇āϕ⧇ āĻ›āĻŋāϞāĨ¤
    • ContextualFlowRow āϜāĻ¨ā§āϝ āĻ…āύ⧇āĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ FlowRow āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž āĻ¸ā§āĻŦā§€āĻ•āĻžāϰ āĻ•āϰāĻŋ āϝ⧇ āĻāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϏāĻžāϧāĻžāϰāĻŖāĻ­āĻžāĻŦ⧇ āϏāĻ¤ā§āϝ āύāϝāĻŧāĨ¤ ContextualFlowRow āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀-āĻ¸ā§āĻĒ⧇āϏ⧇ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύāϝ⧋āĻ—ā§āϝ, āĻāĻŦāĻ‚ āϕ⧇āω āĻāϟāĻŋāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āχāĻšā§āĻ›āĻž āĻ•āϰāϞ⧇ āĻŽāĻžāύāĻŋāϝāĻŧ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇, āφāĻŽāϰāĻž āĻāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āφāĻļāĻž āĻ•āϰāĻŋāĨ¤ ( āχāĻŦāĻžāĻĢ⧇āĻ• )
  • SemanticsNodeInteraction.semanticsId() āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ SemanticsNodeInteraction.fetchSemanticsNode().id āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( e397a )
  • āĻĒ⧁āϰāĻžāύ⧋ āĻ…āĻŸā§‹āĻĢāĻŋāϞ API āϗ⧁āϞāĻŋāϕ⧇ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I943ff )
  • āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻĨāĻžāĻ•āĻžāϰ āϜāĻ¨ā§āϝ requestAutofill API āĻĒ⧁āύāϰāĻžāϝāĻŧ āϞāĻŋāϖ⧁āύāĨ¤ ( Id1929 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ¸ā§āĻĨāĻŋāϰ āĻĢā§‹āĻ•āĻžāϏ āϏāĻŽāĻ¸ā§āϝāĻž āϝ⧇āĻ–āĻžāύ⧇ requestFocus() āĻāĻ•āϟāĻŋ āĻ…āϝ⧌āĻ•ā§āϤāĻŋāĻ• previouslyFocusedRect āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ (āĻĢā§‹āĻ•āĻžāϏ⧇āϰ āĻĻāĻŋāĻ• āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ) āĻāĻ•āϟāĻŋ ComposeView āĻāϰ āφāϗ⧇ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āĨ¤ ( IFdc2f , b/388590015 )
  • GraphicsLayer.record { this@ContentDrawScope.drawContent() } āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŽāĻžāĻā§‡ āĻŽāĻžāĻā§‡ āĻāĻ•āϟāĻŋ NPE āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāχāĻ­āĻžāĻŦ⧇ drawContent() āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰ⧇āύ, āϤāĻžāĻšāϞ⧇ GraphicsLayer#record āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ DrawScope āĻ­āĻŋāϤāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϭ⧁āϞāĻŦ⧇āύ āύāĻž, GraphicsLayer āĻāϰ āϏāĻĻāĻ¸ā§āϝ āĻĢāĻžāĻ‚āĻļāύ āύāϝāĻŧāĨ¤ ( I75fc0 , b/389046242 )
  • āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āĻ•āĻ–āύāĻ“ āĻ•āĻ–āύāĻ“ āϭ⧁āϞāĻ­āĻžāĻŦ⧇ āĻ…āύ⧁āĻŦāĻžāĻĻ āĻ•āϰāĻž āωāĻĒāĻŦ⧃āĻ¤ā§āϤ āϏāĻš āĻĒāĻžāĻ ā§āϝ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ, āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ b/389707025 āĻĻ⧇āϖ⧁āύ ( Ie55b1 , b/389707025 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha08

15 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2025

androidx.compose.ui:ui-*:1.8.0-alpha08 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha08-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • AutofillManager āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻŽā§‚āĻ°ā§āϤ āĻļā§āϰ⧇āĻŖā§€ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ ( I0a3b0 )
  • IME āĻĢā§‹āĻ•āĻžāϏāϝ⧋āĻ—ā§āϝ āφāχāĻŸā§‡āĻŽ āĻ›āĻžāĻĄāĻŧāĻž ComposeView -āĻ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāϞ⧇, āϚāĻžāχāĻ˛ā§āĻĄ AndroidViews āĻŽāĻ§ā§āϝ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ, āĻāĻŦāĻ‚ AndroidView āϛ⧇āĻĄāĻŧ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻ…āύ⧁āϰ⧋āϧ āϏāĻš āĻ•ā§āĻ°ā§āϝāĻžāĻļ āϏāĻš āĻŦ⧇āĻļ āĻ•āĻŋāϛ⧁ āĻĢā§‹āĻ•āĻžāϏ-āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ia03c3 , b/369256395 , b/378570682 , b/376142752 )
  • FocusEnterExitScope.cancelFocus() cancelFocusChange() āĻ•āϰāϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ ( I89959 )
  • āφāĻĒāύāĻŋ āĻāĻ–āύ RectInfo.calculateOcclusions() āĻĻāĻŋāϝāĻŧ⧇ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āĻ…āĻ•ā§āϞ⧁āĻļāύ āĻ—āĻŖāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤
  • āĻ—ā§āϞ⧋āĻŦāĻžāϞ āϞ⧇āφāωāϟ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϜāύ āĻļā§āϰ⧋āϤāĻž āύāĻŋāĻŦāĻ¨ā§āϧāύ āĻ•āϰāϤ⧇ DelegatableNode āĻ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I68b59 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • ComposeContentTestRule.setContent āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻ…āϧ⧀āύ⧇ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻšā§‹āĻ¸ā§āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āϝ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āϏ⧇āϟāĻŋ āĻāĻ–āύ āĻĨāĻŋāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ Theme.Material.Light.NoActionBar , āϝāĻžāϤ⧇ SDK 35 āϟāĻžāĻ°ā§āϗ⧇āϟ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϰ āϏāĻžāĻĨ⧇ āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒ āĻ•āϰāĻž āĻĨ⧇āϕ⧇ ActionBar āĻāĻĄāĻŧāĻžāύ⧋ āϝāĻžāϝāĻŧāĨ¤ āĻāχ āφāϚāϰāĻŖ āĻĨ⧇āϕ⧇ āĻ…āĻĒā§āϟ āφāωāϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ ui-test-manifest āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰāĻļā§€āϞāϤāĻž āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ āϝ⧋āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āφāĻĒāύāĻžāϰ āĻĒāĻ›āĻ¨ā§āĻĻ⧇āϰ āĻĨāĻŋāĻŽ āϏāĻš ComponentActivity āϜāĻ¨ā§āϝ AndroidManifest.xmlāĨ¤ ( I7ae1b , b/383368165 )
  • āĻāĻ•āχ āĻ­āĻŋāĻ¨ā§āύāϤāĻž āϏ⧇āϟāĻŋāĻ‚āϏ āϏāĻš āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻĢāĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻ“āĻ­āĻžāϰ-āĻ•ā§āϝāĻžāĻļāĻŋāĻ‚ āĻāĻĄāĻŧāĻžāĻŦ⧇ āϝāĻžāϰ āĻĢāϞ⧇ āϭ⧁āϞ āĻĒā§āϰāĻ•āϰāĻŖ āϏ⧇āϟāĻŋāĻ‚āϏ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ ( if3dff , b/372044241 )
  • AnnotatedString.fromHtml āĻāĻ–āύ <ul>/<li> āĻŸā§āϝāĻžāĻ— āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤ ( I7c2fe , b/299662276 , b/139326648 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āĻāϟāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āϰāϚāύāĻž āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ ( I80809 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha07

11 āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.8.0-alpha07 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha07-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϟ⧁āϞ⧇āϰ āϜāĻ¨ā§āϝ LayoutNode āĻĨ⧇āϕ⧇ āωāĻ¨ā§āĻŽā§āĻ•ā§āϤ āĻŽāĻžāϞāĻŋāĻ•āĨ¤ ( I26f7f )
  • LocalAutofillHighlightColor āĻ•āĻžāϞāĻžāϰ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ⧇ āĻāĻ•āϟāĻŋ āϰāϙ⧇āϰ āĻĒā§āϰāĻ•āĻžāϰ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I0e05b )
  • āĻ…āĻĒā§āϰāϚāϞāĻŋāϤ UrlAnnotation āĻāĻŦāĻ‚ āĻāϰ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āϰāĻžāϖ⧁āύ⧎ ( IC0021 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • BasicText āĻŦāĻž āĻŸā§‡āĻ•ā§āϏāϟ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ ( be7605 , b/374115892 ) āĻāϰ āĻ­āĻŋāϤāϰ⧇ LinkAnnotation āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ¸ā§āĻĨāĻŋāϰ IndexOutOfBoundsException āĻ•ā§āĻ°ā§āϝāĻžāĻļ
  • āĻ¸ā§āĻĨāĻŋāϰ āϏāĻŽāĻ¸ā§āϝāĻž āϝ⧇āĻ–āĻžāύ⧇ āĻ•āĻžāĻ¸ā§āϟāĻŽ āφāĻ•ā§ƒāϤāĻŋ āϏāĻš āĻ­āϰāĻž āĻĒāĻžāĻ ā§āϝ āĻ•ā§āώ⧇āĻ¤ā§āϰ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻ• āϞāĻžāχāύ āĻ•ā§āϞāĻŋāĻĒ āĻ•āϰ⧇āύāĻŋāĨ¤ ( I4f87f , b/380704151 )
  • āĻĻā§€āĻ°ā§āϘ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āϏāĻš āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻŦā§āϝāĻžāĻ•āĻ—ā§āϰāĻžāωāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I4d57a )
  • āĻāχ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϟāĻŋ āĻāĻ–āύ JSpecify nullness āĻŸā§€āĻ•āĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇, āϝāĻž āϟāĻžāχāĻĒ-āĻŦā§āϝāĻŦāĻšāĻžāϰāĨ¤ Kotlin āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āϏāĻ āĻŋāĻ• āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ: -Xjspecify-annotations=strict (āĻāϟāĻŋ Kotlin āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ⧇āϰ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 2.1.0 āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻšāĻ“āϝāĻŧāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ)āĨ¤ ( Idfef8 , b/326456246 )
  • Android Q+ āĻ āϚāϞāĻžāĻ•āĻžāϞ⧀āύ āĻ“āϝāĻŧāĻžāχāĻĄ āĻ—āĻžāĻŽā§āϟ āĻāĻŦāĻ‚ HDR āϰāϙ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻŽā§āĻĒā§‹āϜ āϏāĻŽāĻ°ā§āĻĨāύ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύāĨ¤ ( Icd8be , b/379135036 )
  • āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻĢāĻ¨ā§āϟāϗ⧁āϞāĻŋ āϝ⧇āϗ⧁āϞāĻŋ āϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻ°ā§āĻĨ āĻšāϝāĻŧ āϏ⧇āϗ⧁āϞāĻŋ āĻāĻ–āύ āύāĻŋāσāĻļāĻŦā§āĻĻ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻĢāĻ¨ā§āĻŸā§‡ āĻĢāĻŋāϰ⧇ āφāϏāĻŦ⧇, āĻĒāϰāĻŋāĻŽāĻžāĻĒ⧇ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻžāϰ āĻĒā§‚āĻ°ā§āĻŦ⧇āϰ āφāϚāϰāϪ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤ ( Ib6a49 )
  • AndroidView āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻāĻŦāĻ‚ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻĨāĻžāĻ•āϞ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ ( I53446 )
  • āφāĻŦāĻĻā§āϧ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ āĻ•āĻ°ā§āĻŽā§‡āϰ āĻŦāĻžāχāϰ⧇ āĻĨ⧇āϕ⧇ requestFocus() āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧁āύāĨ¤ ( IA8461 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • UI-āϤ⧇ BringIntoViewResponderModifierNode āϝ⧋āĻ— āĻ•āϰ⧁āύ, āϝāĻž Bring Into View āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āωāĻĒāĻžāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āϏ⧇āχ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻ¸ā§āϤāϰ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ ( IA6dd8 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha06

13 āύāϭ⧇āĻŽā§āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.8.0-alpha06 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha06-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • stylusHoverIcon āϏāĻ‚āĻļā§‹āϧāĻ• āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ ( Iff20a , b/331289114 )
  • āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰāϕ⧇ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āĨ¤ ( I84914 , b/376080755 )
  • āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĻāĻŋāĻ• āĻĻāĻŋāϝāĻŧ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ focusRequester āĻāĻŦāĻ‚ FocusTargetModifierNode āωāĻ­āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ requestFocus(FocusDirection) āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ ( I5d9ec , b/245755256 )
  • FocusProperties.enter āĻāĻŦāĻ‚ FocusProperties.exit onEnter āĻāĻŦāĻ‚ onExit āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇, FocusDirection āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āϰāĻŋāϏāĻŋāĻ­āĻžāϰ āĻ¸ā§āϕ⧋āĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ ( I6e667 )
  • āĻĒāĻžāĻ ā§āϝ āϟ⧁āϞāĻŦāĻžāϰ⧇ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ ( Ie6a4c )
  • API āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ Modifier.focusRestorer() ( I99c03 ):
    • āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ 'āĻĢāϞāĻŦā§āϝāĻžāĻ•'
    • āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻāĻ–āύ āĻāĻ•āϟāĻŋ FocusRequester āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ lambda āύāϝāĻŧ
    • āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŽāĻžāύ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āϏāĻš āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻāĻ–āύ āύāύ-āύāĻžāϞ
  • āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĨ⧇āϕ⧇ @Experimental āĻŸā§€āĻ•āĻž āϏāϰāĻžāύ⧋ āĻšāĻšā§āϛ⧇āĨ¤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋ āĻāĻ–āύāĻ“ āĻāχ āϰāĻŋāϞāĻŋāϜāϟāĻŋāϕ⧇ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇ WIP āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāĻŽāϰāĻž @Expemiental API ( Id8398 ) āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āϚāĻžāχ āύāĻž
  • LocalHapticFeedback āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟ HapticFeedback āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇ āϝāĻ–āύ āĻ­āĻžāχāĻŦā§āϰ⧇āϟāϰ API āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϝ⧇ āĻšā§āϝāĻžāĻĒāϟāĻŋāĻ•ā§āϏ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤāĨ¤ HapticFeedbackType āĻ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤāϗ⧁āϞāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ - Confirm , ContextClick , GestureEnd , GestureThresholdActivate , Reject , SegmentFrequentTick , SegmentTick , ToggleOn , ToggleOff , VirtualKey . Button , IconButton , TextButton , āĻāĻŦāĻ‚ Card āĻŽāϤ⧋ āĻĻā§€āĻ°ā§āϘ-āĻ•ā§āϞāĻŋāĻ•āϝ⧋āĻ—ā§āϝ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϧāĻžāύ āĻ•āϰ⧁āύ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻĻā§€āĻ°ā§āϘ-āĻ•ā§āϞāĻŋāĻ• āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāĻžāϰ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻ–āύ LONG_PRESS āĻšā§āϝāĻžāĻĒāϟāĻŋāĻ• āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰ⧇āĨ¤ ( I5083d )
  • OverscrollConfiguration āĻāĻŦāĻ‚ LocalOverscrollConfiguration āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ, āĻāĻŦāĻ‚ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ“āĻ­āĻžāϰāĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ rememberPlatformOverscrollFactory āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻ“āĻ­āĻžāϰāĻ¸ā§āĻ•ā§āϰ⧋āϞ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāϤ⧇, LocalOverscrollConfiguration provides null āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, LocalOverscrollFactory provides null āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āĻ—ā§āϞ⧋ āĻ•āĻžāϞāĻžāϰ/āĻĒā§āϝāĻžāĻĄāĻŋāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇, LocalOverscrollConfiguration provides OverscrollConfiguration(myColor, myPadding) , LocalOverscrollFactory provides rememberPlatformOverscrollFactory(myColor, myPadding) āĨ¤ ( IE71f9 , b/255554340 , b/234451516 )
  • āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• GlobalAssertions API āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ āĻ›āĻŋāϞ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻšā§‡āĻ• āϚāĻžāϞāĻžāύ⧋, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏ⧇āχ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ enableAccessibilityChecks() āĻĻ⧇āϖ⧁āύāĨ¤ ( I59322 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha05

āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ 30, 2024

androidx.compose.ui:ui-*:1.8.0-alpha05 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha05-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

āĻāχ āϰāĻŋāϞāĻŋāĻœā§‡ āĻāĻ•āϟāĻŋ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻĒāϤāĻžāĻ•āĻžāϰ āĻĒāĻŋāĻ›āύ⧇ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āωāĻ¨ā§āĻŽā§āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ āφāĻŽāϰāĻž āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āωāĻ¨ā§āύāϤāĻŋāϰ āϜāĻ¨ā§āϝ āĻ•āĻžāϜ āĻ•āϰāĻ›āĻŋ, āĻāĻŦāĻ‚ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋāϤ⧇ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϖ⧁āρāϜāĻ›āĻŋāĨ¤ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻšāĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āĻŦāĻŋāĻ•āĻļāĻŋāϤ āĻšāĻŦ⧇ āĻŦāϞ⧇ āφāĻļāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤

  • āĻ…āĻŸā§‹āĻĢāĻŋāϞ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇, onCreate āĻ ComposeUiFlags.isSemanticAutofillEnabled āϕ⧇ āϏāĻ¤ā§āϝ⧇ āϏ⧇āϟ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏāĻ°ā§āĻŦāĻļ⧇āώ āϰāϚāύāĻž āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ⧎
  • āĻ…āĻŸā§‹āĻĢāĻŋāϞ⧇āϰ āĻāχ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ, āĻ¸ā§āĻŸā§āϰāĻ‚ āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āϏāĻžāĻœā§‡āĻ¸ā§āϟ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āύ⧇āĻ­āĻŋāϗ⧇āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāĻžāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒā§‚āϰāĻŖāϝ⧋āĻ—ā§āϝ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĢā§‹āĻ•āĻžāϏ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āĻŦāĻž āĻĒāĻžāĻ ā§āϝ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϤ⧇ āĻĒāĻžāĻ ā§āϝ āϟ⧁āϞāĻŦāĻžāϰ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻŸā§āϰāĻŋāĻ—āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻļ⧇āώ āĻšāϞ⧇ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āϟ āĻšāĻžāχāϞāĻžāχāϟ āĻšāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • expect / actual āĻ•āĻžāĻ āĻžāĻŽā§‹ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāϤ⧇ āĻ¸ā§āĻŦāϤāσāĻĒā§‚āĻ°ā§āĻŖ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ ( I22dce )
  • CompositionLocal āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ āϝāĻž āĻ…āĻŸā§‹āĻĢāĻŋāϞ⧇āϰ āϏāĻĢāϞ āĻĢāĻŋāϞāĻŋāĻ‚ āĻšāĻžāχāϞāĻžāχāĻŸā§‡āϰ āϰāĻ™ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I32092 )
  • Modifier.onRectChanged API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻāĻ•āϟāĻŋ API āϝāĻž āĻāĻ•āϜāύāϕ⧇ āĻāĻ•āϟāĻŋ LayoutNode āĻāϰ āϰ⧁āϟ/āωāχāĻ¨ā§āĻĄā§‹/āĻ¸ā§āĻ•ā§āϰāĻŋāύ-āϰāĻŋāϞ⧇āϟāĻŋāĻ­ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻāĻŦāĻ‚ āφāĻ•āĻžāϰ⧇ āϏāĻĻāĻ¸ā§āϝāϤāĻž āύāĻŋāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ API āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇ āϝāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ onGloballyPositioned modifier āĻ•āϰ⧇, āϤāĻŦ⧇ āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻ•āĻŽ āĻ“āĻ­āĻžāϰāĻšā§‡āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āϤāĻž āĻ•āϰ⧇ āĻāĻŦāĻ‚ API āĻāϰ āϏāĻžāĻĨ⧇ āφāϏ⧇ āϝāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧇āϏ⧇āϰ āϚāĻžāĻšāĻŋāĻĻāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻĄāĻŋāĻŦāĻžāωāĻ¨ā§āϏ āĻāĻŦāĻ‚ āĻĨā§āϰ⧋āϟāϞ āĻ•āϰāĻžāϰ āϏ⧁āĻŦāĻŋāϧāĻžāĨ¤ ( Id28c7 , b/372765423 , b/372757007 , b/372994338 )
  • commit() āĻāĻŦāĻ‚ cancel() API āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āĻŽā§āϝāĻžāύ⧇āϜāĻžāϰāϕ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰ⧇ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āύāϤ⧁āύ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻž āĻļāĻ‚āϏāĻžāĻĒāĻ¤ā§āϰ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰ⧇āĨ¤ ( I2da00 )
  • āύāϤ⧁āύ AutofillManager āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āϝāĻžāĻ¤ā§āϰāĻž āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ isSemanticAutofillEnabled āĻĒāϤāĻžāĻ•āĻž āĻ…āĻŸā§‹āĻĢāĻŋāϞ⧇āϰ āĻāχ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋ āϚāĻžāϞ⧁ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I9d484 )
  • Modifier.onRectChanged API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻāĻ•āϟāĻŋ API āϝāĻž āĻāĻ•āϜāύāϕ⧇ āĻāĻ•āϟāĻŋ LayoutNode āĻāϰ āϰ⧁āϟ/āωāχāĻ¨ā§āĻĄā§‹/āĻ¸ā§āĻ•ā§āϰāĻŋāύ-āϰāĻŋāϞ⧇āϟāĻŋāĻ­ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻāĻŦāĻ‚ āφāĻ•āĻžāϰ⧇ āϏāĻĻāĻ¸ā§āϝāϤāĻž āύāĻŋāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ API āĻ…āύ⧇āĻ•āϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇ āϝāĻž āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ onGloballyPositioned modifier āĻ•āϰ⧇, āϤāĻŦ⧇ āĻāϟāĻŋ āĻ…āύ⧇āĻ• āĻ•āĻŽ āĻ“āĻ­āĻžāϰāĻšā§‡āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āϤāĻž āĻ•āϰ⧇ āĻāĻŦāĻ‚ API āĻāϰ āϏāĻžāĻĨ⧇ āφāϏ⧇ āϝāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϕ⧇āϏ⧇āϰ āϚāĻžāĻšāĻŋāĻĻāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻĄāĻŋāĻŦāĻžāωāĻ¨ā§āϏ āĻāĻŦāĻ‚ āĻĨā§āϰ⧋āϟāϞ āĻ•āϰāĻžāϰ āϏ⧁āĻŦāĻŋāϧāĻžāĨ¤ ( I3c8fa )
  • āĻŦāĻ°ā§āϧāĻŋāϤ āĻ…āĻŸā§‹āĻĢāĻŋāϞ āϏāĻŽāĻ°ā§āĻĨāύ⧇āϰ āϜāĻ¨ā§āϝ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻ—āϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻāĻŦāĻ‚ āĻĄā§‡āϟāĻž āĻĒā§āϰāĻ•āĻžāϰ āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ ( I52c7d )
  • AnnotatedString āύāĻŋāĻ°ā§āĻŽāĻžāϤāĻžāϰ āϏāĻŽāĻ¸ā§āϤ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻ–āύ āĻ…-āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• ( Ia89c8 , b/261561823 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ•āĻŽā§āĻĒā§‹āĻœā§‡ āĻāĻŽāĻŦ⧇āĻĄ āĻ•āϰāĻž āĻ­āĻŋāω āĻāĻ–āύ āϰ⧋āϟāĻžāϰāĻŋ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻĻāĻŋ āϏ⧇āϗ⧁āϞāĻŋ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āĻšāϝāĻŧ ( I4d53a , b/320510084 )
  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āĻĒā§āϰāĻ•āĻžāϰāϗ⧁āϞāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻšāĻŦ⧇ āύāĻž ( Ia9b99 , b/352336694 )
  • āĻ•āĻŋāϛ⧁ āĻĒ⧁āϰāĻžāύ⧋ Sony āĻĄāĻŋāĻ­āĻžāχāϏ⧇ POBox āϜāĻžāĻĒāĻžāύāĻŋ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ TextField āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻŦāĻžāϧāĻž āĻĻ⧇āϝāĻŧ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻžāϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧇āϛ⧇āĨ¤ ( IA9b99 , b/373743376 )
  • āϕ⧇āĻ¨ā§āĻĻā§āϰ⧀āĻ•āϰāϪ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĒāĻ°ā§āĻĻāĻžāϰ āύ⧀āĻšā§‡ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻĄāĻžāϝāĻŧāĻžāϞāĻ—āϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻ¸ā§āĻĨāĻŋāϰ āϏāĻŽāĻ¸ā§āϝāĻž ( Ia2ec , b/373093006 )
  • āϟāĻžāĻ°ā§āϗ⧇āϟāĻŋāĻ‚ API 35+ āφāϰ āĻĄāĻžāϝāĻŧāĻžāϞāĻ—āϗ⧁āϞāĻŋāϕ⧇ decorFitsSystemWindows āĻŽāĻŋāĻĨā§āϝāĻž āϏ⧇āϟ āĻ•āϰāϤ⧇ āĻŦāĻžāĻ§ā§āϝ āĻ•āϰ⧇ āύāĻžā§ˇ ( Ibc94 , b/364492593 )
  • āωāχāĻ¨ā§āĻĄā§‹āϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻ¸ā§āϤāϰāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϞ⧇ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ (āϝ⧇āĻŽāύ āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āĻāĻŦāĻ‚ āĻĒā§āϰāϧāĻžāύ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁) ( I675ba , b/330955281 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha04

āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ 16, 2024

androidx.compose.ui:ui-*:1.8.0-alpha04 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha04-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • DelegatableNode#onLayoutDirectionChange āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ ( DelegatableNode#onDensityChange , b/340662451 )
  • āĻŦāĻ°ā§āϤāĻŽāĻžāύ āωāχāĻ¨ā§āĻĄā§‹āϰ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āφāĻ•āĻžāϰ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ WindowInfo#containerSize āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ LocalWindowInfo āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( Idc38c , b/369334429 , b/360343819 )
  • āϚāϞāĻŽāĻžāύ āĻĢā§āϞāĻŋāĻ‚ āĻāϰ āϏāĻŽāϝāĻŧ āύ⧋āĻĄ āĻŸā§āϰāĻŋ āĻĨ⧇āϕ⧇ āϏāϰāĻžāύ⧋ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ¸ā§āĻ•ā§āϰāϞ⧇āĻŦāϞāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĢāĻŋāĻ•ā§āϏ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ āĻāĻ–āύ āĻāχ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻĢā§āϞāĻŋāĻ‚ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āĻ…āĻŦāĻļāĻŋāĻˇā§āϟ āĻŦ⧇āϗ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ onPostFling āχāϭ⧇āĻ¨ā§āϟ āĻĒāĻžāĻ āĻžāĻŦ⧇āĨ¤ āϰāĻŋāĻ—ā§āϰ⧇āĻļāύ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāϚāϰāĻŖ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāϤ⧇ āφāĻŽāϰāĻž NewNestedScrollFlingDispatchingEnabled āĻĒāϤāĻžāĻ•āĻžāĻ“ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻ›āĻŋāĨ¤ āĻĒāϤāĻžāĻ•āĻž āĻŦāĻŋāϟāĻž āφāϗ⧇ āϏāϰāĻžāύ⧋ āĻšāĻŦ⧇. ( I05c37 , b/371168883 )
  • āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ PointerInputModifierNode#touchBoundsExpansion , āϝāĻž āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇āϰ āĻ¸ā§āĻĒāĻ°ā§āĻļ āϏ⧀āĻŽāĻž āĻŦāĻĄāĻŧ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( Iccf02 , b/335339283 )
  • āĻŦāĻ°ā§āϤāĻŽāĻžāύ āωāχāĻ¨ā§āĻĄā§‹āϰ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻ•āĻ¨ā§āĻŸā§‡āχāύāĻžāϰ āφāĻ•āĻžāϰ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāϤ⧇ WindowInfo#containerSize āϝ⧋āĻ— āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ LocalWindowInfo āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I27767 , b/369334429 , b/360343819 )
  • āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻĒāĻŋāύ āĻ•āϰāϤ⧇ TextFields āĻĨ⧇āϕ⧇ readOnly āϏāϰāĻžāύāĨ¤ ( I3aaba )
  • Paragraph āĻāĻŦāĻ‚ ParagraphIntrinsics āĻāĻ–āύ AnnotatedString āĻ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āϏāĻŽāĻ¸ā§āϤ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āύ⧇āϝāĻŧ, āφāϗ⧇ āĻāϟāĻŋāϤ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ SpanStyles āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ›āĻŋāϞ ( I12f80 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • AnnotatedString āĻ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻāϗ⧁āϞāĻŋ āϕ⧀āĻ­āĻžāĻŦ⧇ āφāϚāϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻž āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āφāϗ⧇ āφāĻĒāύāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āύāύ-āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒāĻŋāĻ‚ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāĻ–āύ AnnotatedString āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻ“āĻ­āĻžāϰāĻ˛ā§āϝāĻžāĻĒāĻŋāĻ‚ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āϝāĻž āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻž āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻāϗ⧁āϞāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āĻŦāĻžāχāϰ⧇āϰ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻāϟāĻŋ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻāϕ⧇āϰ āϏ⧀āĻŽāĻžāύāĻžāϝāĻŧ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ⧇āϰ āĻ¸ā§āϟāĻžāχāϞāϟāĻŋ āĻŦāĻžāχāϰ⧇āϰ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ⧇āϰ āĻļ⧈āϞ⧀āϰ āϏāĻžāĻĨ⧇ āĻāϕ⧀āĻ­ā§‚āϤ āĻšāĻŦ⧇ ( āφāχāϏāĻŋ 9554 )
  • āĻļā§‚āĻ¨ā§āϝ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ⧇āϰ LinkAnnotation āϏāĻš AnnotatedString āĻ•ā§āϰāĻžāĻļ āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ ( 89AAC6 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha03

2 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.8.0-alpha03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha03-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϕ⧋āϟāϞāĻŋāύ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āφāĻĒāĻĄā§‡āϟ 1.9 ( I1a14c )
  • āĻ 11 āĻ“āϝāĻŧāĻžāχ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāĻĻāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒ⧇āϜāĻžāϰāϗ⧁āϞāĻŋāϤ⧇ āϤāĻžāϞāĻŋāĻ•āĻž āφāϚāϰāϪ⧇āϰ āĻ…āύ⧁āĻ•āϰāĻŖ āĻ•āϰāϤ⧇ āĻ•ā§āϝāĻžāϰ⧋āϏ⧇āϞ āύāĻžāĻŽā§‡ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻœā§āĻžāĻžāύ⧇āϰ āĻ­ā§‚āĻŽāĻŋāĻ•āĻž āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āϛ⧇āύāĨ¤ ( āφāχāĻĄāĻŋ 354 āĻŦāĻŋ, āĻŦāĻŋ/354109776 , āĻŦāĻŋ/239672673 )
  • invisibleToUser() āĻāϰ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰ⧁āύ hideFromAccessibility āĨ¤ āĻāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻāĻ•āχ āĻĨāĻžāϕ⧇āĨ¤ āφāϰ⧋ āĻŦāĻŋāĻ¸ā§āϤāĻžāϰāĻŋāϤ āϜāĻžāύāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻĻ⧇āϖ⧁āύ. ( āφāχāĻŦāĻŋ 43 āĻ 3 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • SensitiveContent āϏāĻ‚āĻļā§‹āϧāĻ• āϜāĻ¨ā§āϝ āĻĄāĻ•ā§āϏ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž ( āφāχāĻŦāĻŋ 0442 )
  • āĻ¸ā§āĻĨāĻŋāϰ āϏāĻŽāĻ¸ā§āϝāĻž āϝ⧇āĻ–āĻžāύ⧇ āĻ•āĻŋāϛ⧁ āĻœā§‡āύ⧇āϰāĻŋāĻ• āφāωāϟāϞāĻžāχāύ āĻ•ā§āϞāĻŋāĻĒāϗ⧁āϞāĻŋ āĻ•āĻŋāϛ⧁ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āωāĻšā§āϚāϤāĻž āĻ›āĻžāϝāĻŧāĻžāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻž āĻšāĻŦ⧇
  • āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋāϤ⧇ āĻœā§‡āύ⧇āϰāĻŋāĻ• āφāωāϟāϞāĻžāχāύ āĻ•ā§āϞāĻŋāĻĒāϗ⧁āϞāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻšāϞ⧇ āĻ–āĻžāϞāĻŋ āĻ•ā§āϞāĻŋāĻĒāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇ āĻāĻŽāύ āĻ¸ā§āĻĨāĻŋāϰ āϏāĻŽāĻ¸ā§āϝāĻžāĨ¤
  • āφāχāĻāĻŽāχ āϝāĻ–āύ āϕ⧋āύāĻ“ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻĻ⧃āĻļā§āϝ⧇ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ ComposeView āĻĢā§‹āĻ•āĻžāϏ āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ āϤāĻ–āύ āĻ¸ā§āĻĨāĻŋāϰ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ clearFocus() āφāϚāϰāĻŖāϟāĻŋ āĻāĻĒāĻŋāφāχ <28 āĻ āĻ­āĻŋāω āφāϚāϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ, āϝ⧇āĻ–āĻžāύ⧇ clearFocus() āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­āĻŋāωāϕ⧇ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧀āĻ­ā§‚āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϞ⧇āφāωāϟ āĻĒāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻžāĻŦāϕ⧋āĻĒāϜāĻŋāĻļāύ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻĒ⧃āĻĨāĻ• āĻ•āϰ⧇ LazyList āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āύ⧋āĻĄāϗ⧁āϞāĻŋāϤ⧇ āĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟ āϘāĻŸā§‡āĻ›āĻŋāϞ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇āĨ¤
  • āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻĢā§āϞāĻŋāĻ•āĻžāϰāϗ⧁āϞāĻŋ āϝāĻ–āύ āϕ⧋āύāĻ“ TextField āĻĨ⧇āϕ⧇ āϕ⧋āύāĻ“ EditText āĻŦāĻž āĻ…āĻ¨ā§āϝ āϕ⧋āύāĻ“ āĻ­āĻŋāω āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āϏāĻŽā§āĻĒāĻžāĻĻāĻ•āϕ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰ⧇āĨ¤
  • āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ⧇ onPostFling āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻŦ⧇āĨ¤
  • āϏāĻžāϧāĻžāϰāĻŖ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ āωāĻ¨ā§āύāϤāĻŋ

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha02

āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ 18, 2024

androidx.compose.ui:ui-*:1.8.0-alpha02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • TextOverflow.StartEllipsis āĻāĻŦāĻ‚ TextOverflow.MiddleEllipsis āĻāĻ–āύ āωāĻĒāϞāĻ­ā§āϝ āϝāĻž āĻāĻ•āĻ• āϞāĻžāχāύ⧇āϰ āĻĒāĻžāĻ ā§āϝ⧇āϰ āϞāĻžāχāύ⧇āϰ āĻļ⧁āϰ⧁ āĻŦāĻž āĻŽāĻžāĻāĻ–āĻžāύ⧇ āωāĻĒāĻŦ⧃āĻ¤ā§āϤ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( I38913 , āĻ–/185418980 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĄāĻžāϞāĻ— dismissOnClickoutside ( 39A3D , āĻŦāĻŋ/364508685 ) āĻ āĻŋāĻ• āĻ•āϰ⧁āύ
  • āĻĄāĻžāϝāĻŧāĻžāϞāĻ— āϏāĻžāĻŽāĻ—ā§āϰ⧀āϰ āĻ›āĻžāϝāĻŧāĻž āĻ•ā§āϞāĻŋāĻĒ āĻ•āϰāĻŦ⧇āύ āύāĻž ( E8E2F , B/363027803 )
  • āĻĢā§‹āĻ•āĻžāϏ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āϰāϚāύāĻž āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĻ⧃āĻļā§āϝ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āϚāϞāĻŽāĻžāύ āϝāĻ–āύ āϭ⧁āϞ āφāϚāϰāĻŖāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ ( 58377 , āĻŦāĻŋ/350534714 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • AlignmentLines Map āĻāĻ–āύ VerticalAlignmentLine āĻŦāĻž HorizontalAlignmentLine āĻ•āĻ‚āĻ•ā§āϰāĻŋāĻŸā§‡āϰ āϧāϰāĻŖāϗ⧁āϞāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĨ¤ ( I02912 )
  • āύāϤ⧁āύ āϏāĻžāϧāĻžāϰāĻŖ ByteArray.decodeToImageBitmap(): ImageBitmap āĻĒāĻĻā§āϧāϤāĻŋāĨ¤ ( I83c21 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha01

4 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.8.0-alpha01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.8.0-alpha01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.8

12 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2025

androidx.compose.ui:ui-*:1.7.8 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.8-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.7

āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 29, 2025

androidx.compose.ui:ui-*:1.7.7 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.7-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĢāĻŋāĻ•ā§āϏāĻĄ IndexOutOfBoundsException āϝāĻ–āύ āĻĒāĻžāĻ ā§āϝ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āϏāĻžāĻĨ⧇ LinkAnnotation āϏāĻš āĻāĻ•āϟāĻŋ AnnotatedString āĻĒāĻžāϏ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤ ( Ic96d2 )
  • āĻ•āĻŋāϛ⧁ āĻŦāĻŋāϰāϞ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āϏāĻŽāϝāĻŧāϏ⧀āĻŽāĻž āχāĻ¸ā§āϝ⧁ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝāĻ–āύ LinkAnnotation AnnotatedString āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( I04a03 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.6

11 āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.7.6 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.6-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĢā§‹āĻ•āĻžāϏ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϝāĻ–āύ āĻ…āĻŦ⧈āϧāϤāĻž āĻŽā§āϞāϤ⧁āĻŦāĻŋ āĻ›āĻŋāϞ āϤāĻ–āύ āφāĻŽāϰāĻž āϝāĻ–āύāχ āϕ⧋āύāĻ“ āĻŽā§‚āϞ āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āĻŽā§āĻ–ā§‹āĻŽā§āĻ–āĻŋ āĻšāχ āϤāĻ–āύāχ āφāĻŽāϰāĻž āϝāĻ–āύāχ āϕ⧋āύāĻ“ āĻŽā§‚āϞ āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āĻŽā§āĻ–ā§‹āĻŽā§āĻ–āĻŋ āĻšāχ āϤāĻ–āύ āφāĻŽāϰāĻž āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāϤāĻžāĻŽāĨ¤ āφāĻŽāϰāĻž āĻāĻ–āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āϞāĻ— āĻ•āϰāĻŋ ( i7ea0 , B/346370327 )āĨ¤
  • SemanticsPropertyReceiver.invisibleToUser() āĻĨ⧇āϕ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ ā§§.ā§Ž -āĻ SemanticsPropertyReceiver.hideFromAccessibility() āĻāϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ ( I448f0 , āĻŦāĻŋ/376479686 )
  • āĻ•āĻŋāϛ⧁ āĻĒ⧁āϰāĻžāύ⧋ āϏāύāĻŋ āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻĒā§‹āĻŦāĻ•ā§āϏ āϜāĻžāĻĒāĻžāύāĻŋ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ TextField āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻŦāĻžāϧāĻž āĻĻ⧇āϝāĻŧ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇āĨ¤ ( I94e0e , āĻ–/373743376 )
  • āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āχāĻ¸ā§āϝ⧁ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ BasicText āχāύāϞāĻžāχāύ āĻ•āύāĻŸā§‡āĻ¨ā§āϟ TalkBack āĻĻā§āĻŦāĻžāϰāĻž āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ ( I67bcb , āĻ–/376479686 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.5

āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ 30, 2024

androidx.compose.ui:ui-*:1.7.5 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.5-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ¸ā§āĻĨāĻŋāϰ āĻŦāĻŋāώāϝāĻŧāϗ⧁āϞāĻŋ āϝ⧇āĻ–āĻžāύ⧇ āωāĻšā§āϚāϤāĻž āĻāĻŦāĻ‚ āĻ•āĻžāĻ¸ā§āϟāĻŽ āϰ⧂āĻĒāϰ⧇āĻ–āĻžāϰ āϏāĻžāĻĨ⧇ āĻ•ā§āϞāĻŋāĻĒāĻŋāĻ‚ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤
  • āĻāĻ•āϟāĻŋ āĻĒāĻžāĻ ā§āϝ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ āĻŋāĻ• āĻ•āϰ⧇ āϝāĻž āĻļā§‚āĻ¨ā§āϝ-āĻĒā§āϰāĻ¸ā§āĻĨ⧇āϰ LinkAnnotation āĻĻāĻŋāϝāĻŧ⧇ āϘāĻŸā§‡āĨ¤ ( āφāχāϏāĻŋ 1 āχ 2 āχ )
  • āϝāĻ–āύ āĻāϟāĻŋ āĻ•ā§āϞāĻŋāĻ•āϝ⧋āĻ—ā§āϝ āĻĒāĻžāĻ ā§āϝ āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ āĻšāĻŋāϏāĻžāĻŦ⧇ āύāĻŋāĻ°ā§āĻŽāĻŋāϤ āĻšāϝāĻŧ āϤāĻ–āύ āĻŦā§‹āϤāĻžāĻŽāϟāĻŋāϰ Talkback āĻāĻ•āϟāĻŋ āĻ˜ā§‹āώāĻŖāĻž āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤ ( I1f588 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.4

āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ 16, 2024

androidx.compose.ui:ui-*:1.7.4 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.4-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.3

2 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.7.3 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.3-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ¸ā§āĻĨāĻŋāϰ āϏāĻŽāĻ¸ā§āϝāĻž āϝ⧇āĻ–āĻžāύ⧇ āĻœā§‡āύ⧇āϰāĻŋāĻ• āφāωāϟāϞāĻžāχāύ āĻ•ā§āϞāĻŋāĻĒ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋāϤ⧇ āĻāĻ•āϟāĻŋ āĻ–āĻžāϞāĻŋ āĻ•ā§āϞāĻŋāĻĒ āϏ⧀āĻŽāĻžāύāĻž āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤
  • āφāχāĻāĻŽāχ āϝāĻ–āύ āϕ⧋āύāĻ“ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻĻ⧃āĻļā§āϝ⧇ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻĨāĻžāϕ⧇ āĻāĻŦāĻ‚ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāϟāĻŋ ComposeView āĻĢā§‹āĻ•āĻžāϏ āĻĒā§āϰāĻŦ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ āϤāĻ–āύ āĻ¸ā§āĻĨāĻŋāϰ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ clearFocus() āφāϚāϰāĻŖāϟāĻŋ āĻāĻĒāĻŋāφāχ <28 āĻ āĻ­āĻŋāω āφāϚāϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻšāϝāĻŧ, āϝ⧇āĻ–āĻžāύ⧇ clearFocus() āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ­āĻŋāωāϕ⧇ āϕ⧇āĻ¨ā§āĻĻā§āϰ⧀āĻ­ā§‚āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇āĻ–āĻžāύ⧇ āϞ⧁āĻ•āĻšā§‡āĻĄ āĻ…āĻŦ⧈āϧāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϭ⧁āϞ placeOrder āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āϏ⧁āϤāϰāĻžāĻ‚ āĻāĻ•āϟāĻŋ āĻĒā§āϰāĻžāĻ¨ā§āϤ⧇āϰ āϕ⧇āϏāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻž āϝ⧇āĻ–āĻžāύ⧇ āϞ⧁āĻ•āĻžāĻšā§‡āĻĄ āĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟāϟāĻŋ āĻāĻĄāĻŧāĻžāύ⧋ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.2

āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ 18, 2024

androidx.compose.ui:ui-*:1.7.2 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.2-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ­āĻžāĻ°ā§āĻŦā§‹āϜ āĻŸā§āϰ⧇āϏāĻŋāĻ‚ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āύ⧋āĻĄ āϤāĻĨā§āϝ āĻāĻŦāĻ‚ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻœā§āĻžāĻžāύ⧇āϰ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϰ āωāĻ¨ā§āύāϤ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏāĨ¤ ( I89156 , āĻŦāĻŋ/362530618 )
  • āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽā§€ āĻŦāĻĄāĻŧ āĻĒāϰāĻŋāĻŽāĻžāĻĒ⧇āϰ āφāĻ•āĻžāϰ ( āĻĄāĻŋāĻ 5 āĻĄāĻŋāĻŦāĻŋ , āĻŦāĻŋ/347036173 ) āĻĒāĻžāϏ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ ComposeView āφāϰ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻšāĻŦ⧇ āύāĻž
  • āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāύ āϰāĻŋāĻĄāĻžāϰ āχāĻ¸ā§āϝ⧁ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻŦā§‹āϤāĻžāĻŽāϗ⧁āϞāĻŋāϤ⧇ LiveRegion āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ ( F66FA7 , āĻŦāĻŋ/348590026 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.1

10 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2024

  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻļāĻŋāĻ˛ā§āĻĒāĻ•āĻ°ā§āĻŽā§‡ āϕ⧋āύ⧋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āύ⧇āχāĨ¤ -desktop āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ -jvmStubs āĻāĻŦāĻ‚ -linuxx64Stubs āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϗ⧁āϞāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āϞāĻ•ā§āĻˇā§āϝāϗ⧁āϞāĻŋāϰ āϕ⧋āύāϟāĻŋāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϝāĻŧ, āϤāĻžāϰāĻž āĻœā§‡āϟāĻŦā§āϰ⧇āχāύ āϰāϚāύāĻžāϰ āĻĒā§āϰāĻšā§‡āĻˇā§āϟāĻžāϕ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāύāϧāĻžāϰāĻ•āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0

4 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2024

androidx.compose.ui:ui-*:1.7.0 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

1.6.0 āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0 āĻ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻāχ āĻŦā§āϞāĻ—āĻĒā§‹āĻ¸ā§āĻŸā§‡ āφāĻšā§āĻ›āĻžāĻĻāĻŋāϤāĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-rc01

21 āφāĻ—āĻ¸ā§āϟ, 2024

androidx.compose.ui:ui-*:1.7.0-rc01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-rc01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āχāωāφāχ: āχāωāφāχ āĻŽāĻĄāĻŋāωāϞāϟāĻŋ āĻāĻ–āύ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ⧇āϰ āĻ¨ā§āϝ⧂āύāϤāĻŽ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āĻœā§‹āϰ āĻ•āϰ⧇: āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ āĻ•āĻŽāĻĒāĻ•ā§āώ⧇ 1.7.0-āφāϰāϏāĻŋ 01 āĻŦāĻž āφāϰāĻ“ āύāϤ⧁āύ āĻšāϤ⧇ āĻšāĻŦ⧇āĨ¤ āĻāϟāĻŋ āχāωāφāχ āĻāĻŦāĻ‚ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ⧇āϰ āĻŽāĻ§ā§āϝ⧇ NestedScrollSource āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ 1.7.0-āφāϞāĻĢāĻž 01 āĻāϰ āĻĒā§āϰāĻĨāĻŽ āĻĻāĻŋāϕ⧇ āϘāĻŸā§‡ āϝāĻžāĻ“āϝāĻŧāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āφāϚāϰāϪ⧇āϰ āĻ…āϏāĻ™ā§āĻ—āϤāĻŋ āĻĒā§āϰāϤāĻŋāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta07

7 āφāĻ—āĻ¸ā§āϟ, 2024

androidx.compose.ui:ui-*:1.7.0-beta07 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta07-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻŸā§‡āĻ•ā§āϏāϟ āχāύāĻĒ⧁āϟ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ SemanticsNodeInteraction āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋ performTextReplacement , performTextInput , āĻāĻŦāĻ‚ performTextClearance āĻāĻ–āύ āĻĻāĻžāĻŦā§€ āĻ¤ā§āϰ⧁āϟāĻŋāϗ⧁āϞāĻŋ āĻĢ⧇āϞāϤ⧇ āϚāϞ⧇āϛ⧇ āϝāĻ–āύ āϏ⧇āϗ⧁āϞāĻŋāϕ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ TextFields āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧎ ( I4ae8f )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta06

āϜ⧁āϞāĻžāχ 24, 2024

androidx.compose.ui:ui-*:1.7.0-beta06 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta06-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta05

10 āϜ⧁āϞāĻžāχ, 2024

androidx.compose.ui:ui-*:1.7.0-beta05 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta05-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž TextField āύāϤ⧁āύ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻĨ⧇āϕ⧇ āχāύāĻĒ⧁āϟ āĻ—ā§āϰāĻšāĻŖ āύāĻž āĻ•āϰ⧇ āĻĢā§‹āĻ•āĻžāϏāϟāĻŋ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āύāĻž āϝāĻžāĻ“āϝāĻŧāĻž āĻāĻŦāĻ‚ āĻĢāĻŋāϰ⧇ āύāĻž āφāϏāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤāĨ¤
  • āĻāĻŽāύ āĻāĻ•āϟāĻŋ āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻ¸ā§āϤāϰ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϗ⧁āϞāĻŋ āĻ…āĻŦā§āϝāĻžāĻšāϤ āϰāĻžāĻ–āĻžāϰ āĻšā§‡āĻˇā§āϟāĻžāϗ⧁āϞāĻŋ SurfaceView āϏāĻžāĻŽāĻ—ā§āϰ⧀āϰ āϏāĻžāĻĨ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āύāĻŋāĻšā§āĻ›āĻžāĻ•ā§ƒāϤ āĻĒāĻžāĻ°ā§āĻļā§āĻŦ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āϏ⧃āĻˇā§āϟāĻŋ āĻ•āϰ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta04

āϜ⧁āύ 26, 2024

androidx.compose.ui:ui-*:1.7.0-beta04 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.7.0-beta04 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āϖ⧁āĻŦ āĻŦāĻĄāĻŧ āĻŸā§‡āĻ•ā§āϏāϟ āϞāĻžāχāύ (āϝ⧇āĻŽāύ 10k āĻ…āĻ•ā§āώāϰ) āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϚāϞ⧁āύ ( 8157ab )
  • GraphicsLayer āĻāĻĒāĻŋāφāχāϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚ āϏāĻŽāĻ°ā§āĻĨāύ āĻ…āĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤ ( 35DDD8 )
  • āĻ¸ā§āϤāϰ āĻ…āĻ§ā§āϝāĻŦāϏāĻžāϝāĻŧ āϝ⧁āĻ•ā§āϤāĻŋāϤ⧇ āĻ•ā§āĻ°ā§āϝāĻžāĻļ⧇āϰ āϜāĻ¨ā§āϝ āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ ( 70b13e )
  • āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻ¸ā§āϤāϰ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϏ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāύāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ, āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋāϰ āĻ•āĻžāϰāĻŖ āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ ( 70b13e )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta03

āϜ⧁āύ 12, 2024

androidx.compose.ui:ui-*:1.7.0-beta03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.7.0-beta03 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta02

29 āĻŽā§‡, 2024

androidx.compose.ui:ui-*:1.7.0-beta02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • SemanticsPropertyReceiver.editable isEditable SemanticsProperties.Editable IsEditable āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋ āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻŦ⧁āϞāĻŋāϝāĻŧāĻžāύ āĻāĻŦāĻ‚ āϏāĻ°ā§āĻŦāĻĻāĻž āĻĒāĻžāĻ ā§āϝ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( I8acd8 )
  • āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ ( I3d440 )
  • āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āĻ¸ā§āϟāĻžāχāϞāĻŋāĻ‚āϝāĻŧ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻāĻĒāĻŋāφāχ: TextLinkStyles āĻāĻ–āύ LinkAnnotation āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻāĻŦāĻ‚ AnnotatedString.fromHtml āĻĒāĻĻā§āϧāϤāĻŋ ( āφāχ 90 āĻŦāĻŋ 2 āĻŦāĻŋ ) āĻāϰ āĻ…āĻ‚āĻļāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āωāĻĒāĻžāĻĻāĻžāύ āĻĨ⧇āϕ⧇ TextDefaults ( i5477 āĻŦāĻŋ ) āϏāϰāĻŋāϝāĻŧ⧇āϛ⧇āύ

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āύāĻžāĻŽāĻ•āϰāĻŖ LayoutCoordinates.introducesFrameOfReference LayoutCoordinates.introducesMotionFrameOfReference āωāĻĻā§āĻĻ⧇āĻļā§āϝāϕ⧇ āφāϰāĻ“ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāϤāĻŋāĻĢāϞāĻŋāϤ āĻ•āϰāϤ⧇āĨ¤ āϏ⧇āχ āĻĒāϤāĻžāĻ•āĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• āĻ—āĻŖāύāĻž āĻ•āϰāϤ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋāϰ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I3a330 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta01

14 āĻŽā§‡, 2024

androidx.compose.ui:ui-*:1.7.0-beta01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • performCustomAccessibilityActionLabelled āĻ˛ā§āϝāĻžāĻŦ⧇āϞāĻĄā§‡āϰ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ performCustomAccessibilityActionWithLabel āωāχāĻĨāĻ˛ā§āϝāĻžāĻŦ⧇āϞ āĻāĻŦāĻ‚ performCustomAccessibilityActionWhere āĻ•āĻžāĻ¸ā§āϟāĻŽāĻ…ā§āϝāĻžāĻ•āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋāĻ…ā§āϝāĻžāĻ•āĻļāύ āĻ…ā§āϝāĻžāĻ•āĻļāύ āĻšāĻŋāϝāĻŧāĻžāϰ āϟ⧁ performCustomAccessibilityActionWithLabelMatching ( I5387f )
  • AnnotatedString.hasEqualsAnnotations āĻāĻ–āύ hasEqualAnnotations ( i685c0 )
  • āĻŸā§‡āĻ•ā§āϏāĻŸā§‡ āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĨāĻŋāĻŽāϝ⧁āĻ•ā§āϤ āϞāĻŋāĻ™ā§āĻ• āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ API āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻŦāĻŋāĻļ⧇āώāϤ, āĻĨāĻŋāĻŽāϝ⧁āĻ•ā§āϤ LinkAnnotations āĻāĻŦāĻ‚ āĻĨāĻŋāĻŽāϝ⧁āĻ•ā§āϤ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻĒāĻžāĻ°ā§āϏ āĻāχāϚāϟāĻŋāĻāĻŽāĻāϞ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ TextDefaults āĻĨ⧇āϕ⧇ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞ⧁āύāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻāĻ•āϟāĻŋ TextLinkStyles āĻ•ā§āϞāĻžāϏ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻĒāĻžāĻ ā§āϝāϗ⧁āϞāĻŋāϕ⧇ āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋāϕ⧇ āĻ¸ā§āϟāĻžāχāϞ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( I31b93 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āϝāĻ–āύ 63E1504 āχāϭ⧇āĻ¨ā§āĻŸā§‡āϰ āϏāĻŽāϝāĻŧ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϕ⧇āϏāϗ⧁āϞāĻŋ āĻ āĻŋāĻ• āĻ•āϰ⧇

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha08

1 āĻŽā§‡, 2024

androidx.compose.ui:ui-*:1.7.0-alpha08 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha08-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧀āϝāĻŧ āφāĻ•āĻžāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ Shape#createOutline āĻāĻ–āύ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻ¸ā§āϤāϰāϗ⧁āϞāĻŋāϰ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧇ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϏ⧁āϤāϰāĻžāĻ‚ āϰāĻžāĻˇā§āĻŸā§āϰ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āϝāĻ–āύ āφāϰāĻ“ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϟ āĻļ⧇āĻĒ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āϤāĻ–āύ āĻ­āĻŋāϤāϰ⧇ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻŽāĻžāύāϗ⧁āϞāĻŋ āĻĒāĻĄāĻŧāĻžāϰ āĻĢāϞ⧇ āĻ…āĻŦ⧈āϧāϤāĻžāϰ āĻ•āĻžāϰāĻŖ āĻšāĻŦ⧇āĨ¤ ( āφāχāĻĄāĻŋ 1629 , āĻŦāĻŋ/326070216 )
  • āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ isPositionedByParentWithDirectManipulation introducesFrameOfReference āϜāĻ¨ā§āϝāĨ¤ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻāϟāĻŋāϰ āĻāĻ–āύ āĻŦāĻŋāĻĒāϰ⧀āϤ āĻĒā§āϰāĻ­āĻžāĻŦ āϰāϝāĻŧ⧇āϛ⧇, āϝāĻžāϰ āĻ…āĻ°ā§āĻĨ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇, āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— LayoutCoordinates āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ⧇āϰ āĻāĻ•āϟāĻŋ āĻĢā§āϰ⧇āĻŽ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āĻāĻŦāĻ‚, āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϝāĻ–āύ āϏāϰāĻžāϏāϰāĻŋ āĻŽā§āϝāĻžāύāĻŋāĻĒ⧁āϞ⧇āĻļāύ⧇āϰ āĻ…āϧ⧀āύ⧇ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻ–āύ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋāϟāĻŋ āĻŽāĻŋāĻĨā§āϝāĻž āĻšāĻŦ⧇āĨ¤ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ⧇āϰ āĻāĻ•āϟāĻŋ āĻĢā§āϰ⧇āĻŽ āĻĒā§āϰāĻŦāĻ°ā§āϤāύāĻ•āĻžāϰ⧀ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āϤāĻžāĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāϤ⧇, positionInLocalFrameOfReference(...) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āĻ…āĻĨāĻŦāĻž āĻāĻ•āϟāĻŋ LookaheadScope āĻĨ⧇āϕ⧇ positionInLocalLookaheadFrameOfReference āĨ¤ ( āφāχāĻāĻĢāϏāĻŋ 5 āĻāĻĢ 7 )
  • LookaheadScope āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋāϕ⧇ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( āφāχ 21507 )
  • API āĻ•āĻžāωāĻ¨ā§āϏāĻŋāϞ āĻĒā§āϰāϤāĻŋāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ…āύ⧁āϝāĻžāϝāĻŧā§€ getScrollViewportLength āĻāϰ āϜāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻ•āĻļāύ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ ( āφāχāĻŦāĻŋāϏāĻŋ 74 āĻ )
  • āφāχāĻāύāϟāĻŋ -āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĢā§āϞ⧋āϟ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋ āĻ—ā§āϰāĻžāϏ āĻ•āϰāϤ⧇ GraphicsLayer āϞ⧇āϝāĻŧāĻžāϰ āφāωāϟāϞāĻžāχāύ āĻāĻĒāĻŋāφāχ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĢā§āϞ⧋āϟ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ…āĻĢāϏ⧇āϟ āĻāĻŦāĻ‚ āϏāĻžāχāϜ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏāϗ⧁āϞāĻŋāϤ⧇ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ§ā§āϰ⧁āĻŦāĻ•āϗ⧁āϞāĻŋāϰ āĻĒāĻ•ā§āώ⧇ UnsetOffset/UnsetSize IntSize āϏ⧇āĻ¨ā§āĻĄāĻŋāύ⧇āϞ āĻŽāĻžāύāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ ( āφāχ 2 āĻāĻĢāĻŦāĻŋ 03 , āĻŦāĻŋ/333863462 )
  • āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϏāĻŽāϝāĻŧ āĻŽāĻžāωāϏ āχāύāĻĒ⧁āϟ āχāύāĻœā§‡āĻ•āĻļāύ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ, MouseInjectionScope.click() , MouseInjectionScope.doubleClick() , MouseInjectionScope.tripleClick() , MouseInjectionScope.longClick() āĻāĻ–āύ āĻāĻ•āϟāĻŋ button: MouseButton āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋ āϤāĻžāĻĻ⧇āϰ āφāϰāĻ“ āĻŦ⧇āĻļāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϗ⧇āϰ āϜāĻ¨ā§āϝ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧁āύāĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŽāĻžāύāϟāĻŋ āĻš'āϞ MouseButton.Primary āϏāĻŽāĻ¸ā§āϤ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϜāĻ¨ā§āϝāĨ¤ ( I31a23 , āĻ–/190493367 , āĻŦāĻŋ/261439695 )
  • LinkInteractionListener āĻ­āĻŋāϤāϰ⧇ onClicked āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ onClick ( āφāχāĻāĻ 35 āϏāĻŋ )
  • TextInclusionStrategy.isInside āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ isIncluded āĨ¤ Paragraph/MultiParagraph#getRangeForRect() āϰāĻŋāϟāĻžāĻ°ā§āύ āϟāĻžāχāĻĒāϟāĻŋ āĻŦāĻžāϤāĻŋāϞāϝ⧋āĻ—ā§āϝ āύāϝāĻŧāĨ¤ ( I51f26 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • reverseScrolling=true āϏāĻš āĻĒāĻžāĻ¤ā§āϰ⧇ āĻ¸ā§āĻ•ā§āϰāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĻā§€āĻ°ā§āϘ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰāĨ¤ ( I7c59c )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ LazyLists āĻ āφāχāĻŸā§‡āĻŽ āĻĒā§āϰāĻŋāĻĢ⧇āϚ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ (āϝ⧇āĻŽāύ āĻāĻ•āϟāĻŋ LazyColumn āϝāĻž āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ LazyRows āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧇)āĨ¤ āĻāχ LazyLists āϜāĻ¨ā§āϝ āĻ¸ā§āĻ•ā§āϰāϞ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϟāĻŋ āĻĢā§āϰ⧇āĻŽ āĻĄā§āϰāĻĒ āĻ•āĻŽāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻŦ⧇ āĻŦāϞ⧇ āφāĻļāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϟāĻŋ āĻš'āϞ āĻĒā§āϰāĻĨāĻŽ 2 āύ⧇āĻ¸ā§āĻŸā§‡āĻĄ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋ āĻĒā§āϰāĻŋāĻĢ⧇āϚ āĻ•āϰāĻž, āϤāĻŦ⧇ āĻāχ āφāϚāϰāĻŖāϟāĻŋ āύāϤ⧁āύ LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) āĻāĻŦāĻ‚ LazyListPrefetchStrategy#onNestedPrefetch āĻāĻĒāĻŋāφāχ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I51952 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha07

āĻāĻĒā§āϰāĻŋāϞ 17, 2024

androidx.compose.ui:ui-*:1.7.0-alpha07 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha07-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • ClickableText āĻ…āĻŦāϚāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒāĻžāĻ ā§āϝ⧇āϰ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϰ āϞāĻŋāĻ™ā§āϕ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻāĻ•āϟāĻŋ LinkAnnotation āϏāĻš āĻāĻ•āϟāĻŋ AnnotatedString āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āĻāχ AnnotatedString āĻĒāĻžāĻ ā§āϝāϕ⧇ āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāĻžāϏ āĻ•āϰ⧁āύāĨ¤ ( āφāχ 34 āĻĄāĻŋ 4 āĻŦāĻŋ , āĻŦāĻŋ/323346994 )
  • āĻšāĻžāϤ⧇āϰ āϞ⧇āĻ–āĻžāϰ āĻ…āĻ™ā§āĻ—āĻ­āĻ™ā§āĻ—āĻŋāϰ āϜāĻ¨ā§āϝ ViewConfiguration.HandwritingGestureLineMargin āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ BasicTextField āϜāĻ¨ā§āϝ āĻœā§‹āĻĄāĻŧāĻžāϰ āĻĒā§āϞāĻŋāϟ JoinOrSplit āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧁āύ ( ie6e13 , āĻ–/325660505 )
  • FocusProperties.enter āĻāĻŦāĻ‚ FocusProperties.exit āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧāĨ¤ FocusDirection.Enter āĻāĻŦāĻ‚ FocusDirection.Exit āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧāĨ¤ FocusRequester.Cancel āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧ ( āφāχ 461 āĻ 1 , āĻŦāĻŋ/261564106 )
  • āϞ⧇āφāωāϟ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āφāĻĒāύāĻŋ āĻāĻ–āύ āĻĒā§āϝāĻžāϰ⧇āĻ¨ā§āϟ āϞ⧇āφāωāϟ āĻĻā§āĻŦāĻžāϰāĻž āϏ⧇āϟ āĻ•āϰāĻž āĻ…āĻĢāϏ⧇āϟ āĻŦāĻžāĻĻ āĻĻāĻŋāϤ⧇ excludeDirectManipulationOffset āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝāĻž Placeable.PlacementScope.withDirectManipulationPlacement āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤāĻžāĻĻ⧇āϰ āϏāĻ¨ā§āϤāĻžāύāĻĻ⧇āϰ āϰ⧇āϖ⧇āϛ⧇āĨ¤ āĻāĻ•āχāĻ­āĻžāĻŦ⧇, āĻāĻ•āϟāĻŋ āϞ⧇āφāωāϟ āϝāĻž āϤāĻžāϰ āĻŦāĻžāĻšā§āϚāĻžāĻĻ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āϘāύ āϘāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āĻāĻ–āύ withDirectManipulationPlacement (āϝ⧇āĻŽāύ āĻ¸ā§āĻ•ā§āϰ⧋āϞ, āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤāĻžāĻĻ⧇āϰ āĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻāϟāĻŋ approachLayout āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϗ⧁āϞāĻŋāϕ⧇ āφāϰāĻ“ āĻ¸ā§āĻŦāĻœā§āĻžāĻžāϤ āĻšāϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰ⧇, āĻāĻ–āύ āϕ⧀ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āϟ āĻ•āϰāϤ⧇ āĻ…āĻĢāϏ⧇āϟ āϕ⧀ āϤāĻž āφāϞāĻžāĻĻāĻž āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— āϰāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āϟ āĻ•āϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύ⧇āĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āϏāϰāĻžāϏāϰāĻŋ āϕ⧀ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āφāϞāĻžāĻĻāĻž āĻ•āϰāĻžāϰ āϏ⧁āϝ⧋āĻ— āϰāϝāĻŧ⧇āϛ⧇āĨ¤ ( I60ec7 )
  • āĻĻā§€āĻ°ā§āϘ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻĒāϤāĻžāĻ•āĻžāϟāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I28648 , b/329128246 )
  • LazyColumn āĻāĻ–āύ āϞāĻŽā§āĻŦāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāĻŸā§‡ āĻ¸ā§āϟāĻŋāĻ•āĻŋ āĻšā§‡āĻĄāĻžāϰ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ ( I8d239 , āĻ–/3292966635 )
  • NestedScroll āωāĻ¤ā§āϏāϗ⧁āϞāĻŋāϰ āĻŦāĻ°ā§āϧāĻŋāϤ āϏāĻ‚āĻœā§āĻžāĻž āϝāĻž āĻāĻ–āύ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ (āϏāĻžāχāĻĄ āχāĻĢ⧇āĻ•ā§āϟ) āĻāĻŦāĻ‚ āĻŽāĻžāωāϏ āĻšā§āχāϞ āĻāĻŦāĻ‚ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ ( UserInput ) āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āϏ⧇āχ āωāĻ¤ā§āϏāϗ⧁āϞāĻŋāϰ āĻŦāĻ°ā§āϧāĻŋāϤ āϏāĻ‚āĻœā§āĻžāĻžāϰ āϜāĻ¨ā§āϝ āĻŽāĻŋāϟāĻŽāĻžāϟ āĻ•āϰāϤ⧇ UserInput āĻāĻŦāĻ‚ SideEffect āĻĻā§āĻŦāĻžāϰāĻž āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĢā§āϞāĻŋāĻ‚ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāĻšā§āϛ⧇⧎ ( I40579 )
  • ApproachLayoutModifierNode āĻāĻŦāĻ‚ Modifier.approachLayout āĻāĻ–āύ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ, āύāϤ⧁āύ isMeasurementApproachInProgress() āĻāĻŦāĻ‚ isPlacementApproachInProgress() āϏāĻš āϝāĻĨāĻžāĻ•ā§āϰāĻŽā§‡ āĻĒ⧁āϰāĻžāϤāύ isMeasurementApproachComplete() āĻāĻŦāĻ‚ isPlacementApproachComplete() āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ⧇āϰ āϜāĻ¨ā§āϝāĨ¤
  • āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāĻž intermediateLayout āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻ…āĻĒāϏāĻžāϰāĻŖāĨ¤ ( I3e91c )
  • RenderNode āĻāĻŦāĻ‚ āĻ›āĻŦāĻŋāϰ āĻŽāϤ⧋ āĻĄāĻŋāϏāĻĒā§āϞ⧇āϞāĻŋāĻ¸ā§āϟ āĻŦā§āϝāĻžāĻ•āĻĄ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋāϰ āĻļ⧁āϰ⧁/āĻāĻ¨ā§āĻĄā§āϰ⧇āĻ•āĻ°ā§āĻĄāĻŋāĻ‚ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻŽāĻŋāϰāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ GraphicsLayer#buildLayer āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰ⧁āύāĨ¤
  • rememberGraphicsLayer āϞ⧇āϝāĻŧāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž rememberObserver āϞāĻŋāĻ­āĻžāϰ⧇āϜ āĻ•āϰāϤ⧇āĨ¤ ( āφāχ 312 āϏāĻŋ 1 , āĻŦāĻŋ/288494724 , āĻŦāĻŋ/330758155 )
  • UrlAnnotation āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ, āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ LinkAnnotation.Url āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻŽā§āϝāĻžāĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĨāĻŋāĻŽāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĨāĻžāϕ⧇āύ, āϤāĻžāĻšāϞ⧇ TextDefaults āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ āϝāĻžāϤ⧇ āĻŽā§āϝāĻžāĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĨāĻŋāĻŽāĻŋāĻ‚ āĻāϰ āϏāĻžāĻĨ⧇ āĻŸā§€āĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝāĻžāϝāĻŧ ( I8d180 , b/323346545 )
  • āĻĒāĻžāĻ ā§āϝ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻ¸ā§āϟāĻžāχāϞāĻŋāĻ‚, āĻšā§‹āĻ­āĻžāϰāĻĄ āĻāĻŦāĻ‚ āĻĢā§‹āĻ•āĻžāϏāϝ⧁āĻ•ā§āϤ ( āφāχ 5 āĻāĻĢ 864 , āĻŦāĻŋ/139312671 ) āĻ›āĻžāĻĄāĻŧāĻžāĻ“ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻ¸ā§āϟāĻžāχāϞāĻŋāĻ‚ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϟāĻŋ āĻĒ⧇āϝāĻŧ⧇āĻ›āĻŋāϞ
  • String.parseAsHtml āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ AnnotatedString.Companion.fromHtml āĻāĨ¤ ( I43dcd )
  • parseAsHtml āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻ¸ā§āϟāĻžāχāϞāĻŋāĻ‚ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ ( linkStyle , focusedLinkStyle , hoveredLinkStyle ) āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āϞāĻŋāĻ™ā§āĻ• āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•āĻļāύ āϞāĻŋāϏ⧇āύāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ <a> āĻŸā§āϝāĻžāĻ—āϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāχāϚāϟāĻŋāĻāĻŽāĻāϞ-āĻŸā§āϝāĻžāĻ—āϝ⧁āĻ•ā§āϤ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϟāĻŋ āĻĒāĻžāĻ°ā§āϏ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ, āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋ āĻāχ āϜāĻžāϤ⧀āϝāĻŧ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŸā§āϝāĻžāϗ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ LinkAnnotation.Url āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āĻ¸ā§āϟāĻžāχāϞāĻŋāĻ‚ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϗ⧁āϞāĻŋ āĻĒāĻžāϏ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋāϤ⧇ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•āĻļāύ āĻļā§āϰ⧋āϤāĻžāϕ⧇ āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāĻŦ⧇āĨ¤ ( I7c977 )
  • LinkAnnotation āĻāĻ–āύ āĻ¸ā§āĻŸā§‡āϟ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ¸ā§āϟāĻžāχāϞāĻŋāĻ‚ āφāĻ°ā§āϗ⧁āĻŽā§‡āĻ¨ā§āϟ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ LinkInteractionListener āύ⧇āϝāĻŧāĨ¤ āĻšāĻžāχāĻĒāĻžāϰāϞāĻŋāĻ™ā§āĻ• āĻĒ⧇āϤ⧇ āĻāχ āĻŸā§€āĻ•āĻžāϟāĻŋ AnnotatedString āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ focusedState āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž hoveredState āĻĒāĻžāϏ āĻ•āϰ⧇ āφāĻĒāύāĻŋ āϞāĻŋāĻ™ā§āĻ•āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ configuration āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āϝāĻ–āύ āϏ⧇āϗ⧁āϞāĻŋ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž āĻšā§‹āĻ­āĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( I81ce4 , āĻ–/139312671 )
  • ImeOptions.hintLocales āφāϰ āĻŦāĻžāϤāĻŋāϞ āĻšāϝāĻŧ āύāĻžāĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻ–āĻžāϞāĻŋ āϞ⧋āϕ⧇āϞ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āĻĒāĻžāϏ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ LocaleList.Empty āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( IC5bc4 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ•āϰ⧁āĻŖāĻ­āĻžāĻŦ⧇ āĻ–āĻžāϰāĻžāĻĒ/āĻĻ⧁āĻ°ā§āύ⧀āϤāĻŋāĻ—ā§āϰāĻ¸ā§āĻĨ historical āϤāĻŋāĻšāĻžāϏāĻŋāĻ• āχāύāĻĒ⧁āϟ āχāϭ⧇āĻ¨ā§āϟ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰ⧇ (āĻ–āĻžāϰāĻžāĻĒ āĻ…āĻĢāϏ⧇āϟ āĻĄā§‡āϟāĻž āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰ⧇)āĨ¤
  • āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āχāϭ⧇āĻ¨ā§āϟ āĻ¸ā§āĻŸā§āϰāĻŋāĻŽā§‡āϰ āϏāĻŽāϝāĻŧ āĻ…āĻ¨ā§āϝ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇āϰ āφāϗ⧇ āĻāĻ•āϟāĻŋ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϕ⧇ āĻ—āϤāĻŋāĻļā§€āϞāĻ­āĻžāĻŦ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϞ⧇ āĻ…āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻŋāϤ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻ āĻŋāĻ• āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, āĻāĻ•āϟāĻŋ āĻšā§‹āĻ­āĻžāϰ āĻāĻ¨ā§āϟāĻžāϰ āĻāĻŦāĻ‚ āĻšā§‹āĻ­āĻžāϰ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ [āĻŽāĻžāωāϏ/āĻ¸ā§āϟāĻžāχāϞāĻžāϏ] āĻāϰ āĻŽāĻ§ā§āϝ⧇)āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha06

3 āĻāĻĒā§āϰāĻŋāϞ, 2024

androidx.compose.ui:ui-*:1.7.0-alpha06 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha06-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • āĻ¸ā§āϟāĻžāχāϞ āĻ•āϰāĻž āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ parseAsHtml āĻĒāĻĻā§āϧāϤāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇: āĻāϟāĻŋ HTML āĻŸā§āϝāĻžāĻ— āĻĻā§āĻŦāĻžāϰāĻž āϚāĻŋāĻšā§āύāĻŋāϤ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϰāĻŋāĻ‚āϕ⧇ AnnotatedString āĻ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ āύ⧋āϟ āĻ•āϰ⧁āύ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ āĻŸā§āϝāĻžāĻ— āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āύāϝāĻŧ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āφāĻĒāύāĻŋ āĻāĻ–āύāĻ“ āĻŦ⧁āϞ⧇āϟ āϤāĻžāϞāĻŋāĻ•āĻžāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāĻŦ⧇āύ āύāĻžāĨ¤ ( I84d3d , i30626 , āĻ–/1393266648 )
  • āĻ…āĻĢāĻŋāϏāĻŋāϝāĻŧāĻžāϞ Android API ( ScrollCaptureCallback ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āĻŽā§āĻĒā§‹āϜ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻĒāĻžāĻ¤ā§āϰ⧇ āĻĻā§€āĻ°ā§āϘ āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āϏāĻŽāĻ°ā§āĻĨāύ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϟāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻāĻŦāĻ‚ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ āϏāĻŽāĻ¸ā§āϤ āϕ⧇āϏ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ āϝ⧇ āĻ•āĻžāϰāϪ⧇ āĻāϟāĻŋ āĻŦāĻ°ā§āϤāĻŽāĻžāύ⧇ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻ…āĻ•ā§āώāĻŽāĨ¤ āĻ…āĻĒā§āϟ-āχāύ āĻ•āϰāϤ⧇, ComposeFeatureFlag_LongScreenshotsEnabled āĻĒāϤāĻžāĻ•āĻžāϟāĻŋ āϏāĻ¤ā§āϝ⧇ āϏ⧇āϟ āĻ•āϰ⧁āύāĨ¤ ( I2b055 , b/329296471 )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • fun ClipEntry.getMetadata() val ClipEntry.clipMetadata āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I50155 )
  • ClipboardManager.getClipMetadata āĻāĻŦāĻ‚ ClipboardManager.hasClip āĻĢāĻžāĻ‚āĻļāύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ•ā§āϞāĻŋāĻĒ āĻāĻ¨ā§āĻŸā§āϰāĻŋāϰ āĻŽā§‡āϟāĻžāĻĄā§‡āϟāĻž āĻĒāĻĄāĻŧāϤ⧇ āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ clipEntry.getMetadata() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ClipboardManager.getClip āĻĢāϞāĻžāĻĢāϞāϟāĻŋ āϝāĻĻāĻŋ āĻāϟāĻŋ āĻŦāĻžāϤāĻŋāϞ āĻšāϝāĻŧ āĻŦāĻž āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄā§‡āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ•ā§āϞāĻŋāĻĒ āϰāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āĻŦ⧁āĻāϤ⧇ āύāĻž āĻĒāĻžāϰāϞ⧇āĻ“ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧁āύāĨ¤ ( I50498 )
  • āĻāĻ–āύ āφāĻĒāύāĻŋ GraphicsLayer āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϗ⧁āϞāĻŋ āĻĒā§āϞ⧇āϏāϝ⧋āĻ—ā§āϝāϤ⧇ āĻĒāĻžāϏ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ placeable.placeWithLayer()
  • ClipboardManager.setClip āĻāĻ–āύ āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄāϟāĻŋ āϏāĻžāĻĢ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϤ⧇ āύāĻžāϞāϕ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĨ¤ ( I7d2e9 )
  • āĻŦāĻŋāĻ˛ā§āĻĄ āϟ⧁āϞāĻŋāĻ‚āϝāĻŧ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻŦāĻŋāĻļāĻĻ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ­āĻŋāωāϗ⧁āϞāĻŋ āϞ⧁āĻ•āĻŋāϝāĻŧ⧇ āϰāĻžāĻ–āϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϰāĻŋāϏ⧋āĻ°ā§āϏ āφāχāĻĄāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( i99531 )
  • GraphicsLayer#toImageBitmap āĻ¸ā§āĻĨāĻ—āĻŋāϤ āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋ GraphicsLayer āϞ⧇āϝāĻŧāĻžāϰāϟāĻŋāϤ⧇ āĻŦāĻŋāϟāĻŽā§āϝāĻžāĻĒ⧇āϰ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϗ⧁āϞāĻŋāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϟāĻŋ āĻāĻĒāĻŋāφāχ āĻ¸ā§āϤāϰ 22+ (āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ) āĻ āĻāĻ•āϟāĻŋ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āĻ¤ā§āĻŦāϰāĻŖāϝ⧁āĻ•ā§āϤ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚ āĻ…āĻĒāĻžāϰ⧇āĻļāύ āϝāĻž āϏāĻŽāĻ¸ā§āϤ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻĄāĻŋāĻ­āĻžāχāϏ⧇āϰ 99% āĻāϰāĻ“ āĻŦ⧇āĻļāĻŋ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧇āĨ¤ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻāĻĒāĻŋāφāχ āĻ¸ā§āϤāϰ 21 āĻ āĻāϟāĻŋ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚āϝāĻŧ⧇ āĻĢāĻŋāϰ⧇ āφāϏ⧇āĨ¤ ( I9e114 )
  • āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ RectF ComposeRect āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻšāĻžāϝāĻŧāĻ• āĻĒāĻĻā§āϧāϤāĻŋ ( āφāχ 39925 , āĻŦāĻŋ/325660505 )
  • āϏāĻŽāĻ¸ā§āϤ KeyboardOptions āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āĻāĻ–āύ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻāĻ•āϟāĻŋ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŽāĻžāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ KeyboardOptions.merge āĻĒāĻĻā§āϧāϤāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • KeyboardOptions.autoCorrect autoCorrectEnabled āĻ•āϰ⧇ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋāϕ⧇ āĻŦāĻžāϤāĻŋāϞāϝ⧋āĻ—ā§āϝ āĻ•āϰ⧇ āϤ⧁āϞ⧇āϛ⧇, āϝ⧇āĻ–āĻžāύ⧇ āύāĻžāϞāϟāĻŋ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϝ⧇ āϕ⧋āύāĻ“ āĻŽāĻžāύ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ ( IA8ba0 , b/295951492 )
  • BasicTextField(state) āĻŦ⧈āĻ•āĻ˛ā§āĻĒāĻŋāĻ• āĻāĻŦāĻ‚ BasicSecureTextField āĻāĻ–āύ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻĻā§āĻŦāĻžāϰāĻž āĻ—ā§ƒāĻšā§€āϤ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻž āĻ•āϰāϤ⧇ KeyboardActions āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ KeyboardActionHandler āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ ( I58dda )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-Alpha05

20 āĻŽāĻžāĻ°ā§āϚ, 2024

androidx.compose.ui:ui-*:1.7.0-alpha05 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha05-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • āĻĄāĻŋāϏāĻĒā§āϞ⧇ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ āĻ…āĻ™ā§āĻ•āύ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āϰ⧇āĻ•āĻ°ā§āĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ GraphicsLayer āĻāĻĒāĻŋāφāχāϝāĻŧ⧇āϰ āϏāĻžāĻĨ⧇ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻāĻŋāύ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϝāĻž āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚āϕ⧇ āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āϜāϟāĻŋāϞ āĻĻ⧃āĻļā§āϝāϕ⧇ āϛ⧋āϟ āϛ⧋āϟ āϟ⧁āĻ•āϰ⧋āϗ⧁āϞāĻŋāϤ⧇ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āϏ⧀āĻŽāĻžāύāĻž āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰ⧇ āϝāĻž āĻĒ⧁āϰ⧋ āĻĻ⧃āĻļā§āϝāϟāĻŋ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āύāĻž āĻ•āϰ⧇ āĻāϕ⧇ āĻ…āĻĒāϰ⧇āϰ āĻĨ⧇āϕ⧇ āĻĒ⧃āĻĨāĻ•āĻ­āĻžāĻŦ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ GraphicsLayer āĻ•āϰāĻž āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāϗ⧁āϞāĻŋ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āϤāĻžāϞāĻŋāĻ•āĻžāϟāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϰ⧇āĻ•āĻ°ā§āĻĄ āύāĻž āĻ•āϰ⧇āχ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Modifier.graphicsLayer āĻŦāĻŋāĻĒāϰ⧀āϤ⧇, GraphicsLayer āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“ āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻŋāĻ‚āϝāĻŧ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻŸā§‡āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āϝ⧇āĻ–āĻžāύ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻĻ⧃āĻļā§āϝ⧇ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇ āĻŦāϞ⧇ āφāĻļāĻž āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • GraphicsLayer.draw(Canvas) āφāϰ āϕ⧋āύāĻ“ āĻĒāĻžāĻŦāϞāĻŋāĻ• āĻāĻĒāĻŋāφāχ āύāϝāĻŧāĨ¤ āĻ¸ā§āϤāϰāϟāĻŋ āφāρāĻ•āϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ DrawScope.drawLayer(GraphicsLayer) āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I7a7c0 )
  • restrictedConstraints() āĻĻ⧁āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻŦāĻŋāĻ­āĻ•ā§āϤ āĻ•āϰ⧁āύ: fitPrioritizingWidth() āĻāĻŦāĻ‚ fitPrioritizingHeight() ( i6d7fd )
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ HardwareCanvas āĻ¸ā§āϟāĻžāĻŦ⧇āϰ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻāĻŋāϝāĻŧ⧇āϛ⧇ ( āφāχ 1 āϏāĻŋ 3 āĻŦāĻŋ 5, āĻŦāĻŋ/288494724 )
  • āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻŽāĻĒā§‹āϜ āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ āĻāĻ•āϟāĻŋ GraphicsContext āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻžāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻžāϰ āĻŽāĻžāϞāĻŋāĻ•, DelegateableNode āĻāĻŦāĻ‚ drawWithCache āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύāϗ⧁āϞāĻŋ āĻ¸ā§āϕ⧋āĻĒāĻĄ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ⧇āϰ āϜāĻ¨ā§āϝ GraphicsContext āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāϤ⧇ āϝāĻž āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āϞ⧇āϝāĻŧāĻžāϰ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋ āϝāĻ–āύ āϏāĻ‚āĻļā§‹āϧāύāĻ•āĻžāϰ⧀ āĻ›āĻŋāĻ¨ā§āύāĻ­āĻŋāĻ¨ā§āύ āĻšāϝāĻŧ⧇ āϝāĻžāϝāĻŧ āϤāĻ–āύ GraphicsLayer āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( I64a2f , āĻ–/288494724 )
  • āύāĻŋāĻŽā§āύ-āĻ¸ā§āϤāϰ⧇āϰ āφāχāĻāĻŽāχ-āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āύāĻŋāĻŽā§āύ-āĻ¸ā§āϤāϰ⧇āϰ āφāχāĻāĻŽāχ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āϞāĻŋāĻ–āϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ InterceptPlatformTextInput āĻĒā§āϰāĻŦāĻ°ā§āϤāĻŋāϤāĨ¤ PlatformTextInputTestOverride āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I862ed , b/322680547 )
  • GraphicsLayer.setOutline(Outline) āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ ( āφāχāĻŦāĻŋ 81 āĻāĻĢ 4 )
  • GraphicsContext āĻĢāĻžāĻ‚āĻļāύ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰāϕ⧇ GraphicsLayer āωāĻĻāĻžāĻšāϰāĻŖ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻžāϰāĻ–āĻžāύāĻž āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻāĻŋāύ ( āφāχāĻŦāĻŋ 98 āĻĄāĻŋ 6 , āĻŦāĻŋ/288494724 )
  • āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“ āφāρāĻ•āϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āĻļ⧇āώ āĻĢāϞāĻžāĻĢāϞ⧇āϰ āϜāĻ¨ā§āϝ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻāĻĢ⧇āĻ•ā§āϟ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āĻ…āĻ™ā§āĻ•āύ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ⧇ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āϕ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āύāĻŽāύ⧀āϝāĻŧāϤāĻž āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāϤ⧇ āωāĻ¨ā§āĻŽā§āĻ•ā§āϤ GraphicsLayer āĻāĻĒāĻŋāφāχāĨ¤ ( I80245 , āĻ–/288494724 )
  • Paragraph#getRangeForRect āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ āϝāĻž āĻĒā§āϰāĻĻāĻ¤ā§āϤ āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰ āĻ…āĻžā§āϚāϞ āĻĻā§āĻŦāĻžāϰāĻž āφāĻšā§āĻ›āĻžāĻĻāĻŋāϤ āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒāĻžāĻ ā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ ( āφāχāχāχ 516 , āĻŦāĻŋ/325660505 )
  • onLinkClicked āϝ⧁āĻ•ā§āϤāĻŋ āĻĻāĻŋāϝāĻŧ⧇ BasicText āĻāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻšāĻžāχāĻĒāĻžāϰāϞāĻŋāĻ™ā§āĻ• āϏāĻŽāĻ°ā§āĻĨāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ API āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰāĻŦ⧇āĨ¤ ( I107d5 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āϝ⧁āĻ•ā§āϤ GraphicsLayer explain āĻšā§āĻ›āĻŋāĻ• āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāϟāĻŋāĻ‚ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻāĻĢ⧇āĻ•ā§āϟāϏ āĻāĻŦāĻ‚ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻ°ā§āĻŽāϏ āϏāĻš āĻ…āĻ™ā§āĻ•āύ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āĻāĻŦāĻ‚ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϖ⧇āϞāϤ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ/āĻĒā§āϰāĻ•ā§ƒāϤ āĻāĻĒāĻŋāφāχ āϏāĻ‚āĻœā§āĻžāĻž āĻĒā§āϰāĻ¤ā§āϝāĻžāĻļāĻž āĻ•āϰ⧇āĨ¤ GraphicsContext āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāϟāĻŋ GraphicsLayer āϞ⧇āϝāĻŧāĻžāϰ āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋāϰ āϤ⧈āϰāĻŋ āĻāĻŦāĻ‚ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āϏāĻš āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϗ⧁āϞāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύāĨ¤ ( I4a8d6 , āĻ–/288494724 )
  • 1 āĻĄāĻŋ āĻĢā§‹āĻ•āĻžāϏ āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĒ āχāĻ¸ā§āϝ⧁ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ āĻ…āĻ¨ā§āϝ āĻ­āĻŋāωāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻāĻŽā§āĻŦ⧇āĻĄ āĻĨāĻžāĻ•āĻž āĻāĻ•āϟāĻŋ ComposeView āĻ­āĻŋāϤāϰ⧇ āĻĢā§‹āĻ•āĻžāϏ āφāϟāϕ⧇ āϝāĻžāϝāĻŧāĨ¤ ( I08fd4 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • LocalLifecycleOwner āĻ•āĻŽāĻĒā§‹āϜ āχāωāφāχ āĻĨ⧇āϕ⧇ lifecycle-runtime-compose āϚāϞ⧇ āĻāϏ⧇āϛ⧇āύ āϝāĻžāϤ⧇ āĻāϰ āϰāϚāύāĻž-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻšā§‡āĻ˛ā§āĻĒāĻžāϰ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋ āĻ•āĻŽāĻĒā§‹āϜ āχāωāφāχāϝāĻŧ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ āĻ…āĻŦāĻĻāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻœā§āϝāĻžāĻ• āĻ“āϝāĻŧāĻžāĻ°ā§āϟāύāϕ⧇ āϧāĻ¨ā§āϝāĻŦāĻžāĻĻāĨ¤ ( I6c41 āĻŦāĻŋ, āĻŦāĻŋ/328263448 )
  • āϧāĻžāϰāĻžāĻŦāĻžāĻšāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĒāĻ•ā§āώāĻĒāĻžāϤ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻĒā§āϰāĻžāĻ¨ā§āϤāĻŋāĻ•āĻ•āϰāĻŖ āϏāĻžāĻŦ āϟāĻžāχāĻĒāϗ⧁āϞāĻŋāϤ⧇ āĻŦāĻžāϝāĻŧāĻžāϏ āĻĢā§āϞ⧋āϟ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύāĨ¤ ( I69f0f , āĻ–/328088992 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha04

6 āĻŽāĻžāĻ°ā§āϚ, 2024

androidx.compose.ui:ui-*:1.7.0-alpha04 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha04-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āχāω āĻāϰ āĻĒāϰ⧇ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋāϤ⧇ āĻŦ⧇āϏāĻŋāĻ•āĻŸā§‡āĻ•ā§āϏāϟāĻĢāĻŋāĻ˛ā§āĻĄ 2 āĻāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āϟāĻžāχāϞāĻžāϏ āĻšāĻ¸ā§āϤāĻžāĻ•ā§āώāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧁āύ ( i002e4 )
  • āĻāχ āϏāĻŋāĻāϞ -āĻ āφāĻŽāϰāĻž GetScrollViewportLength āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻ• āĻ•ā§āϰāĻŋāϝāĻŧāĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻ›āĻŋ āϝāĻžāϤ⧇ āφāĻŽāϰāĻž āĻ 11 āĻ“āϝāĻŧāĻžāχ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡ āϰāϚāύāĻžāϗ⧁āϞāĻŋāϤ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāĻž āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āϤāĻĨā§āϝ āĻĒāĻžāχāĻĒ āĻ•āϰāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ āĻāχ CL āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ āĻ¸ā§āĻ•ā§āϰ⧋āϞāϝ⧋āĻ—ā§āϝ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ āωāĻ˛ā§āϞāĻŋāĻ–āĻŋāϤ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ“ āĻĒā§āϰāϝ⧋āĻœā§āϝāĨ¤ ( āφāχāϏāĻŋ 5 āĻāĻĢāĻ 2 )
  • FocusRequester.createRefs āĻāĻ–āύ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ ( āφāχ 4 āĻĄāĻŋ 92 āϏāĻŋ , āĻŦāĻŋ/261436820 )
  • āϏāĻ‚āĻļā§‹āϧāĻ• āύ⧋āĻĄāϗ⧁āϞāĻŋāϕ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āύāĻž āĻĒāĻĄāĻŧ⧇ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ View āĻĒ⧇āϤ⧇ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ DelegatableNode.requireView() āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇⧎ ( I40768 )
  • āύāϤ⧁āύ āĻāĻĒāĻŋāφāχ Path.reverse() āϕ⧋āύāĻ“ āĻĒāĻžāĻĨ⧇āϰ āĻĻāĻŋāĻ•āϟāĻŋ āĻŦāĻŋāĻĒāϰ⧀āϤ āĻ•āϰāϤ⧇ ( i36348 )
  • āĻŸā§‡āĻ•ā§āϏāϟāĻĢāĻŋāĻ˛ā§āĻĄāϗ⧁āϞāĻŋāϕ⧇ āĻĒāĻ›āĻ¨ā§āĻĻāϏāχ āĻ­āĻžāώāĻžāϰ āĻĒā§āϰāĻŋāϏ⧇āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϞ⧋āĻ•āĻžāϞāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āφāχāĻāĻŽāχāϗ⧁āϞāĻŋāϕ⧇ āχāĻ™ā§āĻ—āĻŋāϤ āĻ•āϰāĻžāϰ āĻ•ā§āώāĻŽāϤāĻž āϏāĻš TextFields āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāϤ⧇ KeyboardOptions hintLocales āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
  • āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϟāĻŋ āϝ⧇āĻŽāύ java.util.Locale āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŽāύ Locale āĻĨ⧇āϕ⧇ platformLocale āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧁āύāĨ¤ ( I921c6 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha03

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ 21, 2024

androidx.compose.ui:ui-*:1.7.0-alpha03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻŽā§āϝāĻžāĻ•ā§āϏāϞāĻžāχāύ āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋ āϏāĻš ContextualFlowRow āĻāĻŦāĻ‚ āĻŦāĻ°ā§āϧāĻŋāϤ FlowRow / Column āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāĨ¤ āφāĻŽāϰāĻž āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• FlowRow āĻāĻŦāĻ‚ FlowColumn āĻŦāĻ°ā§āϧāύāϗ⧁āϞāĻŋ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰāϤ⧇ āφāĻ—ā§āϰāĻšā§€, āĻāĻ–āύ ContextualFlowRow āĻāĻŦāĻ‚ ContextualFlowColumn āφāĻ¤ā§āĻŽāĻĒā§āϰāĻ•āĻžāĻļ⧇āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻŽā§āϝāĻžāĻ•ā§āϏāϞāĻžāχāύ āĻāĻŦāĻ‚ āĻ“āĻ­āĻžāϰāĻĢā§āϞ⧋ āϏāĻŽāĻ°ā§āĻĨāύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϝ⧁āĻ•ā§āϤāĨ¤ āĻāχ āφāĻĒāĻĄā§‡āϟāϟāĻŋ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāĻ¨ā§āϏ⧇āϰ āĻ…āύ⧁āϕ⧂āϞ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻāĻ•āϟāĻŋ āϛ⧋āϟ ContextualFlow* āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻāĻŦāĻ‚ āĻĄāĻžāϝāĻŧāύāĻžāĻŽāĻŋāĻ• +āĻāύ āφāϰāĻ“ āĻŦā§‹āϤāĻžāĻŽāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύ, āĻāĻŦāĻ‚ FlowRow āĻāĻŦāĻ‚ FlowColumn āĻāĻ•āϟāĻŋ āĻ…āĻ˛ā§āĻĒ āϏāĻ‚āĻ–ā§āϝāĻ• āφāχāĻŸā§‡āĻŽā§‡āϰ āϜāĻ¨ā§āϝ, 100 āĻāϰāĻ“ āĻ•āĻŽ āφāχāĻŸā§‡āĻŽā§‡āϰ āϜāĻ¨ā§āϝ āωāĻĒāϝ⧁āĻ•ā§āϤ maxLines āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ: FlowRow āĻŦāĻž FlowColumn āĻ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āφāϚāϰāĻŖ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝ āϝ⧇āĻ–āĻžāύ⧇ āϏāĻŽāĻ¸ā§āϤ āφāχāĻŸā§‡āĻŽ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻ°ā§āĻŦāĻŋāĻļ⧇āώ⧇ āϤāĻžāϰāĻž āĻ•ā§āϰāϏ āĻ…āĻ•ā§āώ⧇āϰ āϏāĻ°ā§āĻŦā§‹āĻšā§āϚ āĻŽāĻžāĻĒāϏāχ āĻ•āϰ⧇, overflow āϏ⧇āϟ āĻ•āϰ⧁āύ FlowRowOverflow.Visible āĻŦāĻž FlowColumnOverflow.Visible āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ•āĻ•āϰāϪ⧇āϰ āϏāĻŽāϝāĻŧ āĻĻ⧃āĻļā§āϝāĻŽāĻžāύāĨ¤ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻļā§€āϞ āĻāχ āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϰ āωāĻĻāĻžāĻšāϰāĻŖāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ ContextualFlowRowSample āĻāĻŦāĻ‚ FlowRowSample āĻ…āĻ¨ā§āĻŦ⧇āώāĻŖ āĻ•āϰ⧁āύ⧎ ( Ib9135 , b/293577082 )
  • āϏāĻ°ā§āĻŦāĻžāϧāĻŋāĻ• āĻ…āύ⧁āĻŽā§‹āĻĻāĻŋāϤ āϏāĻ‚āĻ–ā§āϝāĻ• āĻ…āĻ•ā§āώāϰ⧇āϰ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰ⧇ āĻāĻŽāύ āĻĒāĻžāĻ ā§āϝ āĻ•ā§āώ⧇āĻ¤ā§āϰāϗ⧁āϞāĻŋāϤ⧇ āϏ⧇āϟ āĻ•āϰāĻž āωāϚāĻŋāϤ maxTextLength āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻœā§āĻžāĻžāύ⧇āϰ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ ( I24d9f , āĻ–/170648072 )
  • Modifier.inspectable āĻ°â€Œā§āϝāĻžāĻĒāĻžāϰāϟāĻŋ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻāĻĒāĻŋāφāχ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āφāĻĒāύāĻžāϰ āϏāĻ‚āĻļā§‹āϧāϕ⧇āϰ āφāϰāĻ“ āĻ…āĻŦ⧈āϧāϤāĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇, āϏ⧁āϤāϰāĻžāĻ‚ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāĻ–āύ āύāĻŋāĻ°ā§ā§ŽāϏāĻžāĻšāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āϰāĻž āϝāĻĻāĻŋ āϤāĻžāϰāĻž āϟ⧁āϞāĻŋāĻ‚āϝāĻŧ⧇ āϏāĻ‚āĻļā§‹āϧāĻ• āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ ModifierNodeElement inspectableProperties() āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāϤ⧇ āωāĻ¤ā§āϏāĻžāĻšāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( āφāχāĻŦāĻŋ 3236 )
  • PopupProperties āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϝāĻž WindowManager.LayoutParams āωāĻĒāϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāϪ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ L ( āφāχāĻŦāĻŋāĻŦāĻŋ 33 āχ, āĻŦāĻŋ/312485503 )
  • āĻāĻ•āϟāĻŋ Modifier.Node āĻāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ LayoutCoordinates āĻĒ⧇āϤ⧇ āĻāĻ•āϟāĻŋ āωāĻĒāĻžāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ⧇ DelegatableNode.requireLayoutCoordinates() āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ onPlaced āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ•āϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āϟāĻŋ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋāϤ⧇ āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχ⧎ ( āφāχāĻ 8657 )
  • DelegatableNode.currentLayoutCoordinates āĻāĻ•āϟāĻŋ Modifier.Node āĻĒāĻžāĻ“āϝāĻŧāĻžāϰ āωāĻĒāĻžāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āύ⧋āĻĄā§‡āϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ LayoutCoordinates onPlaced āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻāĻŦāĻ‚ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āύāĻŋāĻœā§‡āχ āϕ⧋āύāĻ“ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋāϤ⧇ āϏāĻžā§āϚāϝāĻŧ āĻ•āϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻžāĻĄāĻŧāĻžāχāĨ¤ ( āφāχāϝāĻŧāĻžāχāĻŦāĻž )
  • androidx.compose.foundation.text2 āĻĒā§āϝāĻžāϕ⧇āĻœā§‡āϰ āĻ…āϧ⧀āύ⧇ BasicTextField2 āĻāĻŦāĻ‚ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ APIāϗ⧁āϞāĻŋāϕ⧇ androidx.compose.foundation.text āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I9f635 )
  • āϏ⧁āĻ¸ā§āĻĒāĻˇā§āϟ āϏāĻ‚āĻļā§‹āϧāĻ• āύ⧋āĻĄā§‡ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ…ā§āϝāĻžāĻĒā§āϰ⧋āϚ āϞāϜāĻŋāĻ• āϤ⧈āϰāĻŋāϤ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ ApproachLayoutModifierNode āĻāĻĒāĻŋāφāχ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• DeferredTargetAnimation āĻāĻĒāĻŋāφāχ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āϛ⧇ āϝāĻžāϰ āϞāĻ•ā§āĻˇā§āϝ āχāύāĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻŸā§‡āĻļāύ⧇ āĻ…āϜāĻžāύāĻžāĨ¤ ( I60745 )
  • āĻāĻ•āϟāĻŋ āĻĒāĻĨ⧇āϰ āĻĻāĻŋāĻ•āϟāĻŋ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āϕ⧋āύāĻ“ Path āĻĨ⧇āϕ⧇ āĻ•āύāĻŸā§āϝ⧁āϰāϗ⧁āϞāĻŋ āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ Path āĻāĻĒāĻŋāφāχāĨ¤ ( I63d04 )
  • āϕ⧋āύāĻ“ Path āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϰāϝāĻŧ⧇āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āϝāĻžāϚāĻžāχ āĻ•āϰāϤ⧇ PathHitTest āĻāĻŦāĻ‚ Path.contains(Offset) āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I3b218 )
  • TextLayoutResult āĻāĻ–āύ getLineBaseline(lineIndex) āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āϏ⧁āĻŦāĻŋāϧāĻžāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ firstBaseline āĻāĻŦāĻ‚ lastBaseline āĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻĒāĻžāĻ ā§āϝ⧇āϰ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŦ⧇āĻšā§āĻ›āĻžāϏ⧇āĻŦā§€ āϰ⧇āĻ–āĻžāϰ āĻŦ⧇āϏāϞāĻžāχāύāϟāĻŋ āĻĒāĻĄāĻŧāϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( āφāχāĻĄāĻŋ 4 āχ 8 , āĻŦāĻŋ/237428541 )
  • āĻĻ⧁āϟāĻŋ AnnotatedStrings āϕ⧇āĻŦāϞ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋāϰ āϤ⧁āϞāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϝ⧁āĻ•ā§āϤ āĻĒāĻĻā§āϧāϤāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I32659 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • SemanticsPropertyReceiver.performImeAction āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ PROPPROPERTYERECEIVER.PARFORMIMEACTION āĻāĻŦāĻ‚ SemanticsActions.PerformImeAction āĨ¤ ( ID0528 , āĻ–/322269946 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha02

7 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2024

androidx.compose.ui:ui-*:1.7.0-alpha02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • SemanticsPropertyReceiver.performImeAction āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇āĨ¤ ( I65865 , āĻŦāĻŋ/322269946 )
  • PopupProperties āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϝāĻž āĻāĻ•āϟāĻŋ usePlatformDefaultWidth āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āύ⧇āϝāĻŧ āϤāĻž āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧāĨ¤ ( I8f8d2 )
  • ComposeTestRule.waitUntil āĻāĻ•āϟāĻŋ āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āϛ⧇ W ( I9413e )
  • āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻœā§āĻžāĻžāύ āĻāĻĒāĻŋāφāχ unset() āĻāĻ•āχ āϏāĻ‚āĻļā§‹āϧāĻ• āĻšā§‡āχāύ⧇ āϝ⧁āĻ•ā§āϤ āĻšāĻ“āϝāĻŧāĻž āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻœā§āĻžāĻžāύ⧇āϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰāϤ⧇āĨ¤ āύāϤ⧁āύ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻœā§āĻžāĻžāύ⧇āϰ āϏāĻŽā§āĻĒāĻ¤ā§āϤāĻŋ isOpaque āĨ¤ ( I8c583 , āĻ–/317966058 , āĻŦāĻŋ/246056649 )
  • PointerInputChange āϏāĻ°ā§āĻŦāϜāύ⧀āύ āĻāĻĒāĻŋāφāχāϤ⧇ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻĨ⧇āϕ⧇ originalEventPosition āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I7bead )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āύāĻŋāĻ°ā§āĻŦāĻžāϚāĻŋāϤ āĻšāĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āύāύ-āϟāĻŋāĻāĻŦāĻŋāĻāϏ āĻāĻŦāĻ‚ āύāύ-āϰ⧇āĻĄāĻŋāĻ“āĻŦ⧁āϟāύāϗ⧁āϞāĻŋ āĻ•ā§āϞāĻŋāĻ• āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻ 11 āĻ“āϝāĻŧāĻžāχ āĻŦāĻžāĻ— āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇āĨ¤ ( āφāχ 2181 āϏāĻŋ )
  • VelocityTracker āĻāĻ–āύ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĢāĻŋāĻ•ā§āϏ āĻĨāĻžāĻ•āĻŦ⧇āĨ¤ āϕ⧋āύāĻ“ āϏāĻŽāĻ¸ā§āϝāĻž āĻĨāĻžāĻ•āϞ⧇ VelocityTrackerAddPointsFix āĻŽāĻŋāĻĨā§āϝāĻž āĻŦāϞ⧇ āϏ⧇āϟ āĻ•āϰ⧇ āĻāĻ–āύāĻ“ āĻĢāĻŋāĻ•ā§āϏāϟāĻŋ āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( āφāχāĻŦāĻŋ 3877 , āĻŦāĻŋ/269487059 )
  • TextStyle āĻāĻŦāĻ‚ ParagraphStyle āĻ¸ā§āĻĨāĻŋāϰ āĻĒāĻŋāĻ›āύ⧇āϰ āĻĻāĻŋāϕ⧇ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻ…āϏāĻ™ā§āĻ—āϤāĻŋāĨ¤ ( I179f0 , āĻ–/320819734 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ DialogProperties āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āϛ⧇āύāĨ¤ ( I45829 )
  • āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ-āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāχ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ PopupProperties āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āϛ⧇āύāĨ¤ ( I9a038 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha01

24 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2024

androidx.compose.ui:ui-*:1.7.0-alpha01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.7.0-alpha01 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϚāĻŋāĻ¤ā§āϰ⧇āϰ āĻŽāϤ⧋ āĻ¸ā§āĻŦ⧇āĻšā§āĻ›āĻžāϏ⧇āĻŦā§€ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ ClipEntry āĻāĻŦāĻ‚ ClipMetadata āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ ClipboardManager āĻĒā§āϰāϏāĻžāϰāĻŋāϤāĨ¤
  • āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻ…āϧ⧀āύ⧇ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϰ āφāϚāϰāĻŖāϕ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧāĻ­āĻžāĻŦ⧇ āĻ“āĻ­āĻžāϰāϰāĻžāχāĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ ui-test DeviceConfigurationOverride āĻāĻĒāĻŋāφāχ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āϝ⧇āĻŽāύ āωāĻĒāϞāĻ­ā§āϝ āφāĻ•āĻžāϰ, āϞ⧋āϕ⧇āϞ, āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ⧇āϰ āĻĻāĻŋāĻ•āύāĻŋāĻ°ā§āĻĻ⧇āĻļ, āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞ āĻŦāĻž āĻĨāĻŋāĻŽ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.8

āϜ⧁āύ 12, 2024

androidx.compose.ui:ui-*:1.6.8 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.8-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚āϝāĻŧ⧇ āĻ¸ā§āĻĨāĻŋāϰ āĻ…āϏāĻ™ā§āĻ—āϤāĻŋāϗ⧁āϞāĻŋ āϝāĻ–āύ āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞāϟāĻŋ āϏāĻ°ā§āĻŦāύāĻŋāĻŽā§āύ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻŸā§‡āĻŦāĻŋāϞ⧇āϰ āĻšā§‡āϝāĻŧ⧇ āĻ•āĻŽ āĻĨāĻžāϕ⧇āĨ¤ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āφāĻŽāϰāĻž āĻāĻ–āύ āϞāĻŋāύāĻŋāϝāĻŧāĻžāϰ 1x āĻ¸ā§āϕ⧇āϞ āĻāĻŦāĻ‚ āϏāĻ°ā§āĻŦāύāĻŋāĻŽā§āύ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āϏāĻžāϰāĻŖā§€āϰ āĻŽāĻ§ā§āϝ⧇ āχāĻ¨ā§āϟāĻžāϰāĻĒ⧇āϟ āĻ•āϰāĻŋ, āϝāĻžāϤ⧇ āĻ¸ā§āϕ⧇āϞāϗ⧁āϞāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āĻĢāĻ¨ā§āĻŸā§‡āϰ āφāĻ•āĻžāϰ āĻāĻ•āĻ˜ā§‡āϝāĻŧ⧇āĻ­āĻžāĻŦ⧇ āĻŦ⧃āĻĻā§āϧāĻŋ āĻĒāĻžāϝāĻŧāĨ¤ ( āφāχāϏāĻŋāĻŦāĻŋāĻ 3 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.7

1 āĻŽā§‡, 2024

androidx.compose.ui:ui-*:1.6.7 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.7-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.6

āĻāĻĒā§āϰāĻŋāϞ 17, 2024

androidx.compose.ui:ui-*:1.6.6 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.6-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻāĻ•āϟāĻŋ āĻŦāĻŋāϰāϞ BasicTextField āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻ āĻŋāĻ• āĻ•āϰ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.5

3 āĻāĻĒā§āϰāĻŋāϞ, 2024

androidx.compose.ui:ui-*:1.6.5 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.5 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.4

20 āĻŽāĻžāĻ°ā§āϚ, 2024

androidx.compose.ui:ui-*:1.6.4 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.4 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.3

6 āĻŽāĻžāĻ°ā§āϚ, 2024

androidx.compose.ui:ui-*:1.6.3 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.3-āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.2

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ 21, 2024

androidx.compose.ui:ui-*:1.6.2 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.2 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.1

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰ⧀ 7, 2024 androidx.compose.ui:ui-*:1.6.1 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.1-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • SemanticsPropertyReceiver.performImeAction āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž āϏāĻŽāĻ¸ā§āϝāĻž āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇ PROPPROPERTYERECEIVER.PARFORMIMEACTION āĻāĻŦāĻ‚ SemanticsActions.PerformImeAction āĨ¤ ( āφāχ 0 āĻŦāĻŋāĻŦāĻŋ 2 , āĻŦāĻŋ/322269946 )
  • āϝāĻ–āύ āϕ⧇āω āĻ…āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻŦāĻĄāĻŧ āφāĻ•āĻžāϰ⧇ āĻĢāĻŋāϰ⧇ āφāϏ⧇ āϤāĻ–āύ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϞ⧇āφāωāϟāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻ¤ā§āϰ⧁āϟāĻŋ āϜāĻžāϰāĻŋ āĻ•āϰ⧇āĨ¤ āĻāχ āϧāϰāϪ⧇āϰ āĻ¤ā§āϰ⧁āϟāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āϘāĻŸā§‡ āϝāĻ–āύ āĻĒāϰāĻŋāĻŽāĻžāĻĒāϟāĻŋ Constraints.Infinity āĻĒāϰ⧀āĻ•ā§āώāĻž āύāĻž āĻ•āϰ⧇ āϏāϰāĻžāϏāϰāĻŋ āϏāĻ°ā§āĻŦāĻžāϧāĻŋāĻ• āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ inf āĻšā§‡āĻ•āϟāĻŋ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āϞ⧇āφāωāϟāϟāĻŋ āϧāĻžāϰāĻŖ āĻ•āϰ⧇ āĻāĻŽāύ āϕ⧋āύāĻ“ āϞ⧇āφāωāĻŸā§‡āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϭ⧁āϞ āφāĻ•āĻžāϰ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻž āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰāĻŦ⧇āĨ¤ ( I339a9 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0

24 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2024

androidx.compose.ui:ui-*:1.6.0 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-āφāϰāϏāĻŋ 01

āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 10, 2024

androidx.compose.ui:ui-*:1.6.0-rc01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-RC01 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰāϗ⧁āϞāĻŋ āĻšā§āϰāĻžāϏ āĻ•āϰ⧇ āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āωāĻ¨ā§āύāϤ āĻ•āϰāϤ⧇ āĻ…āύ⧁āϕ⧂āϞāĻŋāϤ āϭ⧇āĻ•ā§āϟāϰ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύāĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-beta03

13 āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.6.0-beta03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.6.0-beta03 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • āύ⧋āĻĄāϟāĻŋ āĻŦāĻŋāĻšā§āĻ›āĻŋāĻ¨ā§āύ āύāĻž āĻ•āϰ⧇ āĻāĻ–āύ āϕ⧋āύāĻ“ LayoutCoordinates āφāϞāĻžāĻĻāĻž āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤ āϰāϚāύāĻž āϞ⧇āφāωāϟ āχāĻ¨ā§āϏāĻĒ⧇āĻ•ā§āϟāϰ ( āφāχāĻāĻĢ 693 ) āĻ āĻāϰ ​​āĻŦāĻŋāϰ⧁āĻĻā§āϧ⧇ āϰāĻ•ā§āώāĻž āĻ•āϰ⧁āύ

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • PlatformImeOptions āĻāĻ–āύ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻ‚āĻ•ā§āϰāĻŋāϟ āĻ•ā§āϞāĻžāϏāĨ¤ ( If40a4 )
  • āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒā§āϰāĻŦāĻžāĻšā§‡āϰ āĻĒ⧁āύāσāύāĻŋāĻ°ā§āĻŽāĻžāĻŖāϗ⧁āϞāĻŋ LocalSoftwareKeyboardController āĻāĻŦāĻ‚ LocalTextInputService āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āϰ⧁āϟ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻšāĻ“āϝāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āύāϤ⧁āύ āĻŽāĻžāύ āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻž āĻšāĻšā§āϛ⧇āĨ¤ ( āφāχ 42190 , āĻŦāĻŋ/310510985 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-beta02

āύāϭ⧇āĻŽā§āĻŦāϰ 29, 2023

androidx.compose.ui:ui-*:1.6.0-beta02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-BETA02 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-BETA01

15 āύāϭ⧇āĻŽā§āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.6.0-beta01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-BETA01 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • DragAndDropTarget āϏāĻ‚āĻļā§‹āϧāĻ• āĻāĻ–āύ āĻ¸ā§āĻĒāĻˇā§āϟāĻ­āĻžāĻŦ⧇ DragAndDropTarget āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύ āĻŦ⧇āϛ⧇ āύ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āϰāϝāĻŧ⧇āϛ⧇āĨ¤ DragAndDropModifierNode āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ–āύ āĻĻ⧁āϟāĻŋ āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ—ā§āϰāĻšāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻž āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ⧇āϰ āϜāĻ¨ā§āϝ ( I69481 )
  • āĻĢā§āϞ⧋āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ⧇āϰ āϜāĻ¨ā§āϝ maximumFlingVelocity āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ maximumFlingVelocity unity āĻ•ā§āϝ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āĻ¸ā§āĻĒāĻˇā§āϟ āĻšāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύāĨ¤ ( I8adc7 )
  • DragAndDropModifierNode āĻ•āĻžāϰāĻ–āĻžāύāĻžāϝāĻŧ onDragAndDropStart āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ acceptDragAndDropTransfer āĨ¤ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻ…ā§āϝāĻžāĻ¨ā§āĻĄ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύ āĻĨ⧇āϕ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ dragAndDropTarget āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇ acceptsDragAndDropTransfer āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāχ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĻāĻž āĻāĻ•āϟāĻŋ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύ⧇ āφāĻ—ā§āϰāĻšā§€ āĻšāϞ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ DragAndDropTarget āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧāĨ¤ āĻĄā§āĻ°ā§āϝāĻžāĻ— āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āĻĒā§āϰāĻ•ā§āϰāĻŋāϝāĻŧāĻžāϜāĻžāϤāĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϏ āĻāϟāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ•āϟāĻŋ DragAndDropTarget āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύ āĻĨ⧇āϕ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ ( Iebf3a )
  • DragAndDropInfo āϟāĻžāχāĻĒ āĻšāĻŋāϏāĻžāĻŦ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ DragAndDropModifierNode.drag āĻāĻ–āύ transferData , āĻĄā§‡āϕ⧋āϰ⧇āĻļāύ āϏāĻžāχāϜ āĻāĻŦāĻ‚ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻĄā§‡āϕ⧋āϰ⧇āĻļāύ DrawScope lambda-āĻāϰ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āύ⧇āϝāĻŧ

    DragAndDropTarget āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āĻŦāĻŋāĻŽā§‚āĻ°ā§āϤ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒāĻĻā§āϧāϤāĻŋ āϰāϝāĻŧ⧇āϛ⧇

    DragAndDropModifierNode āϜāĻ¨ā§āϝ āĻ•āĻžāϰāĻ–āĻžāύāĻžāϰ āĻĢāĻžāĻ‚āĻļāύ⧇ onDragAndDropEvent onDragAndDropStart āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āφāϰāĻ“ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϝ⧇ āĻĒā§āϰāĻĻāĻ¤ā§āϤ DragAndDropTarget āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āĻĒā§āϰāĻĻāĻ¤ā§āϤ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦ⧈āϧ, āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ

    DragAndDropEventType āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ ( i645b1 )

  • PlatformTextInputModifierNode.runTextInputSession establishTextInputSession āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I03cd0 )

  • āĻāϗ⧁āϞāĻŋ āφāϰāĻ“ āĻŦā§‹āϧāĻ—āĻŽā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŸā§āĻ°ā§āϝāĻžāĻ­āĻžāϰāϏ⧇āĻŦāϞ āύ⧋āĻĄ āĻāĻĒāĻŋāφāχ āύāĻžāĻŽāϗ⧁āϞāĻŋ āωāĻ¨ā§āύāϤ āĻ•āϰ⧇āĨ¤ ( āφāχāĻ 4474 )

  • TextSubstitution āĻĻā§āĻŦāĻžāϰāĻž OriginalText āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύāĨ¤ ( Ifa5a8 )

  • PlatformTextInputModifierNode.textInputSession āĻŸā§‡āĻ•ā§āϏāϟāχāύāĻĒ⧁āϟāĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāύ⧋āĻĄā§‡āϰ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ runTextInputSession ( Ie9c6b )

  • SubcomposeLayout āĻāϰ āĻŦāĻžāĻšā§āϚāĻžāĻĻ⧇āϰ (āĻāĻŦāĻ‚ LazyColumn āĻāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϞ⧇āφāωāϟāϗ⧁āϞāĻŋ) āϝ⧇āϗ⧁āϞāĻŋ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻĒ⧁āύāσāĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϧāϰ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻŦāϞ⧇ āĻŦāĻŋāĻŦ⧇āϚāĻŋāϤ āĻšāĻŦ⧇⧎ āĻāχ āϜāĻžāϤ⧀āϝāĻŧ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ assertIsDeactivated() āĻŸā§‡āĻ¸ā§āϟ āĻāĻĒāĻŋāφāχ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋāϰ āĻŦāĻŋāĻļā§āϰāĻžāĻŽāϗ⧁āϞāĻŋ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āĻ•āϰāĻŦ⧇āĨ¤ ( I2EF84 , ​​āĻ–/187188981 )

  • FocusDirection.In āĻāĻŦāĻ‚ FocusDirection.Out FocusDirection.Enter āĻāĻŦāĻ‚ FocusDirection.Exit āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( āφāχ 2 āĻāĻĢ 660)

  • āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ SwipeToReveal āĻāĻĒāĻŋāφāχ (āĻ•āĻžāĻ°ā§āĻĄ āĻāĻŦāĻ‚ āϚāĻŋāĻĒāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ) āĻāĻ–āύ āĻ¸ā§āϞāϟ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻāĻĒāĻŋāφāχ (āĻ•āĻŽāĻĒā§‹āϜ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ āĻšāĻŋāϏāĻžāĻŦ⧇) āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āϏ⧇āχ āĻ¸ā§āϞāϟāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄā§‡āϟāĻž āĻ•ā§āϞāĻžāϏ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻŦā§āϰ⧇āĻ•āĻŋāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ, āύāϤ⧁āύ API āϕ⧀āĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŦ⧇āύ āϤāĻžāϰ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻĻāϝāĻŧāĻž āĻ•āϰ⧇ āĻĄā§‡āĻŽā§‹ āĻāĻŦāĻ‚ āύāĻŽā§āύāĻž āϕ⧋āĻĄāϟāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤ ( Ia8943 )

  • FontStyle(int) āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰāϕ⧇ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ, FontStyle.Normal āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ FontStyle.Italic ( I66610 )

  • FontScaling FontScalable āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( āφāχāχ 804 āĻ )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • SoftwareKeyboardController.show() āϕ⧋āύāĻ“ āĻĒāĻžāĻ ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāĻ•āϕ⧇ āϕ⧇āĻ¨ā§āĻĻā§āϰ āĻ•āϰ⧇ āύāĻž āĻĨāĻžāĻ•āϞ⧇ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄāϟāĻŋ āφāϰ āĻĒā§āϰāĻĻāĻ°ā§āĻļāύ āĻ•āϰāĻŦ⧇ āύāĻžāĨ¤ ( I2165a , āĻ–/301477279 )
  • āϕ⧀āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻšāĻžāĻ°ā§āĻĄāĻ“āϝāĻŧā§āϝāĻžāϰ āϕ⧀ āφāĻĒ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋ āϝāĻž āĻāĻ•āχ āϰāϚāύāĻž āĻ­āĻŋāωāϤ⧇ āĻĄāĻžāωāύ āχāϭ⧇āĻ¨ā§āϟāϟāĻŋ āĻĒāĻžāϝāĻŧ āύāĻŋ āĻāĻ–āύ āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ ( āφāχāĻŦāĻŋ 37 āĻŦāĻŋ 4 , āĻŦāĻŋ/305518328 )
  • ArcLine āϏ⧁āχāĻĒ āĻ—ā§āϰ⧇āĻĄāĻŋāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϜāĻ¨ā§āϝ āϰ⧇āĻ¨ā§āĻĄāĻžāϰāĻžāϰ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ ( I4d5bb )
  • PageSize.Fixed āϜāĻ¨ā§āϝ āϏāĻŽāĻžāύ āĻāĻŦāĻ‚ āĻšā§āϝāĻžāĻļāϕ⧋āĻĄ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧁āύāĨ¤ ( Ie3ede , āĻ–/300134276 )
  • āωāχāĻ¨ā§āĻĄā§‹ āχāύāϏ⧇āϟ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦāĻžāχāύāĻžāϰāĻŋ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ⧇āϰ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ ( Iee695 )
  • Material3 āϚāĻŋāĻĒ/āĻŦā§‹āϤāĻžāĻŽā§‡āϰ āϜāĻ¨ā§āϝ āωāĻĒāĻžāĻĻāĻžāύ⧇āϰ āĻŽā§‚āϞ āĻ¸ā§āϤāϰāϟāĻŋ āϏāϰāĻžāύ āĻ•āĻžāϰāĻŖ āĻŽāĻžāχāĻ•ā§āϰ⧋āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āĻ•āϗ⧁āϞāĻŋ āĻāϟāĻŋ āĻ›āĻžāĻĄāĻŧāĻž āφāϰāĻ“ āĻ­āĻžāϞ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ ( I55555 )
  • TestDispatcher āĻāϏ āĻĒāĻžāϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ effectContext āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ–āύ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻāĻŦāĻ‚ āĻĢā§āϰ⧇āĻŽ āϘāĻĄāĻŧāĻŋāϗ⧁āϞāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāĻŦ⧇āĨ¤ ( āφāχāĻ 7178 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-alpha08

18 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.6.0-alpha08 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-alpha08 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Modifier.dragAndDrawSource onDrawDragShadow lambda-āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ drawDragDecoration āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ DragAndDropInfo āϏāĻžāχāϜ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ dragDecorationSize āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( ID0E30 , āĻ–/303904810 )
  • SemanticsNodeInteraction.isDisplayed() āĻāĻŦāĻ‚ SemanticsNodeInteraction.isNotDisplayed() āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ āϕ⧋āύāĻ“ āĻŽāĻŋāϞ⧇ āϝāĻžāĻ“āϝāĻŧāĻž āύ⧋āĻĄāϟāĻŋ āĻĻ⧃āĻļā§āϝāĻŽāĻžāύ āĻ•āĻŋāύāĻž āϤāĻžāĻ“ āĻāϟāĻŋ āĻœā§‹āϰ āύāĻž āĻ•āϰ⧇āχ āύāϝāĻŧ āĻ•āĻŋāύāĻž āϤāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻĻ⧇āϖ⧁āύāĨ¤ ( āφāχ 2 āϏāĻŋ 196 , āĻŦāĻŋ/302100809 )
  • null āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ⧇āϰ āϜāĻ¨ā§āϝ ParagraphTextStyle TextAlign , TextDirection , Hyphens āĻāĻŦāĻ‚ LineBreak āĻ•ā§āώ⧇āĻ¤ā§āϰāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻŦāĻŋāĻļ⧇āώ Unspecified āĻŽāĻžāύ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇āϛ⧇āĨ¤ āϝ⧇āĻšā§‡āϤ⧁ āĻāχ āĻ•ā§āϞāĻžāϏāϗ⧁āϞāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏāϗ⧁āϞāĻŋ, āĻ…āύāĻŋāĻ°ā§āĻŦāĻžāϚāĻŋāϤāĻĻ⧇āϰ āϏāĻžāĻĨ⧇ āĻ¨ā§āϝāϞ⧇āĻŦāϞāϕ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇, āφāĻŽāϰāĻž āφāĻĻāĻŋāĻŽ āϧāϰāϪ⧇āϰ āĻŦāĻ•ā§āϏāĻŋāĻ‚ āĻāĻĄāĻŧāĻžāϤ⧇ āĻĒāĻžāϰāĻŋāĨ¤ TextStyle āĻāĻŦāĻ‚ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ āĻļ⧈āϞ⧀āϤ⧇ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ, āϗ⧇āϟāĻžāϰ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āωāĻ˛ā§āϞāĻŋāĻ–āĻŋāϤ āĻĒāϰāĻžāĻŽāĻŋāϤāĻŋāϗ⧁āϞāĻŋāϕ⧇ āύāύ-āύāĻžāϞ āĻĒā§āϰāĻ•āĻžāϰ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ ( I4197e , āĻ–/299490814 )
  • āĻāĻ•ā§āϏāĻāĻŽāĻāϞ āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ GoogleFont āĻĒāĻĄāĻŧāĻžāϰ āϜāĻ¨ā§āϝ GoogleFont āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ ( If8f59 )
  • āϤ⧈āϰāĻŋ LoremIpsum PreviewParameterProvider āĻāĻ•āϟāĻŋ āωāĻ¨ā§āĻŽā§āĻ•ā§āϤ āĻļā§āϰ⧇āĻŖāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇āĨ¤ ( āφāχ 41 āĻŦāĻŋāĻāĻĢ 5 , āĻŦāĻŋ/266918816 , āĻŦāĻŋ/300116360 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • FontFamilyResolver āĻāĻ–āύ āĻ•ā§āϝāĻžāĻļ⧇ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āĻ•āϰ⧁āϟāĻžāχāύāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ Dispatchers.Main āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ ( Ie8dd9 )
  • AndroidViewBinding āĻāĻ–āύ āϏāĻŋāĻ™ā§āĻ•ā§āϰ⧋āύāĻžāϞāĻŋāĻ­āĻžāĻŦ⧇ Fragment āĻĻ⧃āĻˇā§āϟāĻžāĻ¨ā§āϤāϗ⧁āϞāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āφāĻĒāύāĻžāϰ āϞ⧇āφāωāĻŸā§‡ āĻāĻ•āϟāĻŋ FragmentContainerView commitNow āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤāĻžāϰ onRelease āĻ…āĻ‚āĻļ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻ¸ā§āĻĢā§€āϤ āĻ•āϰ⧇ ( commit āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāϟāĻŋ āφāϗ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ), āĻāχāĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āωāĻĒāϰ āϰāϚāύāĻžāϟāĻŋ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ⧇āϰ āϏāĻžāĻĨ⧇ āϞāĻžāχāĻ­ āĻāĻĄāĻŋāĻŸā§‡āϰ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇āĨ¤ ( I58fbf )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-Alpha07

4 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.6.0-alpha07 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.6.0-alpha07 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻĒāĻžāĻ ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāĻ•āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāϰ⧀āĻ•ā§āώāĻž āϞ⧇āĻ–āĻžāϰ āϜāĻ¨ā§āϝ PlatformTextInputMethodTestOverride āĻĒā§āϰāĻŦāĻ°ā§āϤāĻŋāϤāĨ¤ ( Id159b )
  • āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύāϗ⧁āϞāĻŋ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ dragAndDropSource āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āϏ⧇āĻļāύāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āĻĒā§āϰāĻžāĻĒā§āϤāĻŋāϰ āϜāĻ¨ā§āϝ dragAndDropTarget āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāĨ¤ ( āφāχāĻŦāĻŋ 7828 , āĻŦāĻŋ/286038936 )
  • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ColorList āĻāĻŦāĻ‚ ColorSet āϏāĻ‚āĻ—ā§āϰāĻš āϝāĻž āĻŦāϰāĻžāĻĻā§āĻĻ āĻāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϝāĻžāϝāĻŧāĨ¤ ( I744bd )
  • āĻ…-āϞāĻŋāύāĻŋāϝāĻŧāĻžāϰ āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āĻ…āĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĒāϤāĻžāĻ•āĻžāϟāĻŋ DisableNonLinearFontScalingInCompose āĻ•āϰ⧁āύ āφāĻĒāύāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ DisableNonLinearFontScalingInCompose = true āϏ⧇āϟ āĻ•āϰ⧁āύ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āϏ⧇āϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻˇā§āĻ•āĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŽāϝāĻŧ āϞāĻžāϗ⧇āĨ¤ āĻāχ āĻĒāϤāĻžāĻ•āĻžāϟāĻŋ āϰāϚāύāĻž 1.6.0-BETA01 āĻ āϏāϰāĻžāύ⧋ āĻšāĻŦ⧇āĨ¤ ( āφāχāϏāĻŋ 9486 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜāĻĄ āĻāĻ•ā§āϏāĻāĻŽāĻāϞ āϭ⧇āĻ•ā§āϟāϰ āĻĄā§āϰ⧇āĻŦāϞāϏ āĻĒāĻžāĻ°ā§āϏāĻŋāĻ‚āĨ¤ ( āφāχāĻŦāĻŋāĻŦāĻŋ 015 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-Alpha06

20 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.6.0-alpha06 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-alpha06 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āωāĻĒāĻžāĻĻāĻžāύ āφāχāĻ•āύāϗ⧁āϞāĻŋāϤ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāĻœā§‡āĻļāύāĨ¤ ( I3e08d )
  • āĻ…āύ⧁āϰ⧂āĻĒ āύ⧋āĻĄāϗ⧁āϞāĻŋ āϖ⧁āρāĻœā§‡ āĻĒ⧇āϤ⧇ āφāĻĒ/āĻĄāĻžāωāύ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻŸā§āϰāĻŋ āĻŸā§āĻ°ā§āϝāĻžāĻ­āĻžāĻ°ā§āϏ āĻ•āϰāĻžāϰ āĻ•ā§āώāĻŽāϤāĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ ( āφāχ 2 āĻĄāĻŋ 234 )
  • focusRestorer() āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ ( āφāχāχ 1 āĻĄāĻŋ 43 ) āĻ onRestoreFailed() āĻ•āϞāĻŦā§āϝāĻžāĻ• āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • ColorInt , FloatRange , IntRange , Size āĻāĻŦāĻ‚ āφāϰāĻ“ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋāϤ⧇ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄāĻāĻ•ā§āϏ āĻŸā§€āĻ•āĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( āφāχāĻĄāĻŋ 65 āϏāĻŋ 8 , āĻŦāĻŋ/290950582 )
  • āĻļā§‹ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽā§āωāχ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ = PreviewScreenSizes āϏāĻ‚āĻœā§āĻžāĻžāϤ⧇ showSystemUi=true ( ib61d3 )

āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ•āĻŽā§āĻĒā§‹āϜ āĻāĻ–āύ āĻ­āĻžāϞ āĻĒāĻ āύāϝ⧋āĻ—ā§āϝāϤāĻž āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ āύāύ-āϞāĻŋāύāĻŋāϝāĻŧāĻžāϰ āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āϏ⧇āϟāĻŋāĻ‚āϏ⧇ āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞ > 100% āĻšāϞ⧇, āϛ⧋āϟ āĻŸā§‡āĻ•ā§āϏāϟ āϏāĻžāϧāĻžāϰāĻŖāϤ āφāĻ•āĻžāϰ⧇ āĻŦāĻžāĻĄāĻŧāĻŦ⧇, āĻ•āĻŋāĻ¨ā§āϤ⧁ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇-āĻŦāĻĄāĻŧ āĻŸā§‡āĻ•ā§āϏāϟ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟ⧁ āĻŦāĻžāĻĄāĻŧāĻŦ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“, SP-āϤ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āϞāĻžāχāύ⧇āϰ āωāĻšā§āϚāϤāĻžāϗ⧁āϞāĻŋ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ 100% āĻ¸ā§āϕ⧇āϞ⧇āϰ āĻ…āĻ­āĻŋāĻĒā§āϰ⧇āϤ āωāĻšā§āϚāϤāĻžāϰ āϏāĻŽāĻžāύ⧁āĻĒāĻžāϤāĻŋāĻ• āĻĨāĻžāĻ•āĻžāϰ āϜāĻ¨ā§āϝ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰāĻŦ⧇āĨ¤ āφāϰāĻ“ āϤāĻĨā§āϝ⧇āϰ āϜāĻ¨ā§āϝ āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āϏ⧇āϰāĻž āĻ…āύ⧁āĻļā§€āϞāύāϗ⧁āϞāĻŋ āĻĻ⧇āϖ⧁āύāĨ¤ ( I11518 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-alpha05

6 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.6.0-alpha05 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-ALPHA05 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • AndroidComposeViewAccessibilityDelegateCompat āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻ•ā§āϝāĻžāĻĒāϚāĻžāϰ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧁āύāĨ¤ ( āφāχāĻŦāĻŋ 2969 )
  • ScrollView āĻāĻŦāĻ‚ RecyclerView āĻŽāϤ āĻ­āĻŋāω āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋāϤ⧇ āĻĢā§āϞāĻŋāĻ‚ āĻŦ⧇āĻ— ViewConfiguration.ScaledMaximumFlingVelocity āĻ āĻ•ā§āϝāĻžāĻĒ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϰāϚāύāĻžāϝāĻŧ āĻāĻ–āύ maximumFlingVelocity āĻāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ āϰāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻāĻ–āύ Draggable -āĻ āĻĒā§āϰāϝ⧋āĻœā§āϝāĨ¤ ( āφāχāĻŦāĻŋāĻāĻĢ 974 )
  • āĻĒā§āĻ˛ā§āϝāĻžāϟāĻĢāĻ°ā§āĻŽ āĻĄā§āĻ°ā§āϝāĻžāĻ— āĻāĻŦāĻ‚ āĻĄā§āϰāĻĒ āĻāĻĒāĻŋāφāχ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāϤ⧇ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻ• āĻ¸ā§āĻ•ā§āϝāĻžāĻĢā§‹āĻ˛ā§āĻĄāĻŋāĻ‚ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤ ( If84ce )
  • RotaryScrollEvent deviceId āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύ ( āφāχāĻŦāĻŋāĻ 3 āĻŦāĻŋāĻāĻĢ )
  • āύāϤ⧁āύ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ ui-tooling āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āĻāĻĒāĻŋāφāχ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧ⧇āϛ⧇ ( āφāχāĻŦāĻŋ 25 āĻŦāĻŋ 4 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-Alpha04

23 āφāĻ—āĻ¸ā§āϟ, 2023

androidx.compose.ui:ui-*:1.6.0-alpha04 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ 1.6.0-alpha04 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • ReusableComposition āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖāϗ⧁āϞāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āύ⧋āĻĄāϗ⧁āϞāĻŋ āϰāĻžāĻ–āĻžāϰ āϜāĻ¨ā§āϝāĨ¤ āύāĻŋāĻˇā§āĻ•ā§āϰāĻŋāϝāĻŧ āϰāϚāύāĻžāϟāĻŋ setContent āĻ•āϞ āĻ•āϰ⧇ āφāĻŦāĻžāϰ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( āφāχāĻŦāĻŋ 7 āĻāĻĢ 31 )
  • āϞāĻžāχāĻĢāϏāĻžāχāϕ⧇āϞ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻāĻŦāĻ‚ āϏāĻžāĻŦāϕ⧋āĻĒāϜāĻŋāĻļāύāϗ⧁āϞāĻŋāϰ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ ReusableComposition āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ ( I812d1 , b/252846775 )
  • Modifier.focusGroup āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ API-āĻ āωāĻ¨ā§āύ⧀āϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I7ffa3 )
  • ColorInt , FloatRange , IntRange , Size āĻāĻŦāĻ‚ āφāϰāĻ“ āĻ…āύ⧇āĻ• āĻ•āĻŋāϛ⧁ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāϤ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻāĻĒāĻŋāφāχāϗ⧁āϞāĻŋāϤ⧇ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄāĻāĻ•ā§āϏ āĻŸā§€āĻ•āĻž āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I70487 , āĻŦāĻŋ/290950582 )
  • āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋāϰ āωāĻ¨ā§āύāϤ āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāύāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻ•āĻ‚āĻ•ā§āϰāĻŋāϟ āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒā§āϰāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āĻŸā§‡āĻĄ ColorFilter āĻāĻĒāĻŋāφāχāĨ¤ ( I5fe29 )
  • UI āĻĒā§‚āĻ°ā§āĻŦāϰ⧂āĻĒāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āĻŦ⧈āϧ āĻĒāϰāĻŋāϧāĻžāύ āĻĄāĻŋāĻ­āĻžāχāϏāϗ⧁āϞāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻ“āϝāĻŧ⧇āϝāĻŧāĻžāϰ-āϟ⧁āϞāĻŋāĻ‚-āĻĒā§āϝāĻžāĻ­āĻŋāω āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•āϰāĻŋāϝāĻŧ⧇ āĻĻāĻŋāύ ( āφāχāĻŦāĻŋ 036E )
  • āϘāύāĻ¤ā§āĻŦ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ⧇āϰ āĻĢāĻ¨ā§āϟ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āĻ…āĻ‚āĻļāϟāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ FontScalable āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇āĨ¤ ( I2cf3f )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-alpha03

9 āφāĻ—āĻ¸ā§āϟ, 2023

androidx.compose.ui:ui-*:1.6.0-alpha03 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-ALPHA03 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āύāϤ⧁āύ āϧāϰāϪ⧇āϰ āĻāĻ¨ā§āϟāĻžāϰ/āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻŸā§āϰāĻžāύāϜāĻŋāĻļāύ āϝāĻž āĻāĻ¨ā§āϟāĻžāϰ āĻāĻŦāĻ‚ āĻĒā§āϰāĻ¸ā§āĻĨāĻžāύ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ āϚāϞāĻžāĻ•āĻžāϞ⧀āύ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āϟāĻŋāĻ‚ āϧāĻžāϰāĻ•āϟāĻŋāϰ āφāĻ•āĻžāϰ⧇āϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϕ⧇ āĻ¸ā§āϕ⧇āϞ āĻ•āϰ⧇āĨ¤ LookaheadScope āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ āĻŽāϜāĻž āĻāĻŦāĻ‚ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻāĻ–āύ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞāĨ¤ ( Ifb2ce )
  • privateImeOptions āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Idb772 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • PopupPositionProvider.calculatePosition āĻāĻ–āύ āϝāĻ–āύ āĻ—āĻŖāύāĻžāϰ āĻŽāĻ§ā§āϝ⧇ āϰāĻžāĻœā§āϝ āĻĒāĻĄāĻŧāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻ–āύ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĒāĻĒāφāĻĒ⧇āϰ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŦ⧇āĨ¤ ( I676a1 , āĻ–/292257547 )
  • āĻĢāĻŋāĻ•ā§āϏāĻĄ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻŋāĻ˛ā§āĻĄāϗ⧁āϞāĻŋ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻĻ⧇āĻ–āĻžāĻšā§āϛ⧇ āĻāĻŦāĻ‚ readOnly āϏāĻ¤ā§āϝ āĻšāϞ⧇ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻžāϝ⧋āĻ—ā§āϝāĨ¤ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ readOnly āϏāĻ¤ā§āϝ āĻĨ⧇āϕ⧇ āĻŽāĻŋāĻĨā§āϝāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϞ⧇ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄāϟāĻŋ āĻĻ⧇āĻ–āĻžāύ⧋ āĻšāϝāĻŧāύāĻŋ āϤāĻžāĻ“ āĻ¸ā§āĻĨāĻŋāϰ āĻ•āϰ⧇āĨ¤ ( I34a19 , b/246909589 )
  • āχāωāφāχ āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ āĻŦ⧈āĻļā§āĻŦāĻŋāĻ• āĻĻāĻžāĻŦāĻŋāϰ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻĒā§āϰāϝāĻŧā§‹āĻ—āĨ¤ ( I1f90d )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-Alpha02

āϜ⧁āϞāĻžāχ 26, 2023

androidx.compose.ui:ui-*:1.6.0-alpha02 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻāĻ•āϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āϞ⧋āϕ⧇āϟāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āϰāϚāύāĻž āĻĒā§āϰāϝāĻŧā§‹āĻ—āĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āϰāϚāύāĻž āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āϝāĻž āĻŽā§‚āϞ āϰāϚāύāĻžāϟāĻŋāϤ⧇ āĻ…āĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϰāϚāύāĻž āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻ…āύ⧁āϏāĻ¨ā§āϧāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāĻ¤ā§āĻŦ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋāϕ⧇ āĻĄāĻžāχāϰ⧇āĻ•ā§āĻŸā§āϟāĻŋ āĻŦāϞāĻž āωāϚāĻŋāϤ āύāϝāĻŧ āĻāĻŦāĻ‚ āϰāĻžāύāϟāĻžāχāĻŽāϟāĻŋāϤ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻāĻĒāĻŋāφāχ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧ āϝāĻž āχāωāφāχ āĻŽāĻĄāĻŋāωāϞāϟāĻŋāϰ āĻŽāϤ⧋ āϏ⧁āϰāĻ•āĻžāϰ⧇āϰ āĻŽā§‹āĻĄāĻŧāĻžāύ⧋ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāϝāĻŧāĨ¤ ( I296b9 )
  • āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž PlatformTextInput* āĻāĻĒāĻŋāφāχāĨ¤ ( I6c93a , āĻŦāĻŋ/274661182 , āĻŦāĻŋ/267235947 , āĻŦāĻŋ/277380808 )
  • SoftwareKeyboardController āĻāĻŦāĻ‚ LocalSoftwareKeyboardController āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧāĨ¤ LocalSoftwareKeyboardController āĻāĻ–āύ āĻāĻ•āϟāĻŋ āϏāĻ āĻŋāĻ• CompositionLocal āĨ¤ ( I4c364 )
  • LookaheadLayout āĻāĻŦāĻ‚ LookaheadLayoutScope āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āϰāĻŋāϞāĻŋāĻœā§‡āϰ āϜāĻ¨ā§āϝ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāĻ–āύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻāĻĒāĻŋāφāχ āĻš'āϞ LookaheadScope āϝāĻž āϝ⧇ āϕ⧋āύāĻ“ āϞ⧇āφāωāĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I12ac3 )
  • āĻŸā§‡āĻ¸ā§āϟāϗ⧁āϞāĻŋāϤ⧇ āĻĢā§‹āĻ•āĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāϰāĻ“ āϏ⧁āĻŦāĻŋāϧāĻžāϜāύāĻ• āĻāĻŦāĻ‚ āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰāϝ⧋āĻ—ā§āϝ āωāĻĒāĻžāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ⧇ SemanticsNodeInteraction.requestFocus āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ie8722 )
  • āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻĢā§āϰ⧇āĻŽāĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āϗ⧁āϞāĻŋ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ—ā§āϞ⧋āĻŦāĻžāϞ āĻĻ⧃ ser āĻŧāϤāĻž āύāĻŋāĻŦāĻ¨ā§āϧāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻāĻĒāĻŋāφāχ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤ ( āφāχ 12 āĻĄāĻŋ 77 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • AndroidView update āĻ•āϞāĻŦā§āϝāĻžāϕ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āĻ…āύ⧁āϰ⧋āϧāϟāĻŋ āĻāĻ–āύ āĻ­āĻŋāω āϏāĻ‚āϝ⧁āĻ•ā§āϤ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ¸ā§āĻĨāĻ—āĻŋāϤ āĻ•āϰāĻž āĻšāĻŦ⧇, āϝāĻ–āύ AndroidView āĻĒā§āϰāĻŦāĻ°ā§āϤāĻŋāϤ āϰāϚāύāĻžāϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻ–āύ āϚāϞāĻŽāĻžāύ āύāĻž āĻšāϝāĻŧ⧇ āϚāϞāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤ āĻāϟāĻŋ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āĻ āĻŋāĻ• āĻ•āϰ⧇ āϝ⧇āĻ–āĻžāύ⧇ update āĻ•āϞāĻŦā§āϝāĻžāĻ•āϟāĻŋ āĻ…āĻŦ⧈āϧ āĻšāĻŦ⧇ āύāĻž āϝāĻĻāĻŋ āĻāϟāĻŋ āϕ⧋āύāĻ“ āϰāĻžāĻœā§āϝ āĻĒāĻĄāĻŧāĻžāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻĨ⧇ āϕ⧋āύāĻ“ āĻĒā§āϰāĻ­āĻžāĻŦ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧāĨ¤ ( āφāχāχ 9438 , āĻŦāĻŋ/291094055 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-Alpha01

āϜ⧁āύ 21, 2023

androidx.compose.ui:ui-*:1.6.0-alpha01 āĻĒā§āϰāĻ•āĻžāĻļāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.6.0-ALPHA01 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • LazyList āϞ⧁āĻ•āĻžāĻšāĻšā§‡āĻĄāϕ⧇ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧁āύāĨ¤ āĻāϟāĻŋ āϞ⧁āĻ•āĻžāϝāĻŧāĻšā§‡āĻĄ āĻĒāĻžāϏ⧇ LazyList āϕ⧋āύāĻ“ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϕ⧇ āĻŦāĻžāχāĻĒāĻžāϏ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ (āϝ⧇āĻŽāύ āφāχāĻŸā§‡āĻŽ āĻĒā§āϞ⧇āϏāĻŽā§‡āĻ¨ā§āϟ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ, AnimatedVisibility āχāĻ¤ā§āϝāĻžāĻĻāĻŋ) āĻāĻŦāĻ‚ āϏāĻŽāĻ¸ā§āϤ āĻļāĻŋāĻļ⧁āĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϞ⧁āĻ•āĻšā§‡āĻĄ āφāĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻ—āĻŖāύāĻž āĻ•āϰāϤ⧇āĨ¤ āϞ⧁āĻ•āĻšā§‡āĻĄ āĻĒāĻžāϏ⧇āϰ āĻĒāϰ⧇, LazyList āĻŦāĻžāĻšā§āϚāĻžāϰāĻž āϞ⧁āĻ•āĻžāĻšāĻšā§‡āĻĄ āĻĒāĻžāϏ⧇ āϝ⧇āĻŽāύ āĻĻ⧇āĻ–āĻž āϗ⧇āϛ⧇ āϤ⧇āĻŽāύ āĻŦāĻžāĻ¸ā§āϤāĻŦ⧇āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻŦāĻžāϧ⧀āύāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻžāĻŖāĻŦāĻ¨ā§āϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤāĻĢāĻ¨ā§āϟāĻĒā§āϝāĻžāĻĄāĻŋāĻ‚ āĻāĻ–āύ āĻ•āĻŽāĻĒā§‹āĻœā§‡ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ āĻŽāĻŋāĻĨā§āϝāĻž

includeFontPadding āĻāĻ–āύ āĻ•āĻŽāĻĒā§‹āĻœā§‡ āĻĄāĻŋāĻĢāĻ˛ā§āϟāϰ⧂āĻĒ⧇ ( 21d806 ) āĻŽāĻŋāĻĨā§āϝāĻžāĨ¤

includeFontPadding āĻāĻ•āϟāĻŋ āωāĻ¤ā§āϤāϰāĻžāϧāĻŋāĻ•āĻžāϰ⧀ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϝāĻž āĻĒāĻžāĻ ā§āϝ āĻŦ⧇āϏāϰ⧇āĻ–āĻžāϰ āωāĻĒāϰ⧇ āĻŦāĻž āύ⧀āĻšā§‡ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŽāύ āϕ⧋āύāĻ“ āĻ…āĻ•ā§āώāϰāϕ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĒā§āϰāĻĨāĻŽ āϞāĻžāχāύ⧇āϰ āωāĻĒāϰ⧇ āĻāĻŦāĻ‚ āĻĒāĻžāĻ ā§āϝ⧇āϰ āĻļ⧇āώ āϞāĻžāχāύ⧇āϰ āωāĻĒāϰ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒā§āϝāĻžāĻĄāĻŋāĻ‚ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻŦāĻž āύāĻž āĻ•āϰāĻž āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāχ āϰāϚāύāĻž āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖāϟāĻŋ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āφāĻĒāύāĻžāϰ āĻĒā§āϰāĻĻāĻ°ā§āĻļāĻŋāϤ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāĻ ā§āϝ⧇āϰ āĻĒā§āϰāĻĨāĻŽ āϞāĻžāχāύ⧇āϰ āĻļā§€āĻ°ā§āώ⧇ āĻāĻŦāĻ‚ āĻļ⧇āώ āϞāĻžāχāύāϟāĻŋāϰ āωāĻĒāϰ⧇ āĻ…āϤāĻŋāϰāĻŋāĻ•ā§āϤ āĻĒā§āϝāĻžāĻĄāĻŋāĻ‚ āϏāϰāĻŋāϝāĻŧ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āϏāĻŽāĻ¸ā§āϤ āĻĒāĻžāĻ ā§āϝ āφāĻĒāύāĻžāϰ āχāωāφāχāϤ⧇ āϰ⧇āĻ¨ā§āĻĄāĻžāϰ āĻ•āϰ⧇ āϤāĻž āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻŦ⧇āĨ¤

āφāĻĒāύāĻžāϰ āχāωāφāχ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āĻāĻŦāĻ‚ āφāĻĒāύāĻŋ āϝ⧇ āĻĢāĻ¨ā§āϟ āĻŽā§‡āĻŸā§āϰāĻŋāĻ•āϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϛ⧇āύ āϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤāĨ¤ āϤāĻŦ⧇ āφāĻĒāύāĻŋ āϝ⧇āĻŽāύ āĻŦā§āϞāĻ•āĻžāϰāĻĻ⧇āϰ āĻŽā§āĻ–ā§‹āĻŽā§āĻ–āĻŋ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āύ: - āĻ­āĻžāĻ™āĻž āĻ¸ā§āĻ•ā§āϰāĻŋāύāĻļāϟ āĻĒāϰ⧀āĻ•ā§āώāĻžāĨ¤ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇ āχāωāφāχ āĻ āĻŋāĻ• āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϏ⧋āύāĻžāϰ āϚāĻŋāĻ¤ā§āϰāϗ⧁āϞāĻŋ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύāĨ¤ - āĻĒāĻžāĻ ā§āϝāϟāĻŋ āĻ•āĻŋāϛ⧁āϟāĻž āϭ⧁āϞāĻ­āĻžāĻŦ⧇ āĻŦāĻŋāĻ­ā§āϰāĻžāĻ¨ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āϕ⧋āύāĻ“ āĻ•āĻžāĻ¸ā§āϟāĻŽ āύ⧇āϤāĻŋāĻŦāĻžāϚāĻ• āĻĒā§āϝāĻžāĻĄāĻŋāĻ‚āϗ⧁āϞāĻŋ āϏāϰāĻžāύ āĻŦāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧇ āĻĒā§āϝāĻžāĻĄāĻŋāĻ‚ āϝ⧁āĻ•ā§āϤ āĻ•āϰ⧁āύāĨ¤

āφāĻĒāύāĻŋ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāĻ ā§āϝ⧇āϰ āϜāĻ¨ā§āϝ PlatformTextStyle āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ includeFontPadding āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ:

Text(
 text = myText,
 style = TextStyle(
   lineHeight = 2.5.em,
   platformStyle = PlatformTextStyle(
     includeFontPadding = true/false
   )
   /* â€Ļ */
  )
)

āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āωāĻĒāĻžāĻĻāĻžāύ āĻļ⧈āϞ⧀āϗ⧁āϞāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ āϏāĻŽāĻ¸ā§āϤ āĻĒāĻžāĻ ā§āϝ⧇āϰ āϜāĻ¨ā§āϝ includeFontPadding āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āύ⧋āϟ āĻ•āϰ⧁āύ āϝ⧇ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āύāĻžāĻŽāϗ⧁āϞāĻŋ āĻāĻŽ 2 āĻāĻŦāĻ‚ āĻāĻŽ 3 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāĻŦ⧇āĨ¤

val Typography = Typography(
   body1 = TextStyle(
       fontFamily =    /* â€Ļ */,
       fontSize =    /* â€Ļ */,
       platformStyle = PlatformTextStyle(
           includeFontPadding = false
       )
   /* â€Ļ */
   )
)

MaterialTheme(
   typography = Typography,
   /* â€Ļ */
)

āφāĻĒāύāĻŋ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āĻāĻŦāĻ‚ āĻāχ āĻŦā§āϞāĻ— āĻĒā§‹āĻ¸ā§āĻŸā§‡ āĻ•āĻŽāĻĒā§‹āϜ includeFontPadding āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āφāϰāĻ“ āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āϏāĻŽāĻ¸ā§āϝāĻž/āĻŦāĻžāĻ—āϗ⧁āϞāĻŋ āĻ…āύ⧁āĻ­āĻŦ āĻ•āϰ⧇āύ āϤāĻŦ⧇ āχāĻ¸ā§āϝ⧁ āĻŸā§āĻ°ā§āϝāĻžāĻ•āĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āĻĢāĻžāχāϞ āĻ•āϰ⧁āύāĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āϏāĻŽāĻ°ā§āĻĨāύ InputConnection#requestCursorUpdates ( āφāχ 0 āϏāĻŋ 69 āĻŦāĻŋ )
  • Added FocusRequester.saveFocusedChild and FocusRequester.restoreFocusedChild ( Ic557e , b/272302679 , b/275157318 )
  • Add ResourceResolutionException type to wrap throwables thrown when attempting to load bitmap assets with a description of the asset path that failed to load. ( I19f44 , b/230166331 , b/278424788 )
  • Optimized accessibility for performance and memory allocations. ( Iede48 )
  • āĻŸā§‡āĻ•ā§āϏāϟ āĻ…āύ⧁āĻŦāĻžāĻĻ āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āĻāĻŦāĻ‚ āĻ•āĻ°ā§āĻŽ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇. ( I4a6bc )
  • New property in IntrinsincMeasureScope and its implementations (eg MeasureScope ) to indicate whether the current measure pass is a lookahead pass. ( I7a812 )
  • Updated DrawScope api to introduce the ability to retarget rendering into a different canvas with alternative density/layoutdirection and size.
  • Updated DrawContext to support configuration of density and layout direction as well as making the canvas configurable. ( Ie1f9b , b/225408150 )
  • Added Paragraph#fillBoundingBoxes to calculate character bounding boxes. ( If30ee )
  • Added a set of common MultiPreviews ( Ia5a27 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added FocusTargetModifierNode interface that can be used to create a custom FocusTarget . ( I9790e )
  • Renamed the fallback* parameters on the TextMeasurer constructor to default* . ( I940a5 )
  • Renamed SemanticsPropertyReceiver.performImeAction to onImeAction and SemanticsActions.PerformImeAction to OnImeAction . ( I8e841 )
  • Adds Wheel to differentiate a mouse scroll from a drag in nested scrolling (specifically, in NestedScrollConnection ). ( Ie57e4 )
  • Added asComposePaint API to replace toComposePaint as the returned object wraps the original android.graphics.Paint ( I22b4c )
  • Deprecate SemanticsProperties.imeAction and replace with a new parameter to SemanticsActions.performImeAction . ( I4a587 )
  • āĻŽāĻžāωāϏ āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻļāĻŦā§āĻĻ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻšāĻŦ⧇, āĻāĻŦāĻ‚ āĻ…āĻ•ā§āώāϰ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻ™ā§āϕ⧁āϚāĻŋāϤ āĻšāĻŦ⧇āĨ¤ ( Ic0c6c , b/180639271 )
  • Paragraph methods that used to throw AssertionError for out of bounds offsets now throw IllegalArgumentException as MultiParagraph does. ( I549d3 , b/243338896 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.4

18 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.5.4 is released. Version 1.5.4 contains these commits.

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.3

4 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.5.3 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.3 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • ( b/301209788 ) TextField would sometimes incorrectly apply previous commands when focusing and inputting Korean input, leading to lost characters.

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.2

27 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.5.2 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.2 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added workaround for crashes when accessibility scroll API was accessed from background thread.
  • Fix unattached nodes being added to the semantics tree.

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.1

6 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2023

androidx.compose.ui:ui-*:1.5.1 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.1 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĢāĻŋāĻ•ā§āϏāĻĄ āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻŋāĻ˛ā§āĻĄāϗ⧁āϞāĻŋ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻĻ⧇āĻ–āĻžāĻšā§āϛ⧇ āĻāĻŦāĻ‚ readOnly āϏāĻ¤ā§āϝ āĻšāϞ⧇ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻžāϝ⧋āĻ—ā§āϝāĨ¤ Also fixed the keyboard not showing when readOnly is changed from true to false while focused. ( I34a19 , b/246909589 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0

9 āφāĻ—āĻ¸ā§āϟ, 2023

androidx.compose.ui:ui-*:1.5.0 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-āφāϰāϏāĻŋ 01

āϜ⧁āϞāĻžāχ 26, 2023

androidx.compose.ui:ui-*:1.5.0-rc01 is released. 1.5.0-rc01 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed crash happening when SubcomposeLayout is used inside movableContentOf() .

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-beta03

āϜ⧁āύ 28, 2023

androidx.compose.ui:ui-*:1.5.0-beta03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-beta03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added FocusTargetModifierNode interface that can be used to create a custom FocusTarget. ( Ifb1d6 )
  • Fixed an issue with Dialog and Popup composables that could result in the child window not resizing as expected when usePlatformDefaultWidth=true . ( I112ee )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-BETA02

7 āϜ⧁āύ, 2023

androidx.compose.ui:ui-*:1.5.0-beta02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-beta02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added asComposePaint API to enable consumption of an android.graphics.Paint instance to be used in Compose

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added asComposePaint API to replace toComposePaint as the returned object wraps the original android.graphics.Paint ( I22b4c )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-BETA01

May 24, 2023

androidx.compose.ui:ui-*:1.5.0-beta01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ, āϰāĻ™ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ āĻāĻŦāĻ‚ AndroidComposeView ( āφāχāĻŦāĻŋ 2 āĻŦāĻŋāĻāĻĢāĻ ) āĻ āĻŦāϰāĻžāĻĻā§āĻĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
  • Adds helper fun CacheDrawModifierNode() to allow delegation ( Icf8f9 )
  • Introducing isLookingAhead property, accessible from MeasureScope , to observe lookahead results and influence main pass if desired. ( Ibf4c3 )
  • New semantics property traversalIndex , a float used to reorder nodes in TalkBack traversal (lower values come before). ( I9a81b , b/186443263 )
  • Renaming the Semantics property isContainer to isTraversalGroup ( I121f6 )
  • ColorProducer now has an operator fun invoke instead of produce ( I4a9a2 )
  • Add Path transform API to apply translation/scale/rotation transformations to path objects. ( I23434 , b/233772232 )
  • ColorProducer 's method is called produce . ( I78bde )
  • Rename toFrameworkColorSpace to toAndroidColorSpace ( I4f547 )
  • Rename ColorLambda to ColorProducer . ( I73b1a )
  • Introduce APIs to convert between Android and Compose colorspace types. ( Ie7db4 , b/279979665 )
  • Added a color parameter to BasicText to allow efficiently animating or setting text color. ( Iffd88 , b/246961787 )
  • Renamed TextRange.constrain to TextRange.coerceIn . ( I31be2 )
  • āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϤāĻžāϞāĻŋāĻ•āĻž āϏāĻš āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻž TextStyle.merge(...) āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iad234 , b/246961787 )
  • Stabilized many Text APIs that include Brush , DrawStyle , TextMotion , DrawScope.drawText , Paragraph.paint(Brush) , MultiParagraph.paint(Brush) . ( I2f740 , b/261581564 , b/261581931 , b/261561245 )
  • PlatformTextStyle.includeFontPadding is undeprecated. Our original intent was to remove the field, however the feedback shows that developers need this configuration option. Therefore removing deprecation from the field ( I98e96 , b/277703184 )
  • Added public TextRange.constrain method. ( I97912 )
  • AnnotatedString āĻ UrlAnnotation s āĻāĻ–āύ TalkBack āĻŽāϤ⧋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ–ā§‹āϞāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( if4d82 , b/253292081 )
  • Added the InsertTextAtCursor semantics action for text fields. ( I11ed5 )
  • LineHeightStyle.Alignment(topRatio) constructor is promoted to stable API. ( I79c32 , b/261565383 )
  • TextMeasurer and related APIs are no longer experimental. ( I74647 , b/261581753 )
  • Added the PerformImeAction semantics action to invoke the IME action on text editor nodes. ( Ic606f , b/269633506 )
  • PlatformTextInput APIs are no longer experimental for Android. ( I668eb )
  • value parameter name for Enum.valueOf changed ( Ia9b89 )
  • more thrown exceptions from enum valueOf ( I818fe )
  • Introduced new low-level PlatformTextInputAdapter API for building custom text input implementations that talk directly to platform APIs. ( I58df4 )
  • Added BlendMode parameter to DrawScope.drawText , Paragraph.paint , and MultiParagraph.paint methods to support different blending algorithms when drawing text on Canvas. ( I57508 )
  • Rename Font.MaximumAsyncTimeout to Font.MaximumAsyncTimeoutMillis . Rename only. ( I07af5 )
  • Updated DPI values of @Preview reference devices ( Id6151 , b/254528382 )
  • Add brush , alpha parameters to BasicText to allow efficiently animating or setting text brush.
  • Define box-free lambda types for Float, Double, Long, Int, Short in :ui:ui-unit ( I6f18d , b/246961787 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Removed multiple allocations in pointer velocity tracking ( I26bae )
  • Reduced allocations in layout and pointer input management ( I5333a )
  • Optimize Vector memory usage and first-frames rendering ( I2f3c6 )
  • Removed allocations when drawing lines and points with Canvas ( I9f535 )
  • Add docs for AndroidFont.fontVariationSettings ( I7d9e2 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • Improved performance and reduce allocations in Vector APIs ( I906cb )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-āφāϞāĻĢāĻž 04

10 āĻŽā§‡, 2023

androidx.compose.ui:ui-*:1.5.0-alpha04 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-ALPHA04 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • Modifier.Node Delegation Improvements Added an enhanced ability to delegate to other Modifier.Node instances from a DelegatingNode . This can be done with the delegate and undelegate APIs. Prior to this change, every API from the delegating node needed to be delegated explicitly to the delegated node. After this change, node interfaces will get delegated implicitly unless the DelegatingNode is explicitly overriding them. ( 67352bc )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Introduce NestedScrollModifierNode , a NestedScroll Modifier.Node that can be delegated to. ( I69513 )
  • Added onReset and onRelease parameters to the AndroidViewBinding composable, mirroring the AndroidView composable and enabling support for View reuse with ViewBinding . ( I00b1e , b/276802519 )
  • Updated Compose Path API to support rewind operations to support usecases of frequent Path manipulation with faster re-use. ( I7b797 )
  • āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϤāĻžāϞāĻŋāĻ•āĻž āϏāĻš āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻž TextStyle.merge(...) āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iad234 , b/246961787 )
  • Stabilized many Text APIs that include Brush , DrawStyle , TextMotion , DrawScope.drawText , Paragraph.paint(Brush) , MultiParagraph.paint(Brush) . ( I2f740 , b/261581564 , b/261581931 , b/261561245 )
  • PlatformTextStyle.includeFontPadding is undeprecated. Our original intent was to remove the field, however the feedback shows that developers need this configuration option. Therefore removing deprecation from the field ( I98e96 , b/277703184 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed regression where keyboard wasn't showing for text fields inside dialogs not created by the Dialog composable. ( I82551 , b/262140644 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-āφāϞāĻĢāĻž 03

āĻāĻĒā§āϰāĻŋāϞ 19, 2023

androidx.compose.ui:ui-*:1.5.0-alpha03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-alpha03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • New default behavior for SubcomposeLayout in LookaheadScope : SubcomposeLayouts that don't have conditional slots (eg TabRow , Scaffold , BoxWithConstraints , etc) now work nicely with lookahead animations.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • New default intermediateMeasurePolicy that reuses measure policy from lookahead pass allows SubcomposeLayout subtypes without conditional slots such as Scaffold , TabRow , and BoxWithConstraints to work with lookahead by default. ( Id84c8 )
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āωāχāĻ¨ā§āĻĄā§‹āϟāĻŋāϰ āϜāĻ¨ā§āϝ āϤ⧈āϰāĻŋ āĻšāĻ“āϝāĻŧāĻž āϰāĻŋāĻ•āĻŽā§āĻĒā§‹āϜāĻžāϰāϟāĻŋ āĻāĻ–āύ āϕ⧇āĻŦāϞāĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ ON_STOP āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āϏāĻŽāĻ¸ā§āϤ āϰāϚāύāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϕ⧇āĻŦāϞ āĻ•āϞ withFrameNanos āĻŦā§āϞāĻ• āĻ•āϰāĻŦ⧇āĨ¤ āĻāϰ āĻ…āĻ°ā§āĻĨ āĻ¸ā§āϟāĻĒāĻĄ āĻ…ā§āϝāĻžāĻ•ā§āϟāĻŋāĻ­āĻžāχāϟāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āωāχāĻ¨ā§āĻĄā§‹āϜāϗ⧁āϞāĻŋ āĻĄā§‡āϟāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϜāĻ¨ā§āϝ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏāĻ‚āϝ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻĨāĻžāĻ•āĻŦ⧇ āϤāĻŦ⧇ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϗ⧁āϞāĻŋ, āĻŦāĻž withFrameNanos āĻ…āĻ¨ā§āϝ āϕ⧋āύāĻ“ āĻ•āϞāĻžāϰ āĻŦā§āϞāĻ• āĻ•āϰāĻŦ⧇āĨ¤ ( ID9E7F , āĻ–/240975572 )
  • Changes motionEventSpy to stable. ( Ic5ec4 , b/261560988 )
  • Added public TextRange.constrain method. ( I97912 )
  • PlatformTextStyle.includeFontPadding is no longer deprecated to encourage developers to use this compatibility API to switch and test setting includeFontPadding false. ( I98e96 , b/277703184 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-āφāϞāĻĢāĻž 02

5 āĻāĻĒā§āϰāĻŋāϞ, 2023

androidx.compose.ui:ui-*:1.5.0-alpha02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • New SubcomposeLayout API that takes an additional intermediate measure policy for handling measure/layout logic during lookahead-based animations. ( I017d3 )
  • PointerInput is now lazy and uses Modifier.Node for better performance ( read about the minor behavior change ). ( 15dab9 )
  • Changes experimental APIs to stable with Key events. ( I9c7d8 , b/261566839 , b/261567368 )
  • Changes experimental APIs to stable in PointerInputChange . ( I1b543 , b/261560988 , b/261565762 , b/261565749 )
  • Adds a way to instantiate a SuspendingPointerInputModifierNode for more complex Modifier.Node implementations. ( Ic4933 )
  • AnnotatedString āĻ UrlAnnotation s āĻāĻ–āύ TalkBack āĻŽāϤ⧋ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ–ā§‹āϞāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( if4d82 , b/253292081 )
  • Added an API to intercept hardware keys before they are sent to the soft keyboard ( I4f4c6 , b/186800395 )
  • Added the InsertTextAtCursor semantics action for text fields. ( I11ed5 )
  • Text-related test actions (eg performTextInput ) will now request focus directly, using the semantics action, instead of clicking on the field. ( I6ed05 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Text test actions now require text fields to be enabled. ( Iab328 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-āφāϞāĻĢāĻž 01

22 āĻŽāĻžāĻ°ā§āϚ, 2023

androidx.compose.ui:ui-*:1.5.0-alpha01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.5.0-alpha01 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Modifier.intermediateLayout now doesn't require an explicit LookaheadScope. The measure block in intermediateLayout has IntermediateMeasureScope as receiver, which provides convenient CoroutineScope, LookaheadScope and MeasureScope.( Ibe2e5 )
  • LookaheadLayout has been replaced by LookaheadScope, which is no longer a Layout. This allows chid content in a LookaheadScope to be directly controlled by parent's MeasurePolicy. ( Ibe2e5 )
  • Adds Modifier.Node#coroutineScope to allow Modifier.Nodes to launch coroutines. ( I76ef9 )
  • Compositionloconsumermodifiernode āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰ⧇ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ.āύ⧋āĻĄāϗ⧁āϞāĻŋ āĻ•āĻŽāĻĒā§‹āϜāĻŋāĻļāύāϞ⧋āĻ•āĻžāϞāϗ⧁āϞāĻŋ āĻĒāĻĄāĻŧāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻāĻŋāύāĨ¤ ( Ib44df )
  • Propagation of @Deprecated class to property. ( I882d1 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.3

3 āĻŽā§‡, 2023

androidx.compose.ui:ui-*:1.4.3 is released. Version 1.4.3 contains these commits.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed an issue where AndroidView may not be laid out correctly when used with certain Modifiers. ( I4dc77 , b/274797771 )
  • Fixed a bug in 2D Focus Search that affected DropDown Menus ( b/276811828 )
  • Fixed a bug in custom focus enter/exit properties that only ran the enter/exit block the first time the lambda was invoked ( b/277234245 )
  • Fixed a regression in the focus system that caused a crash while reading focusProperties . ( b/271324781 , b/274897776 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.2

āĻāĻĒā§āϰāĻŋāϞ 19, 2023

androidx.compose.ui:ui-*:1.4.2 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.2 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed an issue where AndroidView would not reuse its modifiers correctly, potentially resulting in unexpected behavior and crashes. ( Ib67ee , b/275919849 )
  • Fixed regression where keyboard wasn't showing for text fields inside dialogs not created by the Dialog composable ( I82551 , b/262140644 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.1

5 āĻāĻĒā§āϰāĻŋāϞ, 2023

androidx.compose.ui:ui-*:1.4.1 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.1 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixes an issue with ParentDataModifier not affecting AndroidView ( b/274797771 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0

22 āĻŽāĻžāĻ°ā§āϚ, 2023

androidx.compose.ui:ui-*:1.4.0 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

1.3.0 āϏāĻžāϞ āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added a new PinnableContainer API that allows lazy list items to be pinned, so that they are not disposed when they are scrolled out of bounds. For example, Modifier.focusable() uses this mechanism to pin the currently focused item. ( Ib8881 , b/259274257 , b/195049010 )
  • The focus system is rewritten using the new experimental Modifier.Node APIs. ( I7f4d7 , b/247708726 , b/255352203 , b/253043481 , b/247716483 , b/254529934 , b/251840112 , b/251859987 , b/257141589 )
  • Added in IsContainer semantics property on Surfaces. This property will be used in a later change that determines traversal order based on the semantic meaning of elements such as surfaces. ( I63379 )
  • Added a new accessibility role DropdownList . This can be used to replicate TalkBack 's behavior when focusing android.widget.Spinner . ( I177e5 , b/236159001 )
  • You can now use PlatformTextStyle(emojiSupportMatch) to optionally disable emoji support processing for a single Paragraph. ( Ia7100 , b/139326806 )
  • Android Compose UI tests will now run layout passes for each frame when executing frames to get to idle (eg via waitForIdle ). This may affect tests that assert on individual frames of layout animations. ( I8ea08 , b/222093277 )
  • āĻŸā§‡āĻ•ā§āϏāϟāϕ⧇ Static(default) āĻŦāĻž āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻŸā§‡āĻĄ āĻšāϤ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇ TextStyle āĻ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• TextMotion āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Use TextMotion.Animated if Text is going to be scaled, translated, or rotated via animation. ( I24dd7 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-rc01

March 8, 2023

androidx.compose.ui:ui-*:1.4.0-rc01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-rc01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added an overload of AndroidView composable function, which accepts the onReset param. It allows View instances to be reused when their node in the composition is discarded and reused in a compatible way. This is especially useful for LazyRows and LazyColumns of Views. ( I3f10d , b/230099236 )
  • Introduced new low-level PlatformTextInputAdapter API for building custom text input implementations that talk directly to platform APIs. ( I58df4 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • BasicTextField āĻāϰ SetText āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻ…ā§āϝāĻžāĻ•āĻļāύ āĻāĻ–āύ IME āφāĻĒāĻĄā§‡āϟ āĻāĻŦāĻ‚ āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϰ āĻŽāϤ⧋ āĻāĻ•āχ āϕ⧋āĻĄ āĻĒāĻžāĻĨ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĒāĻžāĻ ā§āϝ āĻŦāĻžāĻĢāĻžāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻŦ⧇ (āϝ⧇āĻŽāύ performTextReplacement )āĨ¤
  • Text testing functions performTextClearance , performTextReplacement , and performTextSelection now use SemanticsActions . ( I0807d , b/269633168 , b/269624358 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-BETA02

22 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2023

androidx.compose.ui:ui-*:1.4.0-beta02 is released. 1.4.0-beta02 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Removed the modifierElementOf() API. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏāϰāĻžāϏāϰāĻŋ ModifierNodeElement āĻĨ⧇āϕ⧇ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰ⧁āύāĨ¤ ( I2256b )
  • āĻāĻ•āϟāĻŋ āύāϤ⧁āύ Modifier.Node.onReset() āĻ•āϞāĻŦā§āϝāĻžāĻ• āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻ–āύ Layout āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇ (āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ LazyColumn āĻāϰ āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻšāĻŋāϏāĻžāĻŦ⧇) āϕ⧇āϏāϟāĻŋ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāύāĻžāϕ⧇ āĻ•āĻŋāϛ⧁ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĒ⧁āύāϰāĻžāϝāĻŧ āϏ⧇āϟ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ āĻĢā§‹āĻ•āĻžāϏāĻĄ āĻ¸ā§āĻŸā§‡āϟāϕ⧇ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϰāĻŋāϏ⧇āϟ āĻ•āϰāϤ⧇ āĻ¸ā§āĻĨāĻŋāϰ FocusTargetModifierNode āĨ¤ ( I65495 , b/265201972 )
  • Added BlendMode parameter to DrawScope.drawText , Paragraph.paint , and MultiParagraph.paint methods to support different blending algorithms when drawing text on Canvas. ( I57508 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Accessibility focus order algorithm improved, for example top/bottom bars are more often read first/last respectively ( 74e9c5 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-beta01

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰ⧀ 8, 2023

androidx.compose.ui:ui-*:1.4.0-beta01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • PinnableContainer.PinnedHandle.unpin() was renamed to release() ( I4667a )
  • Added waitUntilNodeCount , waitUntilAtLeastOneExists , waitUntilExactlyOneExists and waitUntilDoesNotExist as experimental API to ComposeTestRule , extending the waitUntil API to accept any matcher and any count of nodes. See ComposeTestRule for further documentation. ( Ifa1b9 , b/226934294 )
  • Rename Font.MaximumAsyncTimeout to Font.MaximumAsyncTimeoutMillis . ( I07af5 )
  • Removed GoogleFont.Provider.AllFontsListUri and linked to it in ktdoc instead. ( I16f29 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Add docs for AndroidFont.fontVariationSettings ( I7d9e2 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-āφāϞāĻĢāĻž 05

25 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2023

androidx.compose.ui:ui-*:1.4.0-alpha05 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-alpha05 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • runComposeUiTest āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ CoroutineContext āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āĻāĻŽāύ create*ComposeRule āĨ¤ The context will be used for the test composition and any LaunchedEffect and rememberCoroutineScope() calls in the composition. ( I10614 , b/265177763 )
  • Add a new API to track 1 dimensional velocity ( If5a82 )
  • FocusRequester is now marked as @Stable . ( I580ee )
  • Remove an experimental annotation from the DialogProperties constructor that takes a usePlatformDefaultWidth parameter. ( Ic4048 )
  • Added function to calculation position and tangent at a distance on a path - with PathMeasure.getPosition() and PathMeasure.getTangent() ( I3b47c )
  • Removed accidentally exposed public setter on PlatformParagraphStyle . ( I07f47 )
  • āχāύāϞāĻžāχāύ/āĻ…āĻĒā§āϰāϚāϞāĻŋāϤ-āϞ⧁āĻ•āĻžāύ⧋ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋāϰ āφāϰāĻ“ āĻĒā§āϰāĻ•āĻžāϰ/ āĻŦāĻžāϤāĻŋāϞāϝ⧋āĻ—ā§āϝāϤāĻž ( I24f91 )
  • Add AnnotatedString.hasStringAnnotations to query for annotations with zero-allocations. ( I94dfe , b/246960758 )
  • Added a new overload for TextMeasurer.measure function which takes in a String as text. ( I47b2d , b/242705342 )
  • LineBreak and Hyphens APIs in TextStyle are graduated to stable. ( Ic1e1d )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • notifyFocusedRect methods in TextInputSession and TextInputService are not deprecated again. ( I23a04 , b/262648050 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-āφāϞāĻĢāĻž 04

11 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2023

androidx.compose.ui:ui-*:1.4.0-alpha04 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-ALPHA04 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • Added a new PinnableContainer API that allows lazy list items to be pinned, so that they are not disposed when they are scrolled out of bounds. For example, Modifier.focusable() uses this mechanism to pin the currently focused item. ( Ib8881 , b/259274257 , b/195049010 )
  • The focus system is rewritten using the new experimental Modifier.Node APIs. ( I7f4d7 , b/247708726 , b/255352203 , b/253043481 , b/247716483 , b/254529934 , b/251840112 , b/251859987 , b/257141589 )
  • Added in IsContainer semantics property on Surfaces. This property will be used in a later change that determines traversal order based on the semantic meaning of elements such as surfaces. ( I63379 )
  • Added new accessibility role DropdownList . This can be used to replicate TalkBack's behavior when focusing android.widget.Spinner . ( I177e5 , b/236159001 )
  • You can now use PlatformTextStyle(emojiSupportMatch) to optionally disable emoji support processing for a single Paragraph. ( Ia7100 , b/139326806 )
  • Android Compose UI tests will now run layout passes for each frame when executing frames to get to idle (eg via waitForIdle ). This may affect tests that assert on individual frames of layout animations. ( I8ea08 , b/222093277 )
  • āĻŸā§‡āĻ•ā§āϏāϟāϕ⧇ Static(default) āĻŦāĻž āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻŸā§‡āĻĄ āĻšāϤ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇ TextStyle āĻ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• TextMotion āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Use TextMotion.Animated if Text is going to be scaled, translated, or rotated via animation. ( I24dd7 )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Replaced maxSize: IntSize argument in drawText with size: Size to be inline with other DrawScope functions. size is set to Size.Unspecified by default which should not change the previous default behavior. ( Icd27d )
  • Removed deprecated experimental font constructor. ( I8a724 , b/261435386 )
  • The ui tooling data class Group now has a field, isInline , that indicates if the group is for a call to an inline composable function. If isInline is true then the call is to an inline composable function. However, the value might be false for calls to inline composable functions that are from modules that are compiled with a version of the compose compiler plugin that doesn't generate the inline function information. ( Idb846 )
  • Graduated a number of previously experimental APIs to stable
  • Rotary Scroll Event API is now stable ( I42ad3 , b/261561229 )
  • FontVariation API is now stable ( I8779f , b/241016309 )
  • All Font() constructors are now stable API ( I5948b , b/261435386 )
  • DeviceFontFamilyName is now stable ( I8b640 , b/261435386 )
  • variationSettings āϏāĻš AndroidFont āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ API, āĻāĻŦāĻ‚ āύāϤ⧁āύ āϧāϰāύ⧇āϰ āĻĢāĻ¨ā§āϟ āĻŦāĻ°ā§āĻŖāύāĻžāĻ•āĻžāϰ⧀ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I5adcc , b/261565807 )
  • createFontFamilyResolver API is now stable. This can be used to catch uncaught exceptions during async font loading. ( Ibb481 , b/261435386 )
  • Font.loadingStrategy API is now stable. ( I5937c , b/261435386 )
  • GoogleFont API is now stable. ( Ic90b0 , b/261435386 )
  • TextUnit(float, TextUnitType) is now stable API. ( I90c84 , b/261561612 )
  • pluralStringResource is now stable API. ( I09849 , b/261439703 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-āφāϞāĻĢāĻž 03

āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ 7, 2022

androidx.compose.ui:ui-*:1.4.0-alpha03 is released. 1.4.0-alpha03 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Removing ExperimentalComposeUiApi from PointerIcon ( I23af8 )
  • āĻĒ⧇āϜ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻ…ā§āϝāĻžāĻ•āĻļāύ āϚāĻžāϞ⧁ āĻ•āϰ⧁āύ: PageUp , PageDown , PageLeft , PageRight āĨ¤ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āϝ⧇ āĻāϗ⧁āϞāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ API 29 āĻĨ⧇āϕ⧇ āωāĻĒāϞāĻŦā§āϧāĨ¤ ( Ida4ab )
  • Updated rememberNestedScrollConnection parameter view from root view to host view. ( Ia5200 )
  • āĻĒā§‚āĻ°ā§āĻŦāĻĒ⧁āϰ⧁āώāĻĻ⧇āϰ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āϤāĻĨā§āϝ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻļā§‹āϧāĻ• API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I2ba9d , b/203141462 )
  • Used in Clickable to correctly delay press interactions, when gestures could become scroll events.
  • Scrollable ViewGroup āĻ­āĻŋāϤāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϞ⧇ āĻ¸ā§āĻĨāĻŋāϰ Clickables āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϞāĻšāϰāϕ⧇ āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻ•āϰ⧇ āύāĻžāĨ¤
  • āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻĒā§āϰ⧇āϏ āĻŦāĻŋāϞāĻŽā§āĻŦāĻŋāϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄā§āϰāϝāĻŧāĻžāϰ āĻāĻŦāĻ‚ āĻļā§€āϟ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻĻāĻŋ āĻ…āĻ™ā§āĻ—āĻ­āĻ™ā§āĻ—āĻŋāϗ⧁āϞāĻŋ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āχāϭ⧇āĻ¨ā§āĻŸā§‡ āĻĒāϰāĻŋāĻŖāϤ āĻšāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤
  • Renamed CompositingStrategy.Always to Offscreen to indicate that the graphicsLayer will always be rendered into an intermediate buffer ( I47dc1 )
  • Layout overload with multiple content slots is now stable ( I10566 , b/248294649 )
  • Added experimental new APIs PerfettoTrace.record {} and PerfettoTraceRule to capture Perfetto traces (also known as System Traces) as part of a test, to inspect test behavior and performance. ( I3ba16 )
  • In UI tests using a Compose rule, continuations resumed during withFrameNanos callbacks will not be dispatched until after all frame callbacks have finished running. This matches the behavior of compose when running normally. However, tests that rely on the old behavior may fail. This should only affect code that calls withFrameNanos or withFrameMillis directly, and has logic outside of callback passed to those functions that may need to be moved inside the callbacks. See the animation test changes in this CL for examples.
  • onPerformTraversals: (Long) -> Unit TestMonotonicFrameClock āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻāĻŦāĻ‚ āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ⧇ āχāωāύāĻŋāϟ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ withFrameNanos āĻ•āϞāĻŦā§āϝāĻžāϕ⧇āϰ āĻĒāϰ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ•āϞāĻžāϰāĻĻ⧇āϰ āϕ⧋āϰ⧋āϟāĻŋāύ āĻĒ⧁āύāϰāĻžāϝāĻŧ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āφāϗ⧇ āϕ⧋āĻĄ āϚāĻžāϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝāĨ¤ ( Idb413 , b/254115946 , b/222093277 , b/255802670 )
  • Added EmojiCompat to Compose ( Ibf6f9 , b/139326806 )
  • Added new wallpaper parameter to @Preview for dynamic colour support ( I9f512 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ āĻĒā§āϰāϝāĻŧā§‹āϗ⧇āϰ āĻŦāĻŋāĻœā§āĻžāĻĒā§āϤāĻŋāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻĒā§āϰāϝāĻŧā§‹āϗ⧇āϰ Recomposer āĻĒāϰ⧇ āĻĒā§āϰ⧇āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ( āφāχāĻāĻĄāĻŋ 6 āϏāĻŋ 0 , āĻŦāĻŋ/222093277 )
  • Introduced changes in captureToImage to allow for capturing multi window screenshots. This is useful for screenshot tests that use compose PopUps. ( I169c5 )

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāĻĒāĻĄā§‡āϟ

  • Compose UI and Compose Material now depend on Lifecycle 2.5.1. ( I05ab0 , b/258038814 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-alpha02

9 āύāϭ⧇āĻŽā§āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.4.0-alpha02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-ALPHA02 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Updated GraphicsLayerScope to expose the current size of the graphicsLayer . This is useful for computing graphicsLayer transformations as a function of the Composable size. ( If8c43 , b/181387080 )
  • Introduced CompositingStrategy to determine when to leverage an offscreen compositing layer for rendering of graphicsLayer content. Auto maintains the default behavior which internally leverages a layer if alpha is applied or a RenderEffect/Overscroll . Always will always introduce an offscreen buffer where ModulateAlpha will avoid leveraging an offscreen buffer and instead will modulate each of the recorded drawing instructions within the graphicsLayer . ModulateAlpha usage will still leverage an offscreen buffer for RenderEffect/Overscroll usages ( I25e82 , b/256382834 )
  • invalidateSubtree() was added to Modifier.Node to allow invalidating entire hierarchies for layout and drawing. ( I4bd90 )
  • Promote rememberNestedScrollInteropConnection to stable. Introduced the ability to pass a root view to rememberNestedScrollInteropConnection . This can help the custom view better react to scrolling constraints, specially in non-standard views (eg ModalBottomSheetDialog ). ( I9e107 )
  • Added ObserverNode interface that can be used by Modifier.Node implementations that need to be notified when a value that they had previously read has changed ( I5728b , b/247716483 )
  • Added a new constructor to Paint that accepts a native android.graphics.Paint . Also added an extension function toComposePaint() that converts an existing native Paint object to Compose Paint. ( Ica91b )
  • Add new FontFamily.Resolver.resolveAsTypeface for use on Android. ( I8950b )
  • Add ToolingState to allow tooling to change internal states of Composable ( Ie6614 )
  • Refactor tooling to have better support for new added animations ( I8677b )
  • Added minLines parameter into material and material3 Text, TextField and OutlinedTextField which allows setting the minimum height of the component in terms of number of lines ( I4af1d )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.4.0-alpha01

24 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.4.0-alpha01 is released. 1.4.0-alpha01 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • A new method, awaitEachGesture() , for gesture detectors was added. It operates similar to forEachGesture() , but the loop over gestures operates entirely within the AwaitPointerEventScope so events can't be lost between iterations.
  • forEachGesture() awaitEachGesture() āĻāϰ āĻĒāĻ•ā§āώ⧇ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϕ⧇ āĻ…āĻ™ā§āĻ—āĻ­āĻ™ā§āĻ—āĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻšāĻžāϰāĻŋāϝāĻŧ⧇ āϝ⧇āϤ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( IFfc3f , b/251260206 )
  • Deprecating recycling of acccessibility objects in androidx. We've found performance changes to be negligible in even the oldest supported versions. ( I0a961 )
  • Added DrawStyle as an Experimental attribute to TextStyle and SpanStyle to enable drawing outlined text. ( If24b8 , b/155421273 )
  • AnnotatedString.Builder now implements kotlin.text.Appendable . ( I1a061 , b/231030444 )
  • AnnotatedString.Builder now has an append(AnnotatedString, start: Int, end: Int) method to append a substring of an AnnotatedString and the intersecting styles.
  • Added DrawStyle parameter to Paragraph and MultiParagraph paint functions that enables drawing outlined text. ( Ic8102 , b/155421273 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • Thanks for vighnesh for adding TV Devices to Previews ( Ie15cd )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.3

11 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2023

androidx.compose.ui:ui-*:1.3.3 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.3 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fix for a crash sometimes happening on Android 9 when Activity is saving the state of the Compose View. ( I0b755 , b/260322832 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.2

āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ 7, 2022

androidx.compose.ui:ui-*:1.3.2 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.2 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Updated to use Profobuf 3.21.8, which avoids a security alert in protobuf-javalite:3.19.4 (CVE-2022-3171) ( b/255545055 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.1

9 āύāϭ⧇āĻŽā§āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.3.1 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.1 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0

24 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.3.0 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

1.2.0 āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • New experimental API suite LookaheadLayout (enabling previously impossible animation behaviors)
  • New experimental API suite Modifier.Node (higher-performance alternative to Modifier.composed )
  • Improved window insets support.
  • Focus support for D-Pads and hardware keyboard in LazyLists.
  • Maximum supported elevation in dialogs and popups has been reduced to 8dp (behavior breaking change for some customized design systems – rationale in beta01 release notes )
  • Many minor, nonbreaking API improvements
  • Many bugfixes and performance improvements

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-āφāϰāϏāĻŋ 01

5 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.3.0-rc01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-rc01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added new experimental API Hyphens to support automatic hyphenation in Text ( Iaa869 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • DeviceFontFamilyName fonts will not configure wght and ital variation settings by default, instead using platform setting for loaded Typeface . ( Ia7a6d , b/246989332 )
  • Fixed LazyColumn memory leak - onModifierLocalsUpdated was not being called with the default value when modifiers were reused ( b/230168389 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-BETA03

21 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.3.0-beta03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-BETA03 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Add options to customize line breaking in Text. ( I86907 )
  • Changed size:IntSize argument with constraints: Constraints in TextMeasurer.measure method to support minimum width constraints. ( I37530 , b/242707525 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • AndroidX Activity's BackHandler API now works within a Dialog composable. ( I35342 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-beta02

7 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2022

androidx.compose.ui:ui-*:1.3.0-beta02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-beta02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added an experimental overload for Layout which accepts a list of multiple composable content lambdas, which allows to threat measurables put into different content lambdas differently ( Ic1b4e )

Changes to experimental Focus APIs:

  • FocusDirection.In and FocusDirection.Out are deprecated and replaced by FocusDirection.Enter and FocusDirection.Exit . ( Ia4262 , b/183746982 )
  • Added two new focus properties enter and exit to specify a custom behavior for FocusManager.moveFocus(Enter) and FocusManager.moveFocus(Exit) . ( I5f3f9 , b/183746982 )
  • You can now use FocusRequester.Cancel to cancel a focus move. FocusRequester.Cancel can be used in any of the following focus properties: up, down, left, right, next, previous, start, end, enter and exit. ( Ib300f )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-beta01

24 āφāĻ—āĻ¸ā§āϟ, 2022

androidx.compose.ui:ui-*:1.3.0-beta01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

Modifier Node Refactor

The layer which handles Modifier/Modifier.Element instances and coordinates their behavior on LayoutNodes has been majorly refactored. As it stands this was a refactor which did not affect the public API of any of the many modifiers in Compose, and can be viewed as an implementation-only change. Despite that, this is an important change for various reasons. ( Ie4313 )

āϏāĻžāϰāĻžāĻ‚āĻļ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧁āύ

The added experimental Modifier.Node APIs provide an abstraction that allows for state to be maintained on an instance that will be retained with the lifecycle of the layout node, and will be allocated per-layout-node and per-usage of the corresponding Modifier.Element that produced it.

Broadly speaking, this abstraction provides an alternative mechanism to produce stateful modifiers without relying on the mechanics of the Modifier.composed API.

āĻā§āρāĻ•āĻŋ

This change is strictly binary compatible with prior releases, and is intended to be backwards compatible in terms of observable behavior as much as practical and reasonable. That said, there are few subsystems of compose this refactor did not touch, and it is likely that behavior has changed in ways that were not covered by our tests and have not yet been found and fixed .

Please upgrade to this release with caution. If you believe this has broken something for you, please let us know.

āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• API

Various experimental APIs have been added, all relating to the new concept of a "Modifier Node". Modifier.Node's are created as a result of

  • fun modifierElementOf(â€Ļ): Modifier
  • abstract class ModifierNodeElement
  • abstract class Modifier.Node
  • abstract class DelegatingNode
  • interface LayoutModifierNode
  • interface DrawModifierNode
  • interface SemanticsNode
  • interface PointerInputNode
  • interface ModifierLocalNode
  • interface ParentDataModifierNode
  • interface LayoutAwareModifierNode
  • interface GlobalPositionAwareModifierNode
  • interface IntermediateLayoutModifierNode

Behavior breaking change

Maximum supported elevation in dialogs and popups has been reduced to 8dp.

The maximum supported elevation for Compose dialogs and popups has been reduced from 30dp to 8dp. This change affects both material and ui custom dialogs and popups. This change is made to mitigate an accessibility bug on Android versions below S, and to ensure that accessibility services within those windows are able to interact with the content inside the dialog or popup.

You will only be impacted by this change if you are creating a custom dialog or popup implementation with an elevation set to levels higher than 8dp. Consider lowering the elevation of your dialog or popup. If you need to opt-out from this new behavior, consider forking your own dialog or popup with the desired elevation set. This is not recommended, as accessibility might be negatively impacted and it is on the developer to ensure the bottom part of the dialog or popup is interactable and readable by accessibility services.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Fixed an issue where painterResource wouldn't update on configuration changes ( I58e73 , b/228862715 )
  • rememberTextMeasurer no longer takes FontFamily.Resolver , Density , or LayoutDirection parameters. Please use the TextMeasurer constructor to provide custom values for these parameters. ( Ia1da3 )
  • Added DialogProperties.decorFitsSystemWindows property to allow Dialogs to support WindowInsets . ( I57742 , b/229378542 )
  • Moved font constructors back to original kotlin file to retain binary compatibility. No change from last stable release. ( Ieb2f3 )
  • Removed unnecessary operator from several equals definitions - this has no effect. ( I6c309 )
  • FontVariation.Setting is a sealed interface, to allow future clamping APIs. ( I11021 , b/143703328 )
  • Add CompositionGroup.findParameters to SlotTree.kt . This allows tools to retrieve parameters for a CompositionGroup without having to parse the entire slot table. ( I124fe )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-alpha03

āφāĻ—āĻ¸ā§āϟ 10, 2022

androidx.compose.ui:ui-*:1.3.0-alpha03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-alpha03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • LayoutCoordinates.findRootCoordinates() is now public ( I7fa37 , b/204723384 )
  • Added experimental API to get the LayoutCoordinates in the PlacementScope . This lets developers know where the current layout is to place children relative to its position. ( I5482b , b/238632578 )
  • Added LayoutCoordinates.transformFrom to get the Matrix transformation from one LayoutCoordinates to another. ( Ic5ab1 , b/238632578 )
  • Deprecated SemanticsModifier.id āĻāĻŦāĻ‚ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Semantics idāϟāĻŋāϕ⧇ LayoutInfo.semanticsId āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iac808 , b/203559524 )
  • Resource Fonts now support setting font variation settings (API 26+). ( I900dd , b/143703328 )
  • DeviceFontFamilyNameFont āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻļā§€āϞ āĻĢāĻ¨ā§āϟ āϏāĻŽāĻ°ā§āĻĨāύ ( Ic1279 , b/143703328 )
  • Font constructors now accept a list of FontVariation.Setting for configuring variable fonts on O+ devices. ( I11a9d , b/143703328 )
  • Add FontVariation API for defining and using variable fonts. ( I3c40c , b/143703328 )
  • LineHeightStyle.Alignment constructor is now public (experimental) ( I4bbbe , b/235876330 )
  • Paragraph is now expect|actual and defined for Android and Desktop. ( Id387e , b/239962983 )
  • Interface Paragraph is now sealed interface Paragarph. There is no use case for subclassing paragraph, and we recommend reaching out if this change impacts you. ( If5247 , b/239962983 )
  • PlatformTextStyle āĻāĻŦāĻ‚ LineHeightStyle āĻĨ⧇āϕ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻŸā§€āĻ•āĻž āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I64bef )
  • Deprecate TextInputService.show|hideSoftwareKeyboard . āĻ…āύ⧁āĻ—ā§āϰāĻš āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻĒ āϕ⧋āĻĄā§‡āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ SoftwareKeyboardController āĻāĻŦāĻ‚ IME-āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ āϕ⧋āĻĄā§‡ TextInputSession āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I14e4c , b/183448615 )
  • Add new API for existing animation types ( I26179 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added @RequiresPermission to APIs that require granting the POST_NOTIFICATIONS permission on SDK 33 and above. ( Ie542e , b/238790278 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-alpha02

āϜ⧁āϞāĻžāχ 27, 2022

androidx.compose.ui:ui-*:1.3.0-alpha02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added a new property PointerInputChange#pressure to retrieve the pressure. ( I45a5e , b/205164819 )
  • Added rememberTextMeasurer to easily create and remember TextMeasurer instances in composition. ( I8d66e )
  • Rect , RoundRect , and MutableRect now support the Kotlin in syntax for calling the contains function. ( Ie42b0 , b/238642990 )
  • Remove unnecessary functions from KeyInjectionScope , as they can be easily implemented with simpler parts of the API. The functions that have been removed include pressKeys , keysDown and keysUp . ( I81d77 )
  • Refactored constant and parameter names in KeyInjectionScope to include the suffix 'Millis' where the units of said constants and parameters are milliseconds. ( Iabef5 )
  • Added toStringForLog() method to EditCommand to help troubleshoot text editing issues. ( I53354 , b/228862731 )
  • DrawScope āĻ drawText āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ Canvas āĻāĻŦāĻ‚ drawBehind āĻŽāϤ⧋ DrawScope āĻ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻāĻŽāύ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āĻāĻŦāĻ‚ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇ āĻŽāĻžāĻ˛ā§āϟāĻŋ-āĻ¸ā§āϟāĻžāχāϞāϝ⧁āĻ•ā§āϤ āĻŸā§‡āĻ•ā§āϏāϟ āφāρāĻ•āĻžāϰ āωāĻĒāĻžāϝāĻŧ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I16a62 , b/190787898 )
  • Introduce a new experimental API called TextMeasurer that enables arbitrary text layout computation that creates identical results to BasicText , independent from Compose runtime. ( I17101 )
  • Add mapTree to SlotTree.kt . This allows tools to inspect the SlotTree without making an in memory copy first like asTree does. For the Layout Inspector this gives a performance improvement of about a factor 10. ( I5e113 )
  • Changed Compose Preview to be stored in binary output files, in order to allow developers to write and reuse MultiPreview annotations from libraries. ( I85699 , b/233511976 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • When adding InputEventChange events to Velocity Tracker we will consider now deltas instead of positions, this will guarantee the velocity is correctly calculated for all cases even if the target element moves ( Icea9d , b/216582726 , b/223440806 , b/227709803 )
  • Fix NPE caused by AnnotatedString.toUpperCase when annotations are present. ( I0aca2 , b/210899140 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-āφāϞāĻĢāĻž 01

āϜ⧁āύ 29, 2022

androidx.compose.ui:ui-*:1.3.0-alpha01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.3.0-alpha01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • New LookaheadLayout that supports a lookahead pass before the actual measure/layout. This allows a pre-calculation of the layout when it changes, while permitting the post-lookahead measure/layout to use the pre-calculated size/position to animate the size and positions towards the target. SubcomposeLayouts are not yet supported, but will be in an upcoming release. ( I477f5 )
  • Add optional alpha parameter to Brush flavor of TextStyle and SpanStyle to modify opacity of the whole Text . ( Ic2fac , b/234117635 )
  • Introduced the UrlAnnotation annotation type and associated methods to support TalkBack link support in AnnotatedString s. ( I1c754 , b/231495122 )
  • āϰāĻžāύāϟāĻžāχāĻŽā§‡ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āϏāϰāĻžāύ⧋ ( i4f729 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • Added a new API WindowInfo.keyboardModifiers to observe its state within composable functions or via snapshotFlow ( Icdb8a )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.1

āφāĻ—āĻ¸ā§āϟ 10, 2022

androidx.compose.ui:ui-*:1.2.1 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.1 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed nullpointer in the inspector ( b/237987764 )
  • Fixed class cast exception during remember in the inspector ( b/235526153 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0

āϜ⧁āϞāĻžāχ 27, 2022

androidx.compose.ui:ui-*:1.2.0 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

1.1.0 āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Improvements in focus traversal:

    • Focus-driven-scrolling of Lazy lists now works, using the new BeyondBoundsLayout core API
    • New behavior customization APIs in FocusOrder and FocusProperties
    • Improved behavior with physical keyboard or TV remote
  • New APIs for:

    • Window insets
    • Core primitives for gesture-driven, infinite and layout animations
    • GraphicsLayer capabilities, including RenderEffect
  • Many bugfixes and performance improvements

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-āφāϰāϏāĻŋ 03

āϜ⧁āύ 29, 2022

androidx.compose.ui:ui-*:1.2.0-rc03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-rc03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

  • No changes since 1.2.0-rc02.

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-rc02

22 āϜ⧁āύ, 2022

androidx.compose.ui:ui-*:1.2.0-rc02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-āφāϰāϏāĻŋ 02 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-rc01

15 āϜ⧁āύ, 2022

androidx.compose.ui:ui-*:1.2.0-rc01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-rc01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ•āĻŽā§āĻĒā§‹āϜ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāϗ⧁āϞāĻŋ āĻāĻ–āύ jdk8 āĻĄāĻŋāĻĢāĻ˛ā§āϟ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I5bcf1 )
  • Added higher-order functions to KeyInjectionScope for injecting key presses while other keys are held down or toggled on. These functions include withKeysDown , withKeysToggled etc. Also added properties for checking if a particular meta key is down, for example, isCtrlDown to check if either control key is depressed. Refer to KeyInjectionScope for documentation on each function. ( I9f6cd , b/229831515 )
  • An experimental OverscrollEffect has been introduced to allow for custom overscroll effects, alongside the Modifier.scrollable overloads that accept it.
  • Experimental LocalOverScrollConfiguration has been moved from foundation.gesture to foundation package and renamed to LocalOverscrollConfiguration ( If19fb , b/204650733 )
  • Rename runComposeUiTestWithoutActivity {} to runEmptyComposeUiTest {} , which aligns it with createEmptyComposeRule() ( I6fed7 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-beta03

āϜ⧁āύ 1, 2022

androidx.compose.ui:ui-*:1.2.0-beta03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-beta03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added pressKeyTimes as well as isCapsLockOn and friends to KeyInjectionScope . Additionally, the API now supports mouse and keyboard combined injection patterns such as clicking a mouse button with a meta key held down. ( I4c8da , b/229831515 )
  • Added experimental support for injecting key events. Use performKeyInput to send key events, or send them through the key property of MultiModalInjectionScope during a multi modal input gesture with performMultiModalInput . See KeyInjectionScope for documentation of the API. ( Ic5000 , b/229831515 )
  • Add new GoogleFont.Provider.AllFontsListUri for retrieving the canonical internet source of Google Fonts supported by Android.
  • Improve error messages rethrown when GoogleFonts fail to load in compose. ( I0416c )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • When adding InputEventChange events to Velocity Tracker we will consider now deltas instead of positions, this will guarantee the velocity is correctly calculated for all cases even if the target element moves ( I51ec3 , b/216582726 , b/223440806 , b/227709803 )
  • The Show Layout Bounds setting will now be applied for composables immediately after toggling it from the quick settings tile, without having to leave and re-enter the activity. ( I843d5 , b/225937688 )
  • Accessibility string lookup does not trigger font loading. Previously, it would attempt to load fonts for StyleSpans , which lead to crashes if FontFamily.Resolver had been overwritten. ( I4609d )
  • āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻŋāĻ˛ā§āĻĄā§‡āϰ āĻļ⧇āώ⧇ āĻ•āĻžāĻ°ā§āϏāĻžāϰ āĻĨāĻžāĻ•āϞ⧇ āĻĢāϰ⧋āϝāĻŧāĻžāĻ°ā§āĻĄ āĻĄāĻŋāϞāĻŋāϟ āϕ⧀ āϟāĻŋāĻĒāϞ⧇ āφāϰ āĻ•ā§āĻ°ā§āϝāĻžāĻļ āĻšāĻŦ⧇ āύāĻžāĨ¤
  • DeleteSurroundingTextCommand and DeleteSurroundingTextInCodePointsCommand now require their constructor arguments to be non-negative. ( Ica8e6 , b/199919707 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-BETA02

18 āĻŽā§‡, 2022

androidx.compose.ui:ui-*:1.2.0-beta02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-BETA02 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Reusing functionality in other preview types ( I19f39 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer has been renamed to DisposeOnDetachedFromWindowOrReleasedFromPool to better reflect that when disposals do occur, rather than simply when they do not occur. ( If15ca )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-BETA01

11 āĻŽā§‡, 2022

androidx.compose.ui:ui-*:1.2.0-beta01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • āĻāϟāĻŋ 1.2 āĻāϰ āĻĒā§āϰāĻĨāĻŽ āĻŦāĻŋāϟāĻž āϰāĻŋāϞāĻŋāϜ!

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added experimental BeyondBoundsInterval that can be used by custom implementations of LazyList when they layout items beyond visible bounds ( Ifabfb , b/184670295 )
  • Keyed versions of Modifier.composed are now stable API ( Ie65e4 , b/229988420 )
  • Simplified the rememberNestedScrollConnection API to use composition locals to acquire the current view information ( I67ca7 )
  • @ComposableTarget āĻŸā§€āĻ•āĻž āĻāĻŦāĻ‚ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋ @ComposableTargetMarker āĻĻā§āĻŦāĻžāϰāĻž āϚāĻŋāĻšā§āύāĻŋāϤ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋ āĻāĻ–āύ @file āωāĻĒāϏāĻ°ā§āĻ— āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻĢāĻžāχāϞ āĻ¸ā§āϕ⧋āĻĒ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĢāĻžāχāϞ āĻ¸ā§āϕ⧋āĻĒ⧇ āĻāĻ•āϟāĻŋ āϞāĻ•ā§āĻˇā§āϝ āĻŸā§€āĻ•āĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻ‚āĻ•āϞāĻ•āϟāĻŋ āĻĢāĻžāχāϞ⧇āϰ āϏāĻŽāĻ¸ā§āϤ āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋ āϧāϰ⧇ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ…ā§āϝāĻžāĻĒāϞāĻŋāϝāĻŧāĻžāϰāϕ⧇ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻžāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇āĨ¤ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ, @file:UiComposable āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰ⧇ āϝ⧇ āϏāĻŽāĻ¸ā§āϤ @Composable āĻĢāĻžāĻ‚āĻļāύāϗ⧁āϞāĻŋ āϰāϚāύāĻž āχāωāφāχ āĻ…ā§āϝāĻžāĻĒāϞāĻŋāϝāĻŧāĻžāϰāϕ⧇ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰ⧇āĨ¤ āĻāĻŽāύ āĻāĻ•āϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϝāĻž āĻ…āĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύāϟāĻŋāϕ⧇ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϤāĻž āĻ…āĻŦāĻļā§āϝāχ āĻ•āĻžāĻ™ā§āĻ•ā§āώāĻŋāϤ āĻ…ā§āϝāĻžāĻĒāϞāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϞāĻ•ā§āĻˇā§āϝ āϚāĻŋāĻšā§āύāĻŋāϤāĻ•āĻžāϰ⧀ āĻŸā§€āĻ•āĻž āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāϤ⧇ āĻšāĻŦ⧇āĨ¤ ( I40804 )
  • Introduced new experimental, platform independent, test API: an interface ComposeUiTest and a fun runComposeUiTest(block: ComposeUiTest.() -> Unit) , that can be used to run Compose Ui tests without the need for a TestRule . To run a test without a ComposeTestRule , pass the test as a lambda to runComposeUiTest , and use the methods and members in the receiver scope ComposeUiTest , which are the same ones as in ComposeContentTestRule .

    The Android specific interface AndroidComposeUiTest and fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit) are added to provide access to the underlying Activity, similar to AndroidComposeTestRule . For even more control, you can instantiate a class AndroidComposeUiTestEnvironment yourself.

    The Desktop implementation is the class DesktopComposeUiTest , but no Desktop specific run functions are offered at the moment.

    Migrating a test from a ComposeTestRule to ComposeUiTest can be done like this (Android example). āĻĨ⧇āϕ⧇:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @get:Rule val rule = createComposeRule()
        @Test
        fun test() {
            rule.setContent {
                Text("Hello Compose!")
            }
            rule.onNodeWithText("Hello Compose!").assertExists()
        }
    }
    

    āĻĒā§āϰāϤāĻŋ:

    @RunWith(AndroidJUnit4::class)
    class MyTest {
        @Test
        @OptIn(ExperimentalTestApi::class)
        fun test() = runComposeUiTest {
            setContent {
                Text("Hello Compose!")
            }
            onNodeWithText("Hello Compose!").assertExists()
        }
    }
    
  • For now, ComposeContentTestRule and ComposeTestRule don't extend from ComposeUiTest , which means extension functions on ComposeUiTest can't be called yet on the TestRule interface. When ComposeUiTest graduates to stable API, ComposeContentTestRule and ComposeTestRule will be changed to extend from ComposeUiTest . ( Ib4e90 )

  • LineHeightBehavior is renamed as LineHeightStyle

  • LineVerticalAlignment is renamed as LineHeightStyle.Alignment

  • LineHeightTrim āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ LineHeightStyle.Trim āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

  • Default constructor values from LineHeightStyle is removed ( I582bf , b/181155707 )

  • Added Brush to TextStyle and SpanStyle to provide a way to draw text with gradient coloring. ( I53869 , b/187839528 )

  • trimFirstLineTop , trimLastLineBottom LineHeightBehavior āĻāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• enum-āĻ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇: LineHeightTrim āĨ¤ LineHeightTrim āĻĻ⧁āϟāĻŋ āĻŦ⧁āϞāĻŋāϝāĻŧāĻžāύ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ 4āϟāĻŋ āĻ¸ā§āĻŸā§‡āĻŸā§‡āϰ āĻŽāĻžāύ āϰāϝāĻŧ⧇āϛ⧇: FirstLineTop , LastLineBottom , āωāĻ­āϝāĻŧ āĻāĻŦāĻ‚ None ( Ifc6a5 , b/181155707 )

  • Added LineHeightBehavior to the TextStyle and ParagraphStyle . LineHeightBehavior āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ āĻ•āϰ⧇ āϝ⧇ āϞāĻžāχāύ⧇āϰ āωāĻšā§āϚāϤāĻž āĻĒā§āϰāĻĨāĻŽ āϞāĻžāχāύ⧇āϰ āωāĻĒāϰ⧇ āĻāĻŦāĻ‚ āĻļ⧇āώ āϞāĻžāχāύ⧇āϰ āύ⧀āĻšā§‡ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āĻ•āĻŋāύāĻžāĨ¤ It also defines the alignment of line in the space provided by TextStyle(lineHeight) .

    āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false) āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ CSS āϝāĻž āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰ⧇ āϤāĻžāϰ āĻ…āύ⧁āϰ⧂āĻĒ āφāϚāϰāĻŖ āĻĒāĻžāĻ“āϝāĻŧāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤

  • trimFirstLineTop , trimLastLineBottom āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϏāĻ āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϤāĻ–āύāχ āϝāĻ–āύ includeFontPadding āĻŽāĻŋāĻĨā§āϝāĻž āĻšāϝāĻŧāĨ¤ ( I97332 , b/181155707 )

  • PlatformParagraphStyle.lerp and PlatformSpanStyle.lerp functions are changed to be top level functions ( I9a268 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • PointerInputChange::copy documentation now correctly states that it is a shallow copy. ( I182f5 )
  • Support ellipsis when height is limited and doesn't fit all text lines ( Ie528c , b/168720622 )
  • Turned on default includeFontPadding . TextStyle.platformTextStyle āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ includeFontPadding āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž āϏāĻŽā§āĻ­āĻŦāĨ¤ āĻ…āĻĻā§‚āϰ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āφāĻŽāϰāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟ āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻŦ āϤāĻŦ⧇ āϤāϤāĻ•ā§āώāĻŖ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰāϕ⧇ āϞāĻžāχāύ⧇āϰ āωāĻšā§āϚāϤāĻžāϰ āωāĻ¨ā§āύāϤāĻŋāϗ⧁āϞāĻŋāϕ⧇ āφāϰāĻ“ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āϏāĻ‚āĻšāϤ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ (aosp/2058653) āĻāĻŦāĻ‚ TextField āĻ•ā§āϞāĻŋāĻĒāĻŋāĻ‚ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇āĨ¤ ( I01423 , b/171394808 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • MouseInjectionScope.scroll(delta = someDelta) is now inverted on Android if we scroll vertically (if someDelta is positive, it will scroll downward) ( Ifb697 , b/224992993 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha08

20 āĻāĻĒā§āϰāĻŋāϞ, 2022

androidx.compose.ui:ui-*:1.2.0-alpha08 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-ALPHA08 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • The pluralStringResource functions were marked as experimental in order to allow evolution to support better internationalization in the future. ( If24e4 )
  • āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ āĻāĻŦāĻ‚ āĻŽāĻžāĻ˛ā§āϟāĻŋāĻĒā§āϝāĻžāϰāĻžāĻ—ā§āϰāĻžāĻĢ āĻāĻ–āύ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϛ⧇āĨ¤ Constraints.maxHeight āĻĒāĻžāϏ āĻ•āϰāĻž āĻāχ āĻŽā§āĻšā§‚āĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āύ⧋-āĻ…āĻĒ āĻ•āĻŋāĻ¨ā§āϤ⧁ āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻ•āĻŋāϛ⧁ āĻ—āĻŖāύāĻž āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āĻŦ⧇, āϝ⧇āĻŽāύ āωāĻšā§āϚāϤāĻžāϰ āωāĻĒāϰ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āĻ•āϰ⧇ āωāĻĒāĻŦ⧃āĻ¤ā§āϤāĻžāĻ•āĻžāϰāĨ¤ ( I6afee , b/168720622 )
  • SubcomposeSlotReusePolicy.getSlotsToRetain() āĻāĻ–āύ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ MutableSet-āĻāϰ āĻŽāϤ⧋ āĻ•ā§āϞāĻžāϏ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āϝāĻž āĻāϤ⧇ āύāϤ⧁āύ āφāχāĻŸā§‡āĻŽ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āύāĻžāĨ¤ ( Icd314 )
  • PointerIcon is now a @Stable interface ( I9dafe )
  • Partial consumption (down OR position) has been deprecated in PointerInputChange . You can use consume() to consume the change completely. āĻ…āĻ¨ā§āϝ āϕ⧇āω āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϟāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āφāĻĒāύāĻŋ isConsumed āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤
  • PointerInputChange::copy() āĻāĻ–āύ āϏāĻ°ā§āĻŦāĻĻāĻž āĻāĻ•āϟāĻŋ āĻ…āĻ—āĻ­ā§€āϰ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āĨ¤ āĻāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻĒāĻŋ āĻ–āĻžāĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ PointerInputChange āĻāϰ āĻ•āĻĒāĻŋāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āφāύāĻŦāĻžāωāĻ¨ā§āĻĄ PointerInputChange āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( Ie6be4 , b/225669674 )
  • Enable Nested Scroll interop between Compose and View in the direction Compose > View. This means that a compose parent will be able to receive nested scroll deltas from a nested scroll view. ( If7949 , b/174348612 )
  • New SemanticsProperty testTagsAsResourceId , which can be used to make Compose conform with UIAutomator tests designed for the View system. ( I39c20 )
  • Display all available weights for systems fonts on Android when using FontFamily.SansSerif . This will use fallback font names like sans-serif-medium internally on API 21-28. āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āĻžāϰāĻŖ āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ“āϜāύ 400 āĻāĻŦāĻ‚ 700 āĻāĻĒāĻŋāφāχ 21-28 āĻ āϏāĻŽāĻ°ā§āĻĨāĻŋāϤ āĻ›āĻŋāϞāĨ¤ ( I380fe , b/156048036 , b/226441992 )
  • Paragraph and Multiparagraph instructors reordered positional arguments to before optional arguments. ( Idafaa )
  • AndroidFont now takes typefaceLoader as a constructor parameter. ( I2c971 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha07

6 āĻāĻĒā§āϰāĻŋāϞ, 2022

androidx.compose.ui:ui-*:1.2.0-alpha07 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha07 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āύāϤ⧁āύ āĻĢāĻžāĻ‚āĻļāύ Snapshot.withoutReadObservation { ... } āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻāχ āĻŦā§āϞāϕ⧇āϰ āϏāĻŽāϝāĻŧ āĻĒāĻĄāĻŧāĻž āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āϏāĻžāĻŦāĻ¸ā§āĻ•ā§āϰāĻžāχāĻŦ āύāĻž āĻ•āϰ⧇ āĻĒāĻžāϏ āĻ•āϰāĻž āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āϚāĻžāϞāĻžāύ⧋āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ āφāĻĒāύāĻŋ āϝāĻ–āύ āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻĨā§āϰ⧇āĻĄ āϏ⧇āĻĢ āϰāĻžāχāϟāĻŋāĻ‚/āϰāĻŋāĻĄāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āωāĻĒāĻ•ā§ƒāϤ āĻšāϤ⧇ āϚāĻžāύ āϤāĻ–āύ āφāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāϟāĻŋ āĻĻāϰāĻ•āĻžāϰ⧀ āĻŦāϞ⧇ āĻŽāύ⧇ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ, āϤāĻŦ⧇ āĻ…āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻŦāĻž āĻ¸ā§āĻŽāϰāĻŖ āύāĻž āĻ•āϰ⧇ āĻŽāĻžāύāϟāĻŋ āĻĒāĻĄāĻŧāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻšāϤ⧇ āϚāĻžāύāĨ¤ ( I9f365 , āĻ–/214054486 )
  • The consumeWindowInsets extension property of ComposeView allows developers to disable consumption of Android WindowInsets . This allows separate ComposeViews in the hierarchy to each apply WindowInsets without interfering with each other. ( I0ef08 , b/220943142 )
  • āĻŦāĻŋāĻļ⧇āώāĻ­āĻžāĻŦ⧇ IME-āϤ⧇ āĻĻāĻļāĻŽāĻŋāĻ• āĻŦāĻŋāĻ­āĻžāϜāĻ• āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ Keyboard.Number āĻāϰ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻšāĻŋāϏ⧇āĻŦ⧇ KeyboardType.Decimal āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iec4c8 , b/209835363 )
  • PointerEventType.Scroll and PointerEvent.scrollDelta are stable APIs now ( I574c5 , b/225669674 )
  • Enable Nested Scroll interop between View and Compose for cooperating View classes. This means compose is now able to dispatch scroll deltas to a (cooperating) View parent. ( I5d1ac , b/174348612 )
  • āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ-āĻ“āϝāĻŧāĻžāχāĻĄ āĻŦā§‹āĻ˛ā§āĻĄ āĻŸā§‡āĻ•ā§āϏāϟ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āϏ⧇āϟāĻŋāĻ‚ ( I6c1e7 ) āĻāϕ⧀āĻ­ā§‚āϤ āĻ•āϰāϤ⧇ FontFamily.Resolver āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • Font(AssetManager, String, ...) is deprecated, replaced with Font(String, AssetManager, ...) . This is an experimental API. ( I1c7a4 )
  • āĻĢāĻ¨ā§āϟ āĻĢāϞāĻŦā§āϝāĻžāĻ• āĻšā§‡āχāύ⧇āϰ āϏāĻŽāϝāĻŧ āϐāĻšā§āĻ›āĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ-āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻĢāĻ¨ā§āϟāϗ⧁āϞāĻŋ āϏāĻ¨ā§āϧāĻžāύ āĻ•āϰāϤ⧇ āύāϤ⧁āύ āĻĢāĻ¨ā§āϟ āĻŦāĻ°ā§āĻŖāύāĻžāĻ•āĻžāϰ⧀ Font(DeviceFontFamilyName) āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ ( I30468 , b/219754572 )
  • TextStyle/ParagraphStyle-āĻ includeFontPadding āϜāĻ¨ā§āϝ āϏāĻžāĻŽāϝāĻŧāĻŋāĻ• āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ includeFontPadding can be changed via TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false)) . āĻŽāĻžāχāĻ—ā§āϰ⧇āĻļāύ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻāĻŦāĻ‚ āϏāϰāĻžāύ⧋ āĻšāĻŦ⧇āĨ¤ ( If47be , b/171394808 )
  • Add GoogleFont.Provider.isAvailableOnDevice extension for debugging help. ( I64e31 )
  • Add GoogleFont.Provider constructor for use with @ArrayRes ( Ic5ee1 , b/225984280 )
  • Compose GoogleFont is now called Font(GoogleFont) , API remains stable otherwise. ( I125f2 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added lint check to material/Scaffold to ensure that the inner padding is being used ( Ifb111 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha06

23 āĻŽāĻžāĻ°ā§āϚ, 2022

androidx.compose.ui:ui-*:1.2.0-alpha06 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-ALPHA06 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĢā§‹āĻ•āĻžāϏāϝ⧋āĻ—ā§āϝ āϞāĻ•ā§āĻˇā§āϝ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻ•āϰāĻžāϰ āĻ…āύ⧁āϰ⧋āϧ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ RequestFocus āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻ…ā§āϝāĻžāĻ•āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I17b71 )
  • Updated parsing of vector drawables to support auto mirroring to flip the content of a VectorPainter if the current layout direction is RTL. ( I79cd9 , b/185760237 )
  • Updated shadow/ambient colors to be trailing parameters of Modifier.graphicsLayer for API compatibility ( I3f864 , b/160665122 )

  • Added default implementations to shadow/ambient color on GraphicsLayerScope to ensure non-breaking API changes

  • Added event time to RSB events ( Ief8ae )

  • FocusOrder has now been merged into FocusProperties and focusProperties() now has all the capabilities of focusOrder() . FocusOrder and focusOrder() have been deprecated. focusOrder() that accepts a focusRequester should be replaced with a focusRequester() modifier in combination with focusProperties() . This allows the modifiers to have a stronger separation of concerns. ( I601b7 )

  • Upgrading both RecyclerView and Compose will now result in much better scrolling performance for RecyclerViews with Compose views as children.

  • Add ViewCompositionStrategy.Default as a means of retrieving the built-in default strategy

  • Add ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer , which is the new default strategy and properly handles pooling containers such as RecyclerView. ( If7282 )

  • Added support for annotating annotations classes with @Preview as a first step for adding the Multipreview feature. Such annotations could be used to annotate Composable methods or other annotation classes, which could then be considered as indirectly annotated with the given @Preview. ( I12eff )

  • Reference devices added to the Devices list for @Preview ( I071c9 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Updated Vector graphics APIs to use the proper composable annotation @VectorComposable instead of @UiComposable ( I942bc )
  • Remove crossinline from AnnotatedString.Builder.withStyle ( If84d5 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • compose-ui: Add ambientShadowColor and spotShadowColor properties to GraphicsLayerScope ( I1ba1a , b/160665122 )
  • Plural resources are now supported via the pluralStringResource functions. ( Ib2f23 , b/191375123 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha05

9 āĻŽāĻžāĻ°ā§āϚ, 2022

androidx.compose.ui:ui-*:1.2.0-alpha05 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-ALPHA05 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • TextToolbar now takes lambda arguments instead of ActionCallback . ( Ib2eb9 , b/197950089 )
  • Updated nullability in core and appcompat to match Tiramisu DP2 ( I0cbb7 )
  • Measured interface now exposes parentData property ( I3313f )
  • Modifier.onPlaced and the OnPlacedModifier interface are now stable. ( Ib5482 )
  • āĻšā§āϰ⧇! Compose animation now supports 'Animator duration scale' setting from Developer Options. ( I5a4fc , b/161675988 )
  • Added a BeyondBoundsLayout modifier local ( If8b51 , b/184670295 )
  • Text: includeFontPadding is now turned off by default. includeFontPadding=false āĻāϰ āĻĢāϞ⧇ āĻ•ā§āϞāĻŋāĻĒāĻŋāĻ‚ āϏāĻŽāĻ¸ā§āϝāĻžāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϞāĻŽā§āĻŦāĻž āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āϕ⧋āύāĻ“ āĻ•ā§āϞāĻŋāĻĒāĻŋāĻ‚ āĻ•āϰāĻž āωāϚāĻŋāϤ āύāϝāĻŧāĨ¤ ( I31c84 , b/171394808 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • ComposeContentTestRule.setContent will now throw an IllegalStateException if you try to set content when there already is content. ( I888a5 , b/199631334 )
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄ āĻĨ⧇āϕ⧇ āĻĒāĻĄāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϰ āĻ•āĻžāϰāϪ⧇ āϏ⧃āĻˇā§āϟ āĻ•ā§āĻ°ā§āϝāĻžāĻļ⧇āϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧁āύāĨ¤ ( I06020 , b/197769306 )
  • Improve RSB scrolling samples. ( I6a596 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • āϕ⧋āϟāϞāĻŋāύ⧇āĻ•ā§āϏ āĻ•āϰ⧁āϟāĻžāχāύāϏ 1.6.0 ( āφāχ 3366 āĻĄāĻŋ ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻšāϝāĻŧ⧇āϛ⧇

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha04

23 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2022

androidx.compose.ui:ui-*:1.2.0-alpha04 is released. Version 1.2.0-alpha04 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • ComposableTarget , ComposableTargetMarker āĻāĻŦāĻ‚ ComposableOpenTarget āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ•āĻŽā§āĻĒāĻžāχāϞ āϟāĻžāχāĻŽ āϰāĻŋāĻĒā§‹āĻ°ā§āϟāĻŋāĻ‚āϝāĻŧ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āĻĢāĻžāĻ‚āĻļāύāϕ⧇ āϟāĻžāĻ°ā§āϗ⧇āϟāĻŋāĻ‚ āĻŦāϞāĻž āĻšāϝāĻŧ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒā§āϞāĻžāϝāĻŧāĻžāϰ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤

    āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋ āϰāϚāύāĻž āϏāĻ‚āĻ•āϞāĻ• āĻĒā§āϞāĻžāĻ—āχāύ āĻĻā§āĻŦāĻžāϰāĻž āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āϤāĻžāχ āĻāχ āĻŸā§€āĻ•āĻžāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϏāϰāĻžāϏāϰāĻŋ āĻŦāĻŋāϰāϞ āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤāĨ¤ āϝ⧇ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž āϝāĻžāϝāĻŧ āύāĻž āϏ⧇āϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āϰāϝāĻŧ⧇āϛ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āĻ…ā§āϝāĻžāĻĒā§āϞāĻžāϝāĻŧāĻžāϰ āϤ⧈āϰāĻŋ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž, āĻŦāĻŋāĻŽā§‚āĻ°ā§āϤ āĻ•āĻŽā§āĻĒā§‹āϜāϝ⧋āĻ—ā§āϝ āĻĢāĻžāĻ‚āĻļāύ (āϝ⧇āĻŽāύ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĒāĻĻā§āϧāϤāĻŋ), āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻŦāĻž āĻ—ā§āϞ⧋āĻŦāĻžāϞ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āϝāĻž āĻ•āĻŽā§āĻĒā§‹āϜāϝ⧋āĻ—ā§āϝ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϏ (āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋ āĻ…āύ⧁āĻŽāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ), āĻŦāĻž ComposeNode āĻŦāĻž āĻāĻ•āϟāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧāĨ¤

    For custom appliers the composable functions that calls ComposeNode or ReusableComposeNode need to add a ComposableTarget annotation for the function and any composable lambda parameter types. āϝāĻžāχāĻšā§‹āĻ•, ComposableTargetMarker āĻĻāĻŋāϝāĻŧ⧇ āĻŸā§€āĻ•āĻžāϝ⧁āĻ•ā§āϤ āĻāĻ•āϟāĻŋ āĻŸā§€āĻ•āĻž āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϤāĻžāϰāĻĒāϰ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻŸā§€āĻ•āĻžāϟāĻŋ āϏāϰāĻžāϏāϰāĻŋ ComposableTarget āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧāĨ¤ ComposableTargetMarker āĻĻāĻŋāϝāĻŧ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻāĻ•āϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āϜāϝ⧋āĻ—ā§āϝ āĻŸā§€āĻ•āĻž āĻāĻ•āϟāĻŋ ComposbleTarget āĻāϰ āϏāĻŽāϤ⧁āĻ˛ā§āϝ āϝāĻžāϰ āĻ…ā§āϝāĻžāĻŸā§āϰāĻŋāĻŦāĻŋāωāϟ āĻ•ā§āϞāĻžāϏ⧇āϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āϝ⧋āĻ—ā§āϝ āύāĻžāĻŽ āĻĒā§āϰāϝāĻŧā§‹āĻ—āĻ•āĻžāϰ⧀ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇āĨ¤ ComposableTargetMarker āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ anroidx.compose.ui.UiComposable āĻĻ⧇āϖ⧁āύāĨ¤ ( I38f11 )

  • Font(resId, ...) now takes loadingStrategy on stable API. ( Ief3d2 )

  • FontLoadingStrategy is now stable API. ( I1ee35 , b/174162090 )

  • Support async font loading in Text ( I77057 , b/214587005 )

  • Add bridge API for converting custom Font.ResourceLoader into FontFamily.Resolver . ( Ia0060 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Provided FontFamily.Resolver are passed to subcompositions such as Popup.
  • Provided Font.ResourceLoader are passed to subcompositions such as Popup. ( I48fa5 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-Alpha03

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰ⧀ 9, 2022

androidx.compose.ui:ui-*:1.2.0-alpha03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • TextInputSession āĻāĻŦāĻ‚ TextInputService āĻ notifyFocusedRect āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤ āĻāĻŦāĻ‚ āĻŦāϞāĻž āĻšāĻŦ⧇ āύāĻžāĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ BringIntoViewRequester āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( Ia4302 , b/192043120 , b/216842427 , b/178211874 )
  • Introduced destroyDisplayListData method on RenderNode stub class ( I1e659 , b/216660268 )
  • Added a new api which allows to premeasure children of SubcomposeLayout you precomposed. ( I857ea )
  • āϝ⧋āĻ— āĻ•āϰāĻž movableContentOf āϝāĻž āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻĒā§‹āĻœā§‡āĻŦāϞ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϕ⧇ āĻāĻ•āϟāĻŋ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϝāĻŧ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇ āϝāĻž āĻāϟāĻŋāϕ⧇ āϰāĻžāĻˇā§āĻŸā§āϰāϕ⧇ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āϏāĻ‚āĻļā§āϞāĻŋāĻˇā§āϟ āύ⧋āĻĄāϗ⧁āϞāĻŋāϕ⧇ āϝ⧇ āϕ⧋āύāĻ“ āύāϤ⧁āύ āĻ¸ā§āĻĨāĻžāύ⧇ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ āϝāĻ–āύ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻ•āϞāϟāĻŋ āϰāϚāύāĻžāϟāĻŋ āϛ⧇āĻĄāĻŧ⧇ āϝāĻžāϝāĻŧ āϤāĻ–āύ āϰāĻžāĻˇā§āĻŸā§āϰāϟāĻŋ āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€āĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϝāĻŧ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻ•āϞ āϰāϚāύāĻžāϟāĻŋāϤ⧇ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰ⧇ āϤāĻŦ⧇ āϰāĻžāĻœā§āϝ āĻāĻŦāĻ‚ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āύ⧋āĻĄāϗ⧁āϞāĻŋ āύāϤ⧁āύ āĻ•āϞāϟāĻŋāϰ āĻ¸ā§āĻĨāĻžāύ⧇ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰāĻŋāϤ āĻšāϝāĻŧāĨ¤ āϝāĻĻāĻŋ āϕ⧋āύāĻ“ āύāϤ⧁āύ āĻ•āϞ āϝ⧁āĻ•ā§āϤ āύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻŦ⧇ āϰāĻžāĻœā§āϝ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€āĻ­āĻžāĻŦ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻ•āĻĻ⧇āϰ āĻ…āĻŦāĻšāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

    āϝāĻĻāĻŋ āϕ⧋āύāĻ“ movableContentOf āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϕ⧇ āĻāĻ•āχ āϰāϚāύāĻžāϟāĻŋāϤ⧇ āĻāĻ•āĻžāϧāĻŋāĻ•āĻŦāĻžāϰ āĻŦāϞāĻž āĻšāϝāĻŧ, āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻ•āϞ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āϰāĻžāĻˇā§āĻŸā§āϰ āĻāĻŦāĻ‚ āύ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ•āϞāϗ⧁āϞāĻŋ āϝ⧇āĻŽāύ āϰāϚāύāĻžāϟāĻŋ āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ āύāϤ⧁āύ āĻ•āϞāϗ⧁āϞāĻŋ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰ⧇, āϰāĻžāĻœā§āϝāϟāĻŋ āĻĒā§āϰāĻĨāĻŽ āϛ⧇āĻĄāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻ•āϞāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ āϤāĻžāĻĻ⧇āϰ āĻ•āϞ āĻ•āϰāĻž āĻ•ā§āϰāĻŽā§‡āϰ āĻĒā§āϰāĻŦ⧇āĻļ āĻ•āϰāĻžāύ⧋ āĻ•āϞāϗ⧁āϞāĻŋāϤ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ āύāϤ⧁āύ āĻ•āϞ āĻĻā§āĻŦāĻžāϰāĻž āĻĻāĻžāĻŦāĻŋ āĻ•āϰāĻž āϏāĻŽāĻ¸ā§āϤ āϰāĻžāĻˇā§āĻŸā§āϰ āĻ¸ā§āĻĨāĻžāϝāĻŧā§€āĻ­āĻžāĻŦ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( āφāχāĻŦāĻŋ 4850 )

  • FontFamilyResolver āĻāĻ–āύ LocalFontFamilyResolver.current āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āωāĻĒāϞāĻŦā§āϧ

  • Added createFontFamilyResolver(context) and createFontFamilyResolver(context, coroutineScope) to create new FontFamily resolvers outside of compose usage.

  • Paragraph āĻāĻŦāĻ‚ MultiParagraph āĻāĻ–āύ FontFamily.Resolver āύāĻŋāύ

  • TextLayoutResult.layoutInput.fontFamilyResolver āĻāĻ–āύ āĻāχ āϞ⧇āφāωāĻŸā§‡āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϏāĻŽāĻžāϧāĻžāύāĻ•āĻžāϰ⧀ āϰāϝāĻŧ⧇āϛ⧇, TextLayoutResult.layoutInput.resourceLoader āϟāĻŋ āφāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ ( Id5a45 , b/174162090 )

  • Support for async and optional font loading, with fallback behavior. This path is used by Text and TextField, and exposed through FontFamilyResolver

  • Support for preloading fonts via FontFamilyResolver.preload

  • FontFamilyResolver.setAsyncLoadContext allows setting the global coroutine context used for loading async fonts. ( I87fe8 , b/174162090 )

  • AndroidFont āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, Android āĻ āύāϤ⧁āύ āϧāϰāύ⧇āϰ āĻĢāĻ¨ā§āϟ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦāĻ°ā§āĻŖāύāĻžāĻ•āĻžāϰ⧀ āĻĒā§āϰāĻĻāĻžāύ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āύāĻŋāĻŽā§āύ-āĻ¸ā§āϤāϰ⧇āϰ APIāĨ¤ For example, loading fonts from an app-specific backend, optionally locating pre-installed fonts on-device, or loading a font from a resource not provided by the current Font factories.

  • Expanded Font.ResourceLoaded API to support optional and async font loading. āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āϰāĻž āϏāϰāĻžāϏāϰāĻŋ āĻāχ API āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āĻĒāϰāĻžāĻŽāĻ°ā§āĻļ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ To add new types of fonts see AndroidFont .

  • Font.AndroidResourceLoader extension function allows construction of a Font.ResourceLoader when outside of composition.

  • Added loadingStrategy parameter to resource-based fonts, to allow async loading when resource font references downloadable fonts XML. ( Ie5aea , b/174162090 )

  • Typeface(FontFamily) āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤāĨ¤ This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. With downloadable fonts, this call may block for 10 seconds. Instead use FontFamilyResolver.preload .

  • fontResource(FontFamily): Typeface āĻ…āĻŦāĻšā§‡āϞāĻŋāϤāĨ¤ This was previously used to preload fonts, which may take up to 10 seconds for downloadable fonts. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ FontFamilyResolver.preload āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( If8e7c , b/174162090 )

  • SubcomposeLayoutState constructor accepting maxSlotsToRetainForReuse is now deprecated. Instead there is a new constructor accepting SubcomposeSlotReusePolicy - a new interface allowing more granular control on what slots should be retained for the future reuse. ( I52c4d )

  • Exposes HSV and HSL function in Color as non-experimental API. The Oklab color space is now public API. ( I08fb6 , b/180731008 )

  • Deprecated AndroidComposeTestRule.AndroidComposeStatement , which was not meant to be in public API and didn't do anything for you anyway. ( Ibc46b )

  • Internal generated kt class rename ( Ia0b9e , b/174162090 )

  • Removed FontLoadingStrategy.values ( I42a9d , b/174162090 )

  • Global font loader is now called FontFamilyResolver . ( I4f773 , b/174162090 )

  • Use new font loading system for desktop. ( I9ce5c , b/174162090 )

  • FontFamily.Resolver.resolve returns State<Any> ( I4406c , b/174162090 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • TextFields will now be kept above the keyboard when they are focused and the keyboard is shown, when the soft input mode is ADJUST_PAN . ( I8eaeb , b/190539358 , b/192043120 )
  • FontFamily.Resolver āϜāĻ¨ā§āϝ āĻĄā§‡āĻ¸ā§āĻ•āϟāĻĒ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇
  • āĻĄā§‡āĻ¸ā§āĻ•āϟāĻĒ FontLoader āĻ…āĻŦāĻŽā§āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • New createFontFamilyResolver factory on Desktop ( I6bbbb , b/174162090 )
  • āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻŋāĻ˛ā§āĻĄā§‡āϰ āĻŽāĻ§ā§āϝ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āύāϰāĻŽ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āχāύāĻĒ⧁āϟ āϟāĻžāχāĻĒ āφāϰ āĻĢā§āϞāĻŋāĻ• āĻ•āϰ⧇ āύāĻžāĨ¤ ( I1bf50 , b/187746439 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha02

āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 26, 2022

androidx.compose.ui:ui-*:1.2.0-alpha02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added Modifier.onRotaryScrollEvent() and Modifier.onPreRotaryScrollEvent() for wear devices with a rotating side button ( I18bf5 , b/210748686 )
  • Add experimental View.createLifecycleAwareRecomposer extension ( I0cde6 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • PointerEvent.scrollDelta.y is now inverted on Android (now it returns 1 instead of -1 if we tilt mouse wheel to the right) ( Ia9811 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-alpha01

āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 12, 2022

androidx.compose.ui:ui-*:1.2.0-alpha01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.2.0-ALPHA01 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Deprecated FontFamily.canLoadSynchronously . This property has no semantic meaning. ( Ica5ef )
  • āϞ⧇āφāωāϟ āχāĻ¨ā§āϏāĻĒ⧇āĻ•ā§āϟāϰāϟāĻŋāϤ⧇ āφāĻ•ā§āϰāĻŽāĻŖāĻ•āĻžāϰ⧀ āφāχāĻĄāĻŋ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ CompositionData āĻĒāϰāĻŋāϚāϝāĻŧ āĻ•ā§āώ⧇āĻ¤ā§āϰ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( āφāχāϏāĻŋ 116 āχ )
  • Added Wear OS device ids to Preview devices list ( I93232 )

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāĻĒāĻĄā§‡āϟ

  • āĻāĻ–āύ āϕ⧋āϟāϞāĻŋāύ 1.6.10 āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.1

23 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2022

androidx.compose.ui:ui-*:1.1.1 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.1 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList NullPointerException​​
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄā§‡ āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄ āĻĨ⧇āϕ⧇ āĻĒāĻĄāĻŧāĻžāϰ āϏāĻŽāϝāĻŧ āĻ•ā§āϞāĻŋāĻĒāĻŦā§‹āĻ°ā§āĻĄ āϏāĻžāĻŽāĻ—ā§āϰ⧀āϰ āĻ•āĻžāϰāϪ⧇ āϏ⧃āĻˇā§āϟ āĻ•ā§āĻ°ā§āϝāĻžāĻļ⧇āϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰ⧁āύāĨ¤ ( I06020 , b/197769306 )
  • LazyVerticalGrid āĻ¸ā§āĻĨāĻŋāϰ āφāϰāϟāĻŋāĻāϞ ( āĻāĻ“āĻāϏāĻĒāĻŋ/1931080 , āĻŦāĻŋ/207510535 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰ⧀ 9, 2022

androidx.compose.ui:ui-*:1.1.0 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϏ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

1.0.0 āϏāĻžāϞ āĻĨ⧇āϕ⧇ āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ 12 āĻ“āĻ­āĻžāϰāĻ•ā§āϰ⧋āϞ āĻĒā§āϰāĻ­āĻžāĻŦ⧇āϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āϏāĻŽāĻ°ā§āĻĨāύ
  • āϟāĻžāĻ°ā§āϗ⧇āϟ āϏāĻžāχāϜāĻŋāĻ‚ āĻ¸ā§āĻĒāĻ°ā§āĻļ āĻ•āϰāĻžāϰ āωāĻ¨ā§āύāϤāĻŋ
    • āĻĻā§āϰāĻˇā§āϟāĻŦā§āϝ āϝ⧇, āϰāϚāύāĻž 1.0 āĻāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇, āωāĻĒāĻžāĻĻāĻžāύ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞāĻŋ āĻ¸ā§āĻĒāĻ°ā§āĻļ āϞāĻ•ā§āĻˇā§āϝ āφāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āωāĻĒāĻžāĻĻāĻžāύ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻžāϗ⧁āϞāĻŋ āĻĒā§‚āϰāĻŖ āĻ•āϰāϤ⧇ āϤāĻžāĻĻ⧇āϰ āϞ⧇āφāωāϟ āĻ¸ā§āĻĨāĻžāύ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāĻŦ⧇⧎ For instance, Button touch target will expand to a minimum size of 48x48dp, even if you set the Button's size to be smaller. āĻāϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āϜ āĻŽā§āϝāĻžāĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞāϕ⧇ āĻŽā§āϝāĻžāĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻĄāĻŋāϜāĻžāχāύ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āĻŸā§‡āϰ āĻāĻ•āχ āφāϚāϰāϪ⧇āϰ āϏāĻžāĻĨ⧇ āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ āĻ•āϰ⧇, āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻ­āĻŋāω āĻāĻŦāĻ‚ āĻ•āĻŽā§āĻĒā§‹āϜ āĻŽāĻŋāĻļā§āϰāĻŋāϤ āĻ•āϰ⧇āύ āϤāĻžāĻšāϞ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āφāϚāϰāĻŖ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϟāĻŋ āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇ āϝ⧇ āφāĻĒāύāĻŋ āϝāĻ–āύ āϰāϚāύāĻž āωāĻĒāĻžāĻĻāĻžāύ āωāĻĒāĻžāĻĻāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āφāĻĒāύāĻžāϰ UI āϤ⧈āϰāĻŋ āĻ•āϰāĻŦ⧇āύ, āϤāĻ–āύ āĻ¸ā§āĻĒāĻ°ā§āĻļ āϞāĻ•ā§āĻˇā§āϝ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻĒā§āϰāϝāĻŧā§‹āϜāύ⧀āϝāĻŧāϤāĻž āĻĒā§‚āϰāĻŖ āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤
  • Stable Support for Navigation Rail
  • āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• API-āϕ⧇ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āύāĻžāϤāĻ• āĻ•āϰ⧇
  • āϕ⧋āϟāϞāĻŋāύ⧇āϰ āύāϤ⧁āύ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-āφāϰāϏāĻŋ 03

āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀ 26, 2022

androidx.compose.ui:ui-*:1.1.0-rc03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-rc03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ•āĻŽā§āĻĒā§‹āϜ āĻŽā§āϝāĻžāĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ 1.1.0-rc03 āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-rc01

15 āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-rc01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-āφāϰāϏāĻŋ 01 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ…āύ⧁āĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ…ā§āϝāĻžāĻ•āĻļāύ⧇āϰ āĻ•āĻžāϰāϪ⧇ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ— āϏāĻ‚āĻļā§‹āϧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I7cbfb )
  • SemanticsNodeInteraction.captureToImage() will now also work if HardwareRenderer.isDrawingEnabled() is false , by enabling it for the duration of the call ( Idf3d0 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-beta04

āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ 1, 2021

androidx.compose.ui:ui-*:1.1.0-beta04 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-BETA04 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • Kotlin 1.6.0 āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻšāϤ⧇ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Cleaned up nullability in androidx.core.view ( I7078a , b/204917439 )
  • Experimental APIs were added that allow users to consume PointerInputchange as a whole or check whether it was consumed or not. ( I2e59d )
  • Adds support for mouse scroll wheel events in the UI layer. ( Ia14eb , b/198214718 )
  • Add experimental Modifier.composed overloads that accept keys to compare for equality and qualify for skipping optimizations. ( Ice799 , b/205851704 )
  • ComposeNotIdleException now extends from Exception instead of directly from Throwable . Note that this means that catch clauses that were catching Exception might now catch ComposeNotIdleException s, where they wouldn't do that previously. ( I9c217 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • IME āĻĻ⧃āĻļā§āϝāĻŽāĻžāύāϤāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻšāϞ⧇ āĻŸā§‡āĻ•ā§āϏāϟ āĻšā§āϝāĻžāĻ¨ā§āĻĄāϞāϗ⧁āϞāĻŋ āύāĻĄāĻŧāϛ⧇ āύāĻž āϤāĻž āĻ āĻŋāĻ• āĻ•āϰ⧁āύāĨ¤ ( I25f2e )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-beta03

17 āύāϭ⧇āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-beta03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-beta03-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added new modifier Modifier.onPlaced to allow placement change to be observed. Additional changes to child modifier's offset can therefore be made based on the observed placement change. ( I558fd )
  • Removed InjectionScope.flush() and InjectionScope.dispose() . Flushing of all events and disposing of the scope now happens at the end of the called perform*Input() method like before. ( I2bed8 )
  • Removed MultiModalInjectionScope.Touch and MultiModalInjectionScope.Mouse . In order to inject touch and mouse events for multi-modal gestures, you can now use MultiModalInjectionScope.touch() and MultiModalInjectionScope.mouse() , both of which accept a lambda that has the receiver scope of that modality. ( Idde18 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • The default value for durationMillis in TouchInjectionScope.swipeWithVelocity is now calculated such that the swipe is feasible. ( I19deb )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-BETA02

3 āύāϭ⧇āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-beta02 is released. 1.1.0-beta02 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• BringIntoView API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻ…āĻ­āĻŋāĻ­āĻžāĻŦāĻ•āĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āϰ⧋āϧ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĻ⧇āϝāĻŧ āϝāĻžāϤ⧇ āϤāĻžāϰāĻž āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻĻ⧇āĻ–āϤ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ ( Ib918d , b/195353459 )
  • New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. ( I4116e )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • Added Modifier.pointerHoverIcon ( I95f01 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-beta01

27 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-beta01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-BETA01 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• BringIntoView API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻ…āĻ­āĻŋāĻ­āĻžāĻŦāĻ•āĻĻ⧇āϰ āĻ•āĻžāϛ⧇ āĻāĻ•āϟāĻŋ āĻ…āύ⧁āϰ⧋āϧ āĻĒāĻžāĻ āĻžāϤ⧇ āĻĻ⧇āϝāĻŧ āϝāĻžāϤ⧇ āϤāĻžāϰāĻž āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽ āĻĻ⧇āĻ–āϤ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ ( Ib918d , b/195353459 )
  • New animation APIs for supporting tooling. Specifically, they allow tooling to inspect the animations & their configurations in a Transitions. ( I4116e )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-Alpha06

13 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-alpha06 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-ALPHA06 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Remove ExperimentalComposeUiApi from ViewRootForInspector and LayoutInfo.ownerViewId ( I5c2e3 )
  • A child-less overload for Layout was added, with improved efficiency ( Ib0d9a )
  • āϏ⧁āϰāĻ•āĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻĨ⧇āϕ⧇ InternalCompilerApi āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ•ā§āϰāϏ-āĻŽāĻĄāĻŋāωāϞ ( āφāχ 1 āĻāĻ 0 āĻŦāĻŋ ) āĻŦāϞāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύ
  • SemanticsNodeInteraction.performSemanticsAction āĻāĻ–āύ SemanticsNodeInteraction āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ āϝāĻžāϰ āωāĻĒāϰ āĻĢāĻžāĻ‚āĻļāύāϟāĻŋ āĻ•āϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ ( I9e5db )
  • Added LocalInputModeManager CompositionLocal to detect TouchMode/NonTouchMode. ( I6a83c , b/175899786 )
  • Added viewConfiguration: ViewConfiguration to LayoutInfo to allow consumers get the correct value for things like long press timeout. ( I76ca6 )
    • Added viewConfiguration: ViewConfiguration to InjectionScope to allow tests to adjust input injection based on things like long press timeout or touch slop.
    • Changed default duration of long press and double tap for both touch and mouse input to be based on the values in InjectionScope.viewConfiguration .
  • Implementation of ExposedDropdownMenu based on ExposedDropdownMenuBox with TextField and DropdownMenu inside ( If60b2 )
  • dismissOnOutsideClick was added to PopupProperties, replacing dismissOnClickOutside which was deprecated. The new property receives the click position and the anchor bounds, providing finer control over whether onDismissRequest should be invoked or not. For example, this can be useful to prevent anchor dismissal for touches on the anchor.
    • updateAndroidWindowManagerFlags was added to PopupProperties, offering low-level control over the flags passed by the popup to the Android WindowManager. The parameter of the lambda will be the flags calculated from the PopupProperties values that result in WindowManager flags: eg focusable. The result of the lambda will be the final flags which will be passed to the Android WindowManager. By default, updateAndroidWindowManagerFlags will leave the flags calculated from parameters unchanged. This API should be used with caution, only in cases where the popup has very specific behavior requirements. ( I6e9f9 )
  • Recomposer.state āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ Recomposer.currentState āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāϰ āϧāϰāĻŖāϟāĻŋ āĻāĻ•āϟāĻŋ āϰāĻžāĻˇā§āĻŸā§āϰ⧀āϝāĻŧ āĻĒā§āϰāĻŦāĻžāĻšā§‡ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ ( āφāχāϏāĻŋ 2 āĻāĻŦāĻŋ 3 , āĻŦāĻŋ/197773820 )
  • Added flush() and dispose() to InjectionScope . Use them when you want to flush all queued up events immediately and when you want to dispose of the scope, respectively. ( Ifb73a )
  • Added performScrollToNode(matcher: SemanticsMatcher) that scrolls a scrollable container to the content that is matched by the given matcher. ( Ic1cb8 )
  • InjectionScope now implements Density , allowing you to easily convert between px and dp in performTouchInput and friends. ( I8fe1f )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • AndroidView now propagates LocalLifecycleOwner and LocalSavedStateRegistryOwner to its view via ViewTreeLifecycleOwner and ViewTreeSavedStateRegistryOwner. ( I38f96 , b/179708470 )
  • Fix WearOS SwipeToDismissBox sometimes not handling swipes. ( I9387e )
  • The default time between injected input events has been changed from 10ms to 16ms. This potentially changes the outcome of tests that perform input gestures, like a specific swipe. ( I829fd )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-alpha05

29 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-alpha05 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-ALPHA05 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added support for inter-modifier communication ( Id5467 , b/198826874 )
  • Added experimental historical pointers to PointerEventChange. ( Ic1fd8 , b/197553056 , b/199921305 )
  • Added density: Density and layoutDirection: LayoutDirection to LayoutInfo . This allows consumers of LayoutInfo to interpret the dimensions and position exposed in LayoutInfo properly. ( I002f1 )
  • Added experimental support for injecting mouse events. Use performMouseInput to start sending mouse events, or send mouse events through the Mouse property of MultiModalInjectionScope during a multi modal input gesture with performMultiModalInput . See MouseInjectionScope for documentation of the available API. ( Iaa4a8 , b/190493367 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻ¸ā§āĻ•ā§āϰāϞ āĻ•āϰāĻžāϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ ( I6cdb0 )
  • Improved TouchInjectionScope.swipeWithVelocity . It now accepts a wider range of input variables and will suggest changes to the input if a swipe can't be created ( I40fbe , b/182477143 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-alpha04

15 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-alpha04 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-ALPHA04 āĻāϰ āĻŽāĻ§ā§āϝ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • PointerEvent now has a PointerEventType to support hover events. ( I091fa )
  • Allow children to accept pointer input outside of parent's pointer input bounds. Parents may intercept those calls with a property PointerInputScope.alwaysInterceptChildEvents ( I9eae3 , b/192479655 )
  • Deprecated performGesture and GestureScope , which have been replaced by performTouchInput and TouchInjectionScope . ( Ia5f3f , b/190493367 )
  • SemanticsNode āĻ touchBoundsInRoot āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻžāϤ⧇ āĻ¨ā§āϝ⧂āύāϤāĻŽ āϟāĻžāϚ āϟāĻžāĻ°ā§āϗ⧇āϟ āϏāĻžāχāϜ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻĨāĻžāϕ⧇ āϝāĻžāϤ⧇ āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāϰāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āϟāĻžāϚ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝāϤāĻž āĻ¨ā§āϝ⧂āύāϤāĻŽ āĻĒā§‚āϰāĻŖ āĻ•āϰ⧇āĨ¤ ( I2e14b , b/197751214 )
  • Redo implementation of inspectable ( I927bc , b/191017532 )
  • Changed parameter name of inspectable to match composed ( I3a482 , b/191017532 )
  • Introduced performTouchInput and TouchInjectionScope as a replacement for performTouchInput and TouchInjectionScope , paving the way for other modalities (like mouse).

    TouchInjectionScope has the same methods as GestureScope , with the exception of movePointerTo and movePointerBy , which have been renamed to updatePointerTo and updatePointerBy . All other methods are the same.

    The behavior of TouchInjectionScope is almost identical to GestureScope , with two small details:

    1. When sending a down event while pointers had been moved without sending a move event (in other words, updatePointerTo() has been used, but not move() , and then down() is called), the previous implementation would advance the event time and send a move event before sending the down event. The new implementation still sends the move event, but doesn't advance the event time in this specific scenario.
    2. When sending an up event while pointers had been moved without sending a move event (similar as above), the previous implementation would advance the event time and send a move event before sending the up event. The new implementation does neither: the new positions of the pointers will only be reflected through the up event.

    Finally, TouchInjectionScope introduces a new method currentPosition(pointerId: Int) to get the current position of the given pointer. ( If1191 , b/190493367 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Allow clip to extend touch target bounds beyond the clip region for minimum touch target purposes. ( I43e10 , b/171509422 )
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ 12 āĻĄāĻŋāĻ­āĻžāχāϏ⧇ āĻ¸ā§āĻŸā§āϰ⧇āϚ āĻ“āĻ­āĻžāϰāĻ¸ā§āĻ•ā§āϰ⧋āϞ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ°ā§āĻĨāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iccf3c , b/171682480 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-alpha03

1 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.1.0-alpha03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-ALPHA03 āĻ āĻāχ āĻ•āĻŽāĻŋāϟāϗ⧁āϞāĻŋ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • Kotlin 1.5.30 āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāϤ⧇ āĻ•āĻŽā§āĻĒā§‹āϜ 1.1.0-alpha03 āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I74545 )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added Modifier.inspectable for wrapping other modifiers. ( I1909b , b/191017532 )
  • Added BlurredEdgeTreatment API to simplify blur use cases into more commonly used combinations of clip flags and TileModes. Most use cases involve either letting blurred content render outside the original content bounds and blurring regions outside these bounds with transparent black, or clipping content to content bounds sampling the closest edge for blur kernels that extend beyond content bounds. ( I6b4b7 , b/166927547 )
  • Added support for RenderEffect in compose desktop. Introduced OffsetEffect as well as the blur modifier as a simple way to introduce blur visual effects to a portion of the composition hierarchy. ( I0f6aa , b/166927547 )
  • Introduced RenderEffect API that can be optionally configured on a Modifier.graphicsLayer to alter the contents of the layer itself. This can be used to blur contents of a composable and child composables within a composition hierarchy. ( I47c4d , b/166927547 )
  • AwaitPointerEventScope-āĻ āĻāĻ–āύ withTimeout() āĻāĻŦāĻ‚ withTimeoutOrNull() ( I507f0 , b/179239764 , b/182397793 ) āϰāϝāĻŧ⧇āϛ⧇
  • Added minimum touch target size to ViewConfiguration for use in semantics and pointer input to ensure accessibility. ( IE861c )
  • Add TileMode.Decal support which is useful in defining edge behavior for blur based RenderEffects. ( I7e8ed , b/166927547 )
  • performScrollToIndex , performScrollToKey , hasScrollToIndexAction and hasScrollToKeyAction are now stable API ( I142ae , b/178483889 )
  • āĻ•ā§āϞāĻŋāĻĒ āĻ•āϰāĻž āϏ⧀āĻŽāĻžāύāĻž āĻĒ⧇āϤ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I6b28e )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Removed isBounded method from BlurredEdgeTreatment in favor of explicitly checking if the shape parameter is null. ( I85d68 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-alpha02

18 āφāĻ—āĻ¸ā§āϟ, 2021

androidx.compose.ui:ui-*:1.1.0-alpha02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • PointerEvent now has support for reading mouse button state and keyboard modifier state. ( I6310c , b/180075467 )
  • Injected gestures now use the MainTestClock's time as the source of truth for time. The current time for injected events in performGesture will be initialized to the current time of the MainTestClock. ( Ifb364 , b/192064452 )
  • Added DpRect(DpOffset, DpSize) constructor ( I2cf16 , b/194219828 )
  • Added DpSize class ( I7abb1 , b/194219828 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Updated Vector graphics xml parsing to support ColorStateLists as root color tint properties on VectorDrawables. ( I86915 , b/195668138 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.1.0-alpha01

August 4, 2021

androidx.compose.ui:ui-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • RelocationRequester.bringIntoView now accepts a rectangle as a parameter which enables us to bring a part of a composable into view ( Ice2c5 , b/194330245 )
  • AnimatedImageVector and the related APIs are now in the new androidx.compose.animation:animation-graphics module. ( I60873 )
  • Added experimental modifier to handle relocation requests. ( I65a97 , b/178211874 )
  • Introduced BrushPainter API to support drawing of an arbitrary Brush within a Painter, similar to ColorPainter

    Updated Brush API to have an intrinsic size parameter that is queried within BrushPainter ( Ia2752 , b/189466433 )

  • āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž DrawScope#drawImage āĻĒāĻĻā§āϧāϤāĻŋ āϝāĻž āĻāĻ•āϟāĻŋ āϐāĻšā§āĻ›āĻŋāĻ• āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϕ⧋āϝāĻŧāĻžāϞāĻŋāϟāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻ‰ā§ŽāϏ āĻāĻŦāĻ‚ āĻ—āĻ¨ā§āϤāĻŦā§āϝ āϰ⧇āĻ•ā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤ This is useful for pixel art that is intended to be pixelated when scaled up for pixel based art. āĻāĻ•āϟāĻŋ āϐāĻšā§āĻ›āĻŋāĻ• āĻĢāĻŋāĻ˛ā§āϟāĻžāϰ āϕ⧋āϝāĻŧāĻžāϞāĻŋāϟāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ ( Ie4fb0 , b/180311607 ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž BitmapPainter + āϚāĻŋāĻ¤ā§āϰ āĻ•āĻŽā§āĻĒā§‹āϜāϝ⧋āĻ—ā§āϝ

  • Added GestureScope.advanceEventTime method to give more control over the timing of events in a gesture ( Ibf3e2 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • In order to better support chaining of draw modifiers, make sure the Modifier.paint implementation calls drawsContent. Previously Modifier.paint was expected to a leaf node in the chain of Modifiers, however, by doing so it prevents it from being configured on a composable container (ex. box) or adding additional decorations on top such as Modifier.paint().border() . By having Modifier.paint call drawContent after drawing the contents of the given painter, we have better behavior consistency in behavior with the modifier pattern. ( Ibb2a7 , b/178201337 , b/186213275 )
  • Dialogs now follow the platform sizing behaviour. Set usePlatformDefaultWidth to false to override this behaviour. ( Iffaed , b/192682388 )
  • Moved InfiniteAnimationPolicy to :compose:ui ( I5eb09 , b/160602714 )
  • Scrolling via semantics actions for lazy lists and regular scrolling components is now animated ( Id9066 , b/190742024 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.5

3 āύāϭ⧇āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.0.5 is released. Version 1.0.5 contains these commits.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed a crash tracking derivedStateOf instances. ( aosp/1792247 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.4

13 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.0.4 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.4 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāĻĒāĻĄā§‡āϟ

  • Kotlin 1.5.31 āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.3

29 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.0.3 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.3 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāĻĒāĻĄā§‡āϟ

  • Updated to depend on Kotlin 1.5.30

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.2

1 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2021

androidx.compose.ui:ui-*:1.0.2 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.2 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

Updated to support the Compose 1.0.2 release. āĻ•āĻŽā§āĻĒā§‹āϜ 1.0.2 āĻāĻ–āύāĻ“ Kotlin 1.5.21 āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖāĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.1

August 4, 2021

androidx.compose.ui:ui-*:1.0.1 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.1 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇.

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāĻĒāĻĄā§‡āϟ

  • Kotlin 1.5.21 āĻāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0

28 āϜ⧁āϞāĻžāχ, 2021

androidx.compose.ui:ui-*:1.0.0 is released. Version 1.0.0 contains these commits.

1.0.0 āĻāϰ āĻĒā§āϰāϧāĻžāύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

āĻāϟāĻŋ āϰāϚāύāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻ¸ā§āĻĨāĻŋāϤāĻŋāĻļā§€āϞ āĻĒā§āϰāĻ•āĻžāĻļāĨ¤ Please see the official Compose Release blog for more details!

āĻĒāϰāĻŋāϚāĻŋāϤ āϏāĻŽāĻ¸ā§āϝāĻž

  • If you are using Android Studio Bumblebee Canary 4 or AGP 7.1.0-alpha04 / 7.1.0-alpha05 , you may hit the following crash:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    āĻ āĻŋāĻ• āĻ•āϰāϤ⧇, āφāĻĒāύāĻžāϰ build.gradle āĻĢāĻžāχāϞ⧇ āϏāĻžāĻŽāϝāĻŧāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ minSdkVersion 24+ āĻ āĻŦāĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āĻĻāĻŋāύāĨ¤ āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āĻ¸ā§āϟ⧁āĻĄāĻŋāĻ“ āĻŦāĻžāĻŽā§āĻŦāϞāĻŦāĻŋ āĻāĻŦāĻ‚ āĻāϜāĻŋāĻĒāĻŋ 7.1 āĻāϰ āĻĒāϰāĻŦāĻ°ā§āϤ⧀ āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋ āĻ āĻŋāĻ• āĻ•āϰāĻž āĻšāĻŦ⧇āĨ¤ ( b/194289155 )

Version 1.0.0-rc02

14 āϜ⧁āϞāĻžāχ, 2021

androidx.compose.ui:ui-*:1.0.0-rc02 is released. Version 1.0.0-rc02 contains these commits.

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Dialogs now follow the platform sizing behaviour. Set usePlatformDefaultWidth to false to override this behaviour. ( Iffaed , b/192682388 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-rc01

āϜ⧁āϞāĻžāχ 1, 2021

androidx.compose.ui:ui-*:1.0.0-rc01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-rc01 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ

  • Split ui-tooling module into ui-tooling and ui-tooling-preview ( Iefa28 , b/190649014 )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Removed deprecated experimental FocusManager#moveFocusIn and FocusManager#moveFocusOut ( I227d7 , b/170154986 , b/186567354 , b/168510304 )
  • Canvas now supports a contentDescription parameter for accessibility. ( Ib547c )
  • useDefaultMaxWidth in PopupProperties was renamed to usePlatformDefaultWidth . ( I05710 )
  • Dialogs are now able to use the entire screen width. ( I83929 , b/190810877 )
  • Added experimental support for HSV and HSL color representations. ( Id7cf8 , b/180731008 )

āφāϚāϰāĻŖ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Compose @Preview now provides a LocalActivityResultRegistryOwner that allows you to preview Composables that use APIs like rememberLauncherForActivityResult() that depend on that owner existing. ( Ib13d1 , b/185693006 )
  • Compose @Preview now provides a LocalOnBackPressedDispatcherOwner that allows you to preview Composables that use APIs like BackHandler that depend on that owner existing. ( Ia1c05 , b/185693006 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Moved InfiniteAnimationPolicy to androidx.compose.ui:ui ( I5eb09 , b/160602714 )
  • AnimatedImageVector was temporarily removed in order to change the module structure. ( I41906 , b/160602714 )

Version 1.0.0-beta09

16 āϜ⧁āύ, 2021

androidx.compose.ui:ui-*:1.0.0-beta09 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta09-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Change enum Role and LiveRegionMode into inline classes with private constructor ( Id1890 )
  • KeyboardCapitalization is converted into an inline class. ( Id5a1c )
  • Change HapticFeedbackType to inline class. ( I255ec )
  • Modifier.pointerInteropFilter is @ExperimentalComposeUiApi. ( Iede6c )
  • TextAlign, FontSynthesis and TextDirection are now inline classes. ( I212fe )
  • TextOverflow āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧāĨ¤ ( I433af )
  • FontStyle is now an inline class. ( I9e48b )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻŽā§‚āϞ āĻ§ā§āϰ⧁āĻŦāĻ•āϗ⧁āϞāĻŋ āĻšāϞ āφāĻĒāĻžāϤāϤ @ExperimentalComposeUiApiāĨ¤ Consuming code can declare private constants prior to stabilization. ( Ia5d48 )
  • Compose tests can now be run on Robolectric. The following limitations have so far been identified:
    • There is no native bitmap, so ImageBitmap() leads to a NullPointerException.
    • There is no drawing, so captureToImage() will indefinitely await the next draw pass (ie it deadlocks).
    • There is no font loaded, so any text will be measured incorrectly. All characters have a fixed height of around 20px and width of 1px.
    • ComposeTestRule.waitUntil {} does not run the main thread while it's waiting, making it effectively the same as ComposeTestRule.mainClock.advanceTimeUntil {} More limitations are expected to be identified in the future. ( I284fa )

Added Profile Rules

This release adds profile rules to the following compose modules ( I14ed6 ):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-āϞ⧇āφāωāϟ
  • androidx.compose.material
  • androidx.compose.material-ripple
  • androidx.compose.runtime
  • androidx.compose.ui
  • androidx.compose.ui.geometry
  • androidx.compose.ui.graphics
  • androidx.compose.ui.text
  • androidx.compose.ui.text
  • androidx.compose.ui.unit
  • androidx.compose.ui.util

āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āύāĻŋāϝāĻŧāĻŽ āĻ•āĻŋ?

  • Profile rules for a library are specified in a text file baseline-prof.txt located in the src/main or equivalent directory. āĻĢāĻžāχāϞāϟāĻŋ āĻĒā§āϰāϤāĻŋ āϞāĻžāχāύ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰ⧇, āϝ⧇āĻ–āĻžāύ⧇ āĻāχ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻāĻ•āϟāĻŋ āύāĻŋāϝāĻŧāĻŽ āĻšāϞ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āĻŽā§‡āĻĨāĻĄ āĻŦāĻž āĻ•ā§āϞāĻžāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāĨ¤ āĻāχ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āϏāĻŋāύāĻŸā§āϝāĻžāĻ•ā§āϏ āĻšāϞ āĻŽāĻžāύāĻŦ-āĻĒāĻ āύāϝ⧋āĻ—ā§āϝ ART āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āĻŦāĻŋāĻ¨ā§āϝāĻžāϏ⧇āϰ āĻāĻ•āϟāĻŋ āϏ⧁āĻĒāĻžāϰāϏ⧇āϟ āϝāĻž adb shell profman --dump-classes-and-methods ... āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤ āĻāχ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦāĻž āĻ•ā§āϞāĻžāϏāϕ⧇ āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĻ⧁āϟāĻŋ āĻĢāĻ°ā§āĻŽā§‡āϰ āĻāĻ•āϟāĻŋ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĨ¤

  • A method rule will have the following pattern:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ āĻļā§āϰ⧇āĻŖā§€āϰ āύāĻŋāϝāĻŧāĻŽā§‡ āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύ āĻĨāĻžāĻ•āĻŦ⧇:

    <CLASS_DESCRIPTOR>
    
  • āĻāχ āĻĒāĻĻā§āϧāϤāĻŋāϟāĻŋāϕ⧇ "āĻšāϟ", "āĻ¸ā§āϟāĻžāĻ°ā§āϟāφāĻĒ" āĻŦāĻž "āĻĒā§‹āĻ¸ā§āϟ āĻ¸ā§āϟāĻžāĻ°ā§āϟāφāĻĒ" āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒāϤāĻžāĻ•āĻžāĻ™ā§āĻ•āĻŋāϤ āĻ•āϰāĻž āωāϚāĻŋāϤ āĻ•āĻŋāύāĻž āϤāĻž āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāϤ⧇ āĻāĻ–āĻžāύ⧇ <FLAGS> āĻšāϞ āĻāĻ• āĻŦāĻž āĻāĻ•āĻžāϧāĻŋāĻ• āĻ…āĻ•ā§āώāϰ H , S , āĻāĻŦāĻ‚ P

  • <CLASS_DESCRIPTOR> āĻšāϞ āϏ⧇āχ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻŦāĻ°ā§āĻŖāύāĻžāĻ•āĻžāϰ⧀ āϝ⧇āϟāĻž āϞāĻ•ā§āĻˇā§āϝ āĻ•āϰāĻž āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻ…āĻ¨ā§āϤāĻ°ā§āĻ—āϤāĨ¤ For example, the class androidx.compose.runtime.SlotTable would have a descriptor of Landroidx/compose/runtime/SlotTable; .

  • <METHOD_SIGNATURE> āĻšāϞ āĻĒāĻĻā§āϧāϤāĻŋāϰ āĻ¸ā§āĻŦāĻžāĻ•ā§āώāϰ, āĻāĻŦāĻ‚ āĻāϤ⧇ āύāĻžāĻŽ, āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϧāϰāύ āĻāĻŦāĻ‚ āĻĒāĻĻā§āϧāϤāĻŋāϰ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻĒā§āϰāĻ•āĻžāϰ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āϰāϝāĻŧ⧇āϛ⧇āĨ¤ For example, the method fun isPlaced(): Boolean on LayoutNode has the signature isPlaced()Z .

  • āĻāχ āĻĒā§āϝāĻžāϟāĻžāĻ°ā§āύāϗ⧁āϞāĻŋāϤ⧇ āĻ“āϝāĻŧāĻžāχāĻ˛ā§āĻĄāĻ•āĻžāĻ°ā§āĻĄ ( ** , * , āĻāĻŦāĻ‚ ? ) āĻĨāĻžāĻ•āϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻžāϤ⧇ āĻāĻ•āϟāĻŋ āĻāĻ•āĻ• āύāĻŋāϝāĻŧāĻŽ āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒāĻĻā§āϧāϤāĻŋ āĻŦāĻž āĻļā§āϰ⧇āĻŖā§€āϕ⧇ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰ⧇āĨ¤

āύāĻŋāϝāĻŧāĻŽ āĻ•āĻŋ āĻ•āϰ⧇?

  • A method that has the flag H indicates that this method is a "hot" method, and should be compiled ahead of time.

  • A method that has the flag S indicates that it is a method which is called at startup, and should be compiled ahead of time to avoid the cost of compilation and interpreting the method at startup time.

  • A method that has the flag P indicates that it is a method which is called after startup.

  • āĻāχ āĻĢāĻžāχāϞ⧇ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻāĻ•āϟāĻŋ āĻ•ā§āϞāĻžāϏ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϝ⧇ āĻāϟāĻŋ āĻ¸ā§āϟāĻžāĻ°ā§āϟāφāĻĒ⧇āϰ āϏāĻŽāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāϏ āϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻ–āϰāϚ āĻāĻĄāĻŧāĻžāϤ⧇ āĻšāĻŋāĻĒ⧇ āφāϗ⧇ āĻĨ⧇āϕ⧇ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤

āĻāϟāĻž āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇?

  • Libraries can define these rules which will be packaged in AAR artifacts. āϝāĻ–āύ āĻāĻ•āϟāĻŋ āĻ…ā§āϝāĻžāĻĒ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ āϝāĻžāϤ⧇ āĻāχ āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϗ⧁āϞāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻĨāĻžāϕ⧇, āϤāĻ–āύ āĻāχ āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋāϕ⧇ āĻāĻ•āĻ¤ā§āϰāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻŽāĻžāĻ°ā§āϜ āĻ•āϰāĻž āύāĻŋāϝāĻŧāĻŽāϗ⧁āϞāĻŋ āĻ…ā§āϝāĻžāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻāĻ•āϟāĻŋ āĻ•āĻŽāĻĒā§āϝāĻžāĻ•ā§āϟ āĻŦāĻžāχāύāĻžāϰāĻŋ āĻāφāϰāϟāĻŋ āĻĒā§āϰ⧋āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšāϝāĻŧāĨ¤ ART can then leverage this profile when the app is installed on devices in order to ahead-of-time compile a specific subset of the application to improve the performance of the application, especially the first run. Note that this will have no effect on debuggable applications.

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta08

June 2, 2021

androidx.compose.ui:ui-*:1.0.0-beta08 is released. Version 1.0.0-beta08 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • NestedScrollSource enum āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧāĨ¤ ( Ie321b , b/187055290 )
  • FocusManager.clearFocus(forcedClear = true) is renamed to FocusManager.clearFocus(force = true) ( Ia0c41 )
  • Refactored enum usages to inline classes to avoid issues with exhaustive when statements when new enum values are added. ( I2b5eb )
  • Remove @ExperimentalComposeUiApi from PopupProperties . ( I01fa6 )
  • PointerType was changed from an enum to an inline class ( If5058 )
  • ContentDescription āĻāĻŦāĻ‚ Text semantics āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āφāϰ āĻāĻ•āĻ• āĻŽāĻžāύ āύāϝāĻŧ āĻŦāϰāĻ‚ āϤāĻžāϞāĻŋāĻ•āĻžāĨ¤ āĻāϟāĻŋ āϤāĻžāĻĻ⧇āϰ āĻāĻ•āĻ¤ā§āϰ⧀āĻ•āϰāĻŖ āĻ•āϰāϤ⧇ āϏāĻ•ā§āώāĻŽ āĻ•āϰ⧇ āϝ⧇āĻŽāύ āϤāĻžāϰāĻž āϏāĻ‚āϝ⧁āĻ•ā§āϤāĻŋāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇āĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāϰāĻ“ āĻ­āĻžāϞ āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚ API āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Ica6bf , b/184825850 )
  • Modifier.focusModifier() is deprecated and replaced by Modifier.focusTarget() ( I6c860 )
  • Modifier.onSizeChanged() and Modifier.onGloballyPositioned() are not inlined functions anymore ( I727f6 , b/186109675 )
  • KeyboardType enum is replaced by an inline class. ( I73045 , b/187055290 )
  • āĻāĻ•āϟāĻŋ FocusState āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ FocusState enum ( Iccc1a , b/187055290 )
  • ImeAction enum is replaced by an inline class. ( I18be5 , b/187055290 )
  • PlaceholderVerticalAlign is converted into an inline class. ( If6290 )
  • TextUnitType is an inline class now. ( I4cba9 )
  • AnnotatedString.withAnnotation āĻĢāĻžāĻ‚āĻļāύ āĻāĻ–āύ ExperimentalComposeApi āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ ExperimentalTextApiāĨ¤ ( I0cd0a )
    • TextUnitType āϏāĻš TextUnit āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āĻāĻ–āύ ExperimentalComposeApi āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ ExperimentalTextApiāĨ¤

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed the bug introduced in beta07 where LazyColumn/Row items were displayed partially after the scroll ( I8c9ac , b/188566058 )
  • Now detectDragGesures , detectVerticalGestures , and detectHorizontalGestures will consume the position change automatically, no need to call change.consumePositionChange in the onDrag callbacks ( I42fc4 , b/185096350 , b/187320697 )
  • LayoutModifiers providing alignment lines was fixed. A bug causing the parent not being remeasured when the alignment lines of the children were changing was fixed. ( I4401f , b/174315652 )
  • Modifier.onGloballyPositioned() āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāχ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ⧇āϰ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ•āϗ⧁āϞāĻŋāϕ⧇ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻšā§‡āχāύ⧇ āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āϏāĻŽāĻ¸ā§āϤ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āϞ⧇āφāωāϟ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ•āϗ⧁āϞāĻŋ āύāϝāĻŧ⧎ āĻāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āĻāĻ–āύ āϏāĻ‚āĻļā§‹āϧāĻ•āϗ⧁āϞāĻŋāϰ āĻ•ā§āϰāĻŽ āϕ⧀ āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• āϰāĻŋāĻĒā§‹āĻ°ā§āϟ āĻ•āϰāĻž āĻšāĻŦ⧇ āϤāĻž āĻĒā§āϰāĻ­āĻžāĻŦāĻŋāϤ āĻ•āϰāϛ⧇āĨ¤ ( Ieb67d , b/177926591 )

Version 1.0.0-beta07

18 āĻŽā§‡, 2021

androidx.compose.ui:ui-*:1.0.0-beta07 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta07-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added ViewRootForInspector interface for use in inspector ( Ib70df )
  • SubcomposeLayoutState now supports setting count of reusable slots. The layout will keep up to this count slots active instead of disposing them in order to reuse the slot next time we need a new one ( Ieb981 )
  • KeyEventType enum is replaced by an inline class. ( Id670a , b/187055290 )
  • FocusDirection enum is replaced by an inline class. ( Ib6d03 , b/187055290 , b/184086802 )
  • Introduces ability to hoist the SubcomposeLayout state which allows you to precompose the content into a requires slotId which would make the next measure pass faster as once we try to subcompose with the given slotId next time there will be no composition needed. ( I42580 , b/184940225 )
  • āĻ•ā§āϞāĻŋāĻĒ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Iff80d , b/183408447 )
  • Removed unused APIs related to LayoutInspector support. ( I2ac78 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • LazyColumn/Row will now keep up to 2 previously visible items active (not disposed) even when they are scrolled out already. This allows the component to reuse the active subcompositions when we will need to compose a new item which improves the scrolling performance. ( IE5555 )
  • TextGeomerticTransform and TextDecoration on AnnotatedString will be applied as given. ( I61900 , b/184760917 )

Version 1.0.0-beta06

5 āĻŽā§‡, 2021

androidx.compose.ui:ui-*:1.0.0-beta06 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta06-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Solve Conflict with Navigation Gesture ( I1145e )
  • @ComposeCompilerApi no longer @RequiresOptIn ( Iab690 )
  • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ CollectionInfo āĻāĻŦāĻ‚ CollectionItemInfo āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ API āϝāĻž āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻĒāϰāĻŋāώ⧇āĻŦāĻžāϰ āϜāĻ¨ā§āϝ āϏāĻ‚āĻ—ā§āϰāĻš āĻāĻŦāĻ‚ āĻāϰ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋāϕ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ ( Id54ef , b/180479017 )
  • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ SemanticsActions.ScrollToIndex āĻāĻ•āϟāĻŋ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϏ⧂āĻšā§€ āϏāĻš āφāχāĻŸā§‡āĻŽā§‡āϰ āϏāĻžāĻĨ⧇ āϏ⧂āĻšā§€āĻ•ā§ƒāϤ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋāϰ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻž āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āϕ⧀āĻĄ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āϤāĻžāϞāĻŋāĻ•āĻžāϝāĻŧ āĻāĻ•āϟāĻŋ āφāχāĻŸā§‡āĻŽā§‡āϰ āϏ⧂āĻšā§€ āĻĒ⧇āϤ⧇ SemanticsProperties.IndexForKey āĨ¤ āωāĻ­āϝāĻŧ āĻ•āĻ°ā§āĻŽ LazyList āĻĻā§āĻŦāĻžāϰāĻž āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāĻŋāϤ āĻšāϝāĻŧ.
    • Added SemanticsNodeInteraction.performScrollToIndex that scrolls a list to the given index, and SemanticsNodeInteraction.performScrollToKey that scrolls a list to the item with the given key. ( I4fe63 , b/178483889 , b/161584524 )
  • Added ownerViewId to GraphicLayerInfo ( I19f62 )
  • Added Font() overloads to load fonts from assets, File and FileDescriptor ( I5d382 )
  • Added accessibility API error that allows to mark a node that contains invalid input ( I12997 , b/180584804 , b/182142737 )
  • Added Font() overloads to load fonts from assets, File and FileDescriptor ( I43007 )
  • AnnotatedString save support to TextFieldValue.Saver . AnnotatedString.Builder ( I8cbdc , b/178446304 ) āĻ addTtsAnnotation āĻāĻŦāĻ‚ withAnnotation āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • Added TextUnit constructor function TextUnit(value: Float, type: TextUnitType) ( I7ecce , b/178446304 )

Version 1.0.0-beta05

21 āĻāĻĒā§āϰāĻŋāϞ, 2021

androidx.compose.ui:ui-*:1.0.0-beta05 is released. Version 1.0.0-beta05 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added experimental FocusManager.moveFocus(In) and FocusManager.moveFocus(Out) ( Ic5534 , b/183746743 )
  • Added experimental performTextInputSelection API ( I2dcbb , b/178510628 )
  • InputEventCallback interface is deprecated. It was not possible to use the interface in any public API; and there was no usage of it in the code. ( I34a02 , b/184003208 )
  • Deprecated TextLayoutResult/createTextLayoutResult function. It is an unused public function which was added for testing. The function does not do anything usable for Compose text APIs. The function is now deprecated and will be removed later. ( I80413 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fixed ACTION_SCROLL_FORWARD , ACTION_SCROLL_BACKWARD , accessibilityActionScrollLeft , accessibilityActionScrollUp , accessibilityActionScrollRight and accessibilityActionScrollDown accessibility scroll actions. āĻ¸ā§āĻ•ā§āϰ⧋āϞāϝ⧋āĻ—ā§āϝ āĻļ⧇āώ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, āĻāϟāĻŋ āĻāĻ–āύ āĻĒā§āϰāĻĻāĻ¤ā§āϤ āĻĻāĻŋāĻ• āĻĨ⧇āϕ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰ⧀āύ āĻĻā§āĻŦāĻžāϰāĻž āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻ•āϰāĻŦ⧇āĨ¤ ( Ieccb0 )
  • ui-test-manifest āĻāĻŦāĻ‚ ui-tooling-data āĻĨ⧇āϕ⧇ AndroidManifest āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻāĻ–āύ Android 12 ( I6f9de , b/184718994 ) āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ

Version 1.0.0-beta04

7 āĻāĻĒā§āϰāĻŋāϞ, 2021

androidx.compose.ui:ui-*:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Rename hideSoftwareKeyboard and showSoftwareKeyboard on SoftwareKeyboardController to hide() and show() respectively.
    • Provide the full CompositionLocal interface for LocalSoftwareKeyboardController, allowing it to be set (especially useful in tests) ( I579a6 )
  • LiveRegion accessibility API is added. If node is marked as a live region, the accessibility services will automatically notify the user about its changes ( Idcf6f , b/172590946 )
  • TextOverflow.Visible is introduced. ( IC8f89 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻĒā§āϰāĻžāĻ¨ā§āϤ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻŋāϤ LazyColumn / LazyRow āĻāϰ āφāχāĻŸā§‡āĻŽāϗ⧁āϞāĻŋ āĻĻā§āϰ⧁āϤ āĻĢā§āϞāĻŋāĻ‚ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āϭ⧁āϞāĻ­āĻžāĻŦ⧇ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāύ āĻ•āϰāϞ⧇ āϏāĻŽāĻ¸ā§āϝāĻžāϟāĻŋāϰ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Ie4d13 , b/183877420 )
  • AndroidViewBinding now properly removes fragments inflated via FragmentContainerView when the AndroidViewBinding is removed from the compose hierarchy. ( Ib0248 , b/179915946 )
  • AndroidViewBinding now correctly nests fragments inflated via FragmentContainerView when your ComposeView is within a Fragment , fixing issues with saving and restoring the state of those fragments. ( I70eb0 , b/179915946 )
  • Compose ViewBinding now depends on Fragment 1.3.2 and now consistently shows fragments inflated via FragmentContainerView after configuration changes. ( I0743d , b/179915946 )

Version 1.0.0-beta03

24 āĻŽāĻžāĻ°ā§āϚ, 2021

androidx.compose.ui:ui-*:1.0.0-beta03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Deferred check for ViewTree dependencies of ComposeView ( I8dbbf , b/182466548 )
  • Added optional startX / endX and startY / endY parameters to swipeUp / swipeDown / swipeLeft / swipeRight functions in GestureScope . ( I49e2d , b/182063305 )

Version 1.0.0-beta02

10 āĻŽāĻžāĻ°ā§āϚ, 2021

androidx.compose.ui:ui-*:1.0.0-beta02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta02-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I5951e , b/168778053 )
  • Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I84472 , b/168778053 )
  • Removed the following SemanticsMatcher s:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) ( If16bd )
  • Marked the following SemanticsMatchers as @ExperimentalTestApi:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) ( Ia600c )
  • Added the following SemanticsMatcher s:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) ( I2f502 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Enforce restrictions on public usage of experimental APIs ( I6aa29 , b/174531520 )
  • androidx.compose.ui:ui no longer depends on AppCompat or Fragment. If you are using a ComposeView in your application, and you are using Fragment and/or AppCompat, make sure that you are using AppCompat 1.3+ / Fragment 1.3+ - these versions are needed to correctly set lifecycle and saved state owners required for ComposeView. ( I1d6fa , b/161814404 )
  • Fix for broken rememberSaveable { mutableStateOf(0) } when used inside a destination of navigation-compose. ( I1312b , b/180042685 , b/180701630 )
  • Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 )
  • Fixed rare NoSuchElementException in ComposeRootRegistry 's tearDownRegistry() ( Iddce1 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta01

24 āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰāĻŋ, 2021

androidx.compose.ui:ui-*:1.0.0-beta01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-beta01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āϜ 1.0.0 āĻŦāĻŋāϟāĻž-āĻāϰ āĻĒā§āϰāĻĨāĻŽ āĻĒā§āϰāĻ•āĻžāĻļāĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻ…āύāĻ¸ā§āϟāĻžāĻ°ā§āϟ āĻ•āϞāĻŦā§āϝāĻžāĻ• detectDragGestures āĻ•āϰāϤ⧇ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I67269 , b/179995594 )
  • āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āφāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻ•āĻžāϰ⧀āϗ⧁āϞāĻŋ āφāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āύāϝāĻŧāĨ¤ ( I15744 )
  • MeasureBlocks āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ MeasurePolicy āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻāĻ•āϟāĻŋ āĻŽāϜāĻžāϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻšāϝāĻŧ⧇ āωāϠ⧇āϛ⧇āĨ¤ āϞ⧇āφāωāϟ APIs āĻĒāϰāĻŋāĻŽāĻžāĻĒ āύ⧀āϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ/āϏāϰāϞ⧀āĻ•ā§ƒāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Icab48 , b/167662468 , b/156751158 )
  • InteractionState has been replaced with [Mutable]InteractionSource
    • Interfaces are responsible for emitting / collecting Interaction events.
    • Button āĻāĻŦāĻ‚ Modifier.clickable() āĻāϰ āĻŽāϤ āĻ•āĻŽā§āĻĒā§‹āύ⧇āĻ¨ā§āĻŸā§‡ interactionState = remember { InteractionState() } āĻĒāĻžāϏ āĻ•āϰāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇, interactionSource = remember { MutableInteractionSource() } āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤
    • āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇: Interaction.Pressed in interactionState āφāĻĒāύāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ InteractionSource-āĻ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ, āϝ⧇āĻŽāύ InteractionSource.collectIsPressedAsState()āĨ¤
    • āϜāϟāĻŋāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āφāĻĒāύāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻ…ā§āϝāĻžāĻ•āĻļāύ⧇āϰ āĻ¸ā§āĻŸā§āϰ⧀āĻŽ āĻĒāĻ°ā§āϝāĻŦ⧇āĻ•ā§āώāĻŖ āĻ•āϰāϤ⧇ InteractionSource.interactions āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ See the InteractionSource documentation and samples for more information.
    • ( I85965 , b/152525426 , b/171913923 , b/171710801 , b/174852378 )
  • Add AccessibilityMananger interface and LocalAccessibilityMananger in CompositionLocals ( I53520 )
  • Removed deprecated LayoutCoordinates methods, use function instead of the property for positionInParent and boundsInParent ( I580ed , b/169874631 , b/175142755 )
  • Typealiases replaced by underlying types:
    • ColorStop is now Pair<Float, Color>
    • SpanStyleRange is now `AnnotatedString.Range
    • ParagraphStyleRange is now AnnotatedString.Range<ParagraphStyle>
    • StringAnnotation is now AnnotatedString.Range<String>
    • ( I8dd1a )
  • āύāĻŋāĻŽā§āύ āĻ¸ā§āϤāϰ⧇āϰ āĻĒāĻžāĻ ā§āϝ āωāĻĒāĻžāĻĻāĻžāύ āϝ⧇āĻŽāύ CoreTextField āĻĨ⧇āϕ⧇ āχāύāĻĒ⧁āϟ āϏ⧇āĻļāύ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ TextInputSession āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I8817f , b/177662148 )
  • Placeable āĻāĻ–āύ āĻĒāϰāĻŋāĻŽāĻžāĻĒāĻŋāϤ āφāĻ•āĻžāϰ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰ⧇, āϝāĻž āϚāĻžāχāĻ˛ā§āĻĄ āϞ⧇āφāωāϟāϟāĻŋ āφāϏāϞ⧇ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻ•āϰ⧇āϛ⧇ āϤāĻž āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧇āĨ¤ This size might not respect the measurement constraints. ( Ib2729 , b/172560206 , b/172338608 )
  • āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ—ā§‹āĻˇā§āĻ ā§€ āϏāĻ‚āĻļā§‹āϧāĻ• āϝ⧋āĻ— āĻ•āϰ⧁āύ āϝāĻž āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āĻŸā§āϝāĻžāĻŦ āĻŦāĻž āϰ⧇āĻĄāĻŋāĻ“ āĻŦā§‹āϤāĻžāĻŽā§‡āϰ āϏāĻ‚āĻ—ā§āϰāĻš āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ ( Ie5c29 )
  • compositionLocalOf āĻāĻŦāĻ‚ staticCompositionLocalOf āϜāĻ¨ā§āϝ defaultFactory āĻāĻ–āύ āϐāĻšā§āĻ›āĻŋāĻ• āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

    āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāϗ⧁āϞāĻŋ āĻ…-āύ⧂āϞāϝ⧋āĻ—ā§āϝ āĻĒā§āϰāĻ•āĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻŽā§āĻ­āĻžāĻŦā§āϝ āϟāĻžāχāĻĒ āĻ¤ā§āϰ⧁āϟāĻŋ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧ āϝ⧇āĻ–āĻžāύ⧇ āϕ⧋āύāĻ“ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ•āĻžāϰāĻ–āĻžāύāĻž āϏāϰāĻŦāϰāĻžāĻš āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻ…-āύ⧂āϞāϝ⧋āĻ—ā§āϝ āϟāĻžāχāĻĒ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āύāĻžāϞ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰāĻŦ⧇āĨ¤

    For nullable types consider supplying { null } as the default factory.

    We do not recommend using locals with non-nullable types unless a sensible default can be provided. āϝāĻĻāĻŋ āϕ⧋āύ āϏāĻ‚āĻŦ⧇āĻĻāύāĻļā§€āϞ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āύāĻž āĻĨāĻžāϕ⧇, defaultFactory āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻž āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻžāϰ āĻŽāĻžāύ⧇ āĻšāϞ āϝ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻ­ā§‹āĻ•ā§āϤāĻžāĻĻ⧇āϰ āĻāϟāĻŋ āĻĒā§āϰāĻĻāĻžāύ⧇āϰ āωāĻĒāϰ āĻāĻ•āϟāĻŋ āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āĻĨāĻžāĻ•āĻŦ⧇ āϝāĻž āϟāĻžāχāĻĒ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ ( Ifbd2a )

  • Deprecated methods from ui modules were removed ( I646f6 )

  • āφāĻ•āĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύāĻ•āĻžāϰ⧀āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Modifier.width/height/size were renamed to requiredWidth/requiredHeight/requiredSize. Modifier.preferredWidth/preferredHeight/preferredSize-āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ width/height/size āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I5b414 )

  • Modifier.tapGestureFilter āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇⧎ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Modifier.pointerInput { detectTapGestures(...) } āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I266ed , b/175294473 )

  • partial consumption was removed from pointer input system. āφāĻ‚āĻļāĻŋāĻ• āĻ–āϰāϚ āϏāĻŽāĻ¨ā§āĻŦāϝāĻŧ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ āωāĻĒāĻžāϝāĻŧ āĻšāϞ Modifier.nestedScroll. ( Ie9c9b )

  • Orientation has been moved to foundation package. VelocirtTracker ui.gesture āĻĨ⧇āϕ⧇ ui.input.pointer-āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iff4a8 , b/175294473 )

  • imageResource and vectorResource are now extension functions on ImageBitmap and ImageVector companions respectively. load{Image,Vector,Font}Resource functions have been deleted. ( I89130 )

  • AnimationClockObservable and subclasses have been removed. AnimatedFloat has been removed. ( Icde52 , b/177457083 )

  • Providers has been renamed to CompositionLocalProvider

    • āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āφāϰ āĻāĻ•āϟāĻŋ āϕ⧀ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āύāĻž, āĻāĻŦāĻ‚ āĻ…āĻŦāϚāϝāĻŧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
    • currentCompositeKeyHash āĻāĻ•āϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āϟāĻĒ āϞ⧇āϭ⧇āϞ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āϟāĻĒ āϞ⧇āϭ⧇āϞ āĻĒā§āϰāĻĒāĻžāĻ°ā§āϟāĻŋāϤ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤
    • CompositionData āĻāĻŦāĻ‚ CompositionGroup āϕ⧇ androidx.compose.runtime.tooling āύāĻžāĻŽāĻ¸ā§āĻĨāĻžāύ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
    • ComposableLambda āĻāĻ•āϟāĻŋ āĻ•āĻ‚āĻ•ā§āϰāĻŋāϟ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āφāϰ āϟāĻžāχāĻĒ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āύ⧇āχāĨ¤
    • ComposableLambdaN āĻāĻ•āϟāĻŋ āĻ•āĻ‚āĻ•ā§āϰāĻŋāϟ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āφāϰ āϟāĻžāχāĻĒ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āύ⧇āχāĨ¤
    • The snapshotFlow function has been moved to the androidx.compose.runtime namespace
    • the merge method of SnapshotMutationPolicy is no longer experimental
    • @TestOnly āĻļā§€āĻ°ā§āώ āĻ¸ā§āϤāϰ⧇āϰ clearRoots āĻĢāĻžāĻ‚āĻļāύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϰ āφāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤
    • keySourceInfoOf āĻāĻŦāĻ‚ resetSourceInfo āĻĢāĻžāĻ‚āĻļāύ āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ They are no longer necessary.
    • Composer.collectKeySourceInformation has been removed. āĻāϰ āφāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤
    • isJoinedKey, joinedKeyLeft, and joinedKeyRight methods have been removed. They are no longer necessary.
    • Various top level APIs have been moved and reorganized into different files. āϕ⧋āϟāϞāĻŋāύ⧇āϰ āĻĢāĻžāχāϞ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻžāϰ āĻ•āĻžāϰāϪ⧇, āĻāϟāĻŋ āĻŦāĻžāχāύāĻžāϰāĻŋ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāϤāĻž āϭ⧇āϙ⧇ āĻĻ⧇āĻŦ⧇ āĻ•āĻŋāĻ¨ā§āϤ⧁ āωāĻ¤ā§āϏ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝ āύāϝāĻŧ, āϤāĻžāχ āĻŦ⧇āĻļāĻŋāϰāĻ­āĻžāĻ— āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āϜāĻ¨ā§āϝ āϏāĻŽāĻ¸ā§āϝāĻž āĻšāĻ“āϝāĻŧāĻž āωāϚāĻŋāϤ āύāϝāĻŧāĨ¤
    • ( I99b7d , b/177245490 )
  • ComponentActivity.setContent() was removed from compose:ui. Use the one from androidx.activity:activity-compose:1.3.0-alpha01 . viewModel() and LocalViewModelStoreOwner were removed from compose:ui. Use the ones from androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 ( I6f36b )

  • Modifier.scrollable has been reworked. āĻāĻ–āύ āĻāϟāĻŋ ScrollableController āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻ¸ā§āĻ•ā§āϰ⧋āϞāϝ⧋āĻ—ā§āϝ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ ( I4f5a5 , b/174485541 , b/175294473 )

  • CustomEvens support from PointerInputModifier has been removed ( I02707 , b/175294473 )

  • SnapshotStateObserver is not Experimental anymore ( Id2e6a )

  • āĻ•āĻŋāϛ⧁ āĻĒā§‚āĻ°ā§āĻŦ⧇ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤ API āĻŽā§āϛ⧇ āĻĢ⧇āϞāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Ice5da , b/178633932 )

  • longPressGestureFilter and doubleClickGestureFilter have been removed. use Modifier.pointerInput with helper functions eg detectTapGestures ( I2fedf , b/175294473 )

  • Removed String.format API refactored usages in various toString methods to not leverage String.format internally. ( Id1290 )

  • Removed dp assertions ( I798d2 )

  • Removed androidx.compose.runtime:runtime-dispatch ( I55feb )

  • āĻĒāĻžāĻ ā§āϝ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāϗ⧁āϞāĻŋ āĻāĻ–āύ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻšā§‡āĻ• āĻ•āϰ⧇ ( I13777 , b/179648629 )

  • āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ runBlockingWithManualClock ( I15cdc , b/179664814 )

  • Modifier.verticalScroll()/horizontalScroll() āĻ āĻ¸ā§āĻ•ā§āϰ⧋āϞ āĻĒāϜāĻŋāĻļāύ āĻāĻ–āύ Ints ( I81298 ) āĻĻāĻŋāϝāĻŧ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇

  • FlingConfig-āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ FlingBehavior āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻ–āύ āĻĒā§‚āĻ°ā§āĻŦāύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ Decays-āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏāĻžāϏāĻĒ⧇āĻ¨ā§āĻĄ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰāĻžāϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧāĨ¤ ( I02b86 , b/175294473 )

  • Added a helper function that is helpful to set the same action for all ImeAction callbacks ( I63447 , b/179226323 )

  • āϏāĻŽāĻ¸ā§āϤ āĻĒāĻžāĻ ā§āϝ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĨ⧇āϕ⧇ āϏāĻĢā§āϟāĻ“āϝāĻŧā§āϝāĻžāϰāĻ•āĻŋāĻŦā§‹āĻ°ā§āĻĄ āĻ•āĻ¨ā§āĻŸā§āϰ⧋āϞāĻžāϰ āĻ•āϞāĻŦā§āϝāĻžāĻ• āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻļā§€āĻ˜ā§āϰāχ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ API āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāĻŦ⧇⧎ ( IAe869 , b/168778053 )

  • FontSpan and FontWeigthStyleSpan are no longer used and removed. ( Ie5b56 , b/177423444 )

  • Made the following Material API changes:

    • Added contentPadding parameter to Top/BottomAppBar to allow customizing the default padding.
    • Reordered parameters in BackdropScaffold to follow API guidelines for required parameters being before optional parameters.
    • Moved icon parameter in BottomNavigationItem to be after selected and onClick .
    • Renamed alwaysShowLabels parameter in BottomNavigationItem to alwaysShowLabel .
    • Renamed bodyContent parameters in a few components to just content .
    • Reordered parameters in ButtonDefaults.buttonColors() . Please note that because the type of the parameters have not changed, this will not cause an error in your code - please ensure you are either using named parameters or update the ordering manually, otherwise your code will not work the same as previously.
    • Added secondaryVariant parameter to darkColors() . This color is typically the same as secondary in dark theme, but adding for consistency and further customization.
    • Removed ElevationDefaults and animateElevation() from the public API surface since they were not commonly used / useful.
    • Renamed onValueChangeEnd in Slider to onValueChangeFinished and made it nullable.
    • Renamed text parameter in Snackbar to content for consistency.
    • Added contentPadding parameter to DropdownMenuItem to allow customizing the default padding and made content be an extension on RowScope .
    • Renamed ModalDrawerLayout to ModalDrawer .
    • Renamed BottomDrawerLayout to BottomDrawer .
    • ( I1cc66 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added API to use AnimatedVectorDrawable resources in Compose. Use animatedVectorResource to load an <animated-vector> XML as an AnimatedImageVector and animate it with painterFor ( I8ea91 )
  • Added new LocalSoftwareKeyboardController composition local API to replace previous SoftwareKeyboardController interface on TextField. ( I658b6 , b/168778053 )

Version 1.0.0-alpha12

āĻĢ⧇āĻŦā§āϰ⧁āϝāĻŧāĻžāϰ⧀ 10, 2021

androidx.compose.ui:ui-*:1.0.0-alpha12 is released. Version 1.0.0-alpha12 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Support for ViewGroups was removed from UiApplier. The Deprecated emitView composables were removed. ( Ifb214 )
  • āύāϤ⧁āύ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āϏāύāĻžāĻ•ā§āϤāĻ•āϰāĻŖ āϕ⧋āϰ⧋āϟāĻŋāύ āĻ•āĻ–āύ āĻĒ⧁āύāϰāĻžāϝāĻŧ āϚāĻžāϞ⧁ āĻ•āϰāĻž āωāϚāĻŋāϤ āϤāĻž āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ Modifier.pointerInput-āĻāϰ āĻāĻ–āύ āĻŽāύ⧇ āϰāĻžāĻ–āĻžāϰ āϕ⧀ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ ( I849cd )
  • CompositionReference renamed to CompositionContext ( I53fcb )
  • Bounds has been renamed to DpRect ( I4b32a )
  • āĻŸā§‡āĻ¸ā§āϟāĻŋāĻ‚ āφāĻĒāĻĄā§‡āϟ: hasText() āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ āχāύāĻĒ⧁āϟ āĻāĻŦāĻ‚ āϞ⧇āĻŦ⧇āϞ/āχāĻ™ā§āĻ—āĻŋāϤ/āĻĒā§āϞ⧇āϏāĻšā§‹āĻ˛ā§āĻĄāĻžāϰ āĻŸā§‡āĻ•ā§āϏāϟ āωāĻ­āϝāĻŧāχ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāĻŦ⧇ ( Iab803 )
  • viewModel() composable and LocalViewModelStoreOwner were moved to androidx.lifecycle.viewmodel.compose. You will now need to add a separate dependency androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 in order to use it. ( I7a374 )
  • Allow nullable action in AccessibilityAction, change action label in AccessibilityAction and CustomAccessibilityAction from CharSequence to String ( I0dc82 )
  • In order to better match naming conventions with ImageBitmap and ImageVector, ImagePainter has been renamed to BitmapPainter to parallel VectorPainter. ( Iba381 , b/174565889 )
  • āĻāĻ–āύ āĻāĻ•āϟāĻŋ āϝ⧁āĻ•ā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦ⧇ āϏāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āϏāĻš āφāϰāĻ“ āĻ­āĻžāϞ āϏāĻžāĻŦāĻ¸ā§āĻŸā§āϰāĻŋāĻ‚ āĻŸā§‡āĻ¸ā§āϟ API ( Icbe78 )
  • Added an Modifier.focusOrder() that accepts a FocusRequester without specifying a custom focus order a lambda. This is useful when we only need to specify a reference but not a custom focus order for a composable ( I4f52a , b/179180978 )
  • ComponentActivity.setContent has moved to androidx.activity.compose.setContent in the androidx.activity:activity-compose module. ( Icf416 )
  • Destructuring and copy() methods have been removed from several classes where they were rarely used. ( I26702 , b/178659281 )
  • Moved Popup to be platform specific. AndroidPopupProperties has been renamed to PopupProperties, and isFocusable has been moved to a focusable parameter in PopupProperties ( Ieeea5 )
  • Moved Dialog to be platform specific. Renamed AndroidDialogProperties to DialogProperties. ( I4ef69 , b/179138130 )
  • Made LayoutNode internal ( I8a7b1 , b/175103944 )
  • Constraints.enforce was replaced with Constraints.constrain. ( I8b8ea )
  • loadFontResource āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Use fontResource instead. imageResource, loadImageResource, vectorResource, and loadVectorResource are deprecated. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĒ⧇āχāĻ¨ā§āϟāĻžāϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I6b809 )
  • āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻžāϰ āĻ•āĻžāϰāϪ⧇, ScrollAxisRange āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻāĻ–āύ āϏāϰāĻžāϏāϰāĻŋ āĻĢā§āϞ⧋āϟ āĻŽāĻžāύ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻ˛ā§āϝāĻžāĻŽā§āĻŦāĻĄāĻžāϏ āϰāĻŋāϟāĻžāĻ°ā§āύāĻŋāĻ‚ āĻĢā§āϞ⧋āϟ āύ⧇āϝāĻŧāĨ¤ ( If4a35 , b/178657186 )
  • Added EditableText semantics to mark editable input text of the text field for accessibility and corresponding test methods to check the semantics ( I8e07a )
  • Made OwnerLayer/OwnerScope/OwnerSnapshotObserver internal ( I4ffaf , b/175103944 )
  • toIntPx() was renamed to roundToPx(). ( I9b7e4 , b/173502290 )
  • IntBounds āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ IntRect āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ API āωāĻ¨ā§āύāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I1f6ff )
  • Snapshot API was updated to be more consistent with API guideline as well as hiding internal implementation classes from the public API. ( Id9e32 )
  • Added expand and collapse semantics actions. Added expand and halfExpand in ModalBottomSheetState ( Ib5064 )
  • Modifier.dragGestureFilter āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Use Modifier.pointerInput { detectDragGestures (...)} instead. āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻ­āĻžāĻŦ⧇, āĻāĻ•āϟāĻŋ āĻ…āĻ•ā§āώ āĻŸā§‡āύ⧇ āύ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ Modifier.draggable āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( I0ba93 , b/175294473 )
  • āĻĒāϰāĻŋāĻŦ⧇āĻˇā§āϟāύ⧇āϰ āϏāĻžāĻĨ⧇ āĻŽā§‡āϞāĻžāύ⧋āϰ āϜāĻ¨ā§āϝ āĻĒāϰāĻŋāĻŦ⧇āĻˇā§āϟāύ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ -> āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻĒ⧁āύāσāύāĻžāĻŽāĨ¤ āĻ…ā§āϝāĻžāĻŽā§āĻŦāĻŋāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āύāĻžāĻŽ āĻ›āĻŋāϞ āĻ…ā§āϝāĻžāĻŽā§āĻŦāĻŋāϝāĻŧ⧇āĻ¨ā§āϟāĻĢ⧁, āĻāĻ–āύ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύāϞ⧋āĻ•āĻžāϞ⧇āϰ āύāĻžāĻŽ āϞ⧋āĻ•āĻžāϞāĻĢ⧁āĨ¤ ( I2d55d )
  • The deprecated BaseTextField is now removed. Use BasicTextField instead. ( I71368 )
  • āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻ­āĻŋāĻ¤ā§āϤāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇. ( I7892b )
  • āĻāĻ•āχāĻ­āĻžāĻŦ⧇ āφāĻŽāϰāĻž āφāϗ⧇ āϝ⧇āĻ­āĻžāĻŦ⧇ state { 0 } āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ āĻŽā§āϛ⧇ āĻĻāĻŋāϝāĻŧ⧇āĻ›āĻŋāϞāĻžāĻŽ āĻāĻŦāĻ‚ āĻāĻ–āύ remember { mutableStateOf(0) } āφāĻŽāϰāĻž savedInstanceState { 0 } composable āϏāϰāĻŋāϝāĻŧ⧇ āĻĢ⧇āϞāϤ⧇ āϝāĻžāĻšā§āĻ›āĻŋāĨ¤ āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āφāĻĒāύāĻžāϰ rememberSaveable { mutableStateOf(0) } āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻāĻŦāĻ‚ āĻĒ⧁āύāϰ⧁āĻĻā§āϧāĻžāϰ āĻ•āϰāĻŦ⧇ āϝāĻĻāĻŋ MutableState-āĻāϰ āĻ­āĻŋāϤāϰ⧇ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϟāĻžāχāĻĒāϟāĻŋ āĻŦāĻžāĻ¨ā§āĻĄā§‡āϞ⧇ āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤ If previously you were passing a custom saver object now you need to use a new overload of rememberSaveable which has stateSaver parameter. The usage will look like this: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } ( Ib4c26 , b/177338004 )
  • Added password semantics for accessibility ( I231ce )
  • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ProgressBarRangeInfo. āĻ…āύāĻŋāĻ°ā§āϧāĻžāϰāĻŋāϤ āĻĒā§āϰāĻŦ⧇āĻļāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ…āĻ—ā§āϰāĻ—āϤāĻŋ āĻŦāĻžāϰ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāϤ⧇ ( I6fe05 )
  • emptyContent() āĻāĻŦāĻ‚ (@Composable () -> Unit).orEmpty() āχāωāϟāĻŋāϞāĻŋāϟāĻŋāϗ⧁āϞāĻŋāϕ⧇ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āϤāĻžāĻĻ⧇āϰ āφāϰ āϕ⧋āύ āχāϤāĻŋāĻŦāĻžāϚāĻ• āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻž āĻĒā§āϰāĻ­āĻžāĻŦ āĻŦāĻž āĻŽāĻžāύ āύ⧇āχ ( I0484d )
  • snapshotFlow and withMutableSnapshot are no longer experimental ( I6a45f )
  • Recomposers can now be closed. āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āϚāĻžāχāĻ˛ā§āĻĄ āϕ⧋āϰ⧋āϟāĻŋāύ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āύāĻž āĻšāĻ“āϝāĻŧāĻž āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻ•ā§āϞ⧋āϜāĻĄ āϰāĻŋāĻ•āĻŽā§āĻĒā§‹āϜāĻžāϰāϰāĻž āĻĒ⧁āύāĻ°ā§āĻ—āĻ āύ āϚāĻžāϞāĻŋāϝāĻŧ⧇ āϝāĻžāĻŦ⧇āĨ¤ Recomposer.shutDown āĻŦāĻ¨ā§āϧ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦāĻŋāĻĒāϰ⧀āϤ⧇ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ib6d76 )
  • UiSavedStateRegistry was renamed to SaveableStateRegistry, AmbientUiSavedStateRegistry was renamed to AmbientSaveableStateRegistry and both moved to androidx.compose.runtime.saveable package. ( I30224 )
  • Artefact androidx:compose:runtime:runtime-saved-instance-state-āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ androidx:compose:runtime:runtime-saveable ( I6dcac )
  • Many longstanding deprecated APIs in the ui package are deleted. ( I2f2dc )
  • āĻ•āĻŽā§āĻĒā§‹āϜ:āϰāĻžāύāϟāĻžāχāĻŽ-āĻĄāĻŋāϏāĻĒā§āϝāĻžāϚ āφāĻ°ā§āϟāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟ āĻāĻ–āύ āĻ…āĻŦāĻšā§‡āϞāĻŋāϤāĨ¤ MonotonicFrameClock āĻāĻ–āύ compose:runtime āĻ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇ āĻāĻŦāĻ‚ AndroidUiDispatcher compose:ui āĻ āĻĒāĻžāĻ“āϝāĻŧāĻž āϝāĻžāĻŦ⧇āĨ¤ ( Ib5c36 )
  • Outline.* classes are not data classes anymore ( I4879e , b/178001427 )
  • Removed view.captureToImage() without any replacement. ( I7fcd2 )
  • Introduced ColorMatrix API used to modify rgb values of source content Refactored ColorFilter API to be an interface and match the implementation of PathEffect. ( Ica1e8 )
  • Add layoutDirection param to Shape's createOutline. This allows to create layout direction aware shapes. ( I57c20 , b/152756983 )
  • onImeActionPerformed āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ use KeyboardActions instead ( If0bbd , b/179071523 )
  • āĻāĻ•āϟāĻŋ InfiniteAnimationPolicy coroutine āĻĒā§āϰāϏāĻ™ā§āĻ— āωāĻĒāĻžāĻĻāĻžāύ āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻ…āϏ⧀āĻŽ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϗ⧁āϞāĻŋāϤ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇⧎ ComposeTestRule āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻĒāϰ⧀āĻ•ā§āώāĻž āϚāĻžāϞāĻžāύ⧋ āĻ›āĻžāĻĄāĻŧāĻž āĻĄāĻŋāĻĢāĻ˛ā§āϟāĻ­āĻžāĻŦ⧇ āϕ⧋āύ⧋ āύ⧀āϤāĻŋ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ ( I50ec4 , b/151940543 )
  • canDrag has been removed from the Modifier.scrollable. ( Id66e7 , b/175294473 )
  • Renamed LayoutCoordinates.parentCoordinates to LayoutCoordinates.parentLayoutCoordinates to allow for a new parentCoordinates property. The parentCoordinates property now offers the parent modifier's LayoutCoordintes. This will make for more complete use cases for onSizeChanged() and onGloballyPositioned() ( Idfbfd , b/177926591 )
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter and pressIndicaitonGestureFilter have been deprecated. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ detectTapGestures āĻĢāĻžāĻ‚āĻļāύ āϏāĻš Modifier.clickable āĻŦāĻž Modifier.pointerInput āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I6baf9 , b/175294473 )
  • SaveableStateRegistry's unregisterProvider was removed. Instead registerProvider() now returns SaveableStateRegistry.Entry object which you can use to unregister ( Ic4274 , b/178583739 )
  • rememberSavedInstanceState() was renamed to rememberSaveable() and moved to androidx.compose.runtime.saveable package. ( I1366e , b/177338004 )
  • Removed CoreText and CoreTextField from public API
    • Removed deprecated SelectionContainer overload
    • ( I99c19 )
  • Tests in which Compose is used in hierarchies that are added/removed directly to the WindowManager are now more stable. ( Ie81ed , b/175765614 )
  • Removed Recomposer.current(). [āĻŦāĻŋāĻŽā§‚āĻ°ā§āϤ] āĻ•āĻŽā§āĻĒā§‹āϜāĻ­āĻŋāω āĻāĻ–āύ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āĻ…āϞāϏāĻ­āĻžāĻŦ⧇ āϤ⧈āϰāĻŋ āĻ•āϰāĻž, āωāχāĻ¨ā§āĻĄā§‹āϰ āϜāĻ¨ā§āϝ ViewTreeLifecycleOwner āĻĻā§āĻŦāĻžāϰāĻž āϚāĻžāϞāĻŋāϤ āωāχāĻ¨ā§āĻĄā§‹-āĻ¸ā§āϕ⧋āĻĒāĻĄ āϰāĻŋāĻ•āĻŽā§āĻĒā§‹āϜāĻžāϰāĨ¤ Recomposition and withFrameNanos-based animation ticks are paused while the host Lifecycle is stopped. ( I38e11 )
  • Recomposer.runningRecomposers now offers a global StateFlow of read-only RecomposerInfo for observing ongoing composition state in the process. Prefer this API to Recomposer.current(), which is now deprecated. ( if8ebe )
  • Saver, listSaver(), mapSaver(), autoSaver androidx.compose.runtime.savedinstancestate āĻĨ⧇āϕ⧇ androidx.compose.runtime.saveable ( I77fe6 ) āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
  • EditCommands accept AnnotatedString. āϤāĻŦ⧇ āĻāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ API āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻāĻŦāĻ‚ āĻŦāĻšā§-āĻļ⧈āϞ⧀ āĻĒāĻžāĻ ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāĻ–āύāĻ“ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤ ( I4c3ea )
  • Uptime and Duration have been removed. ( Ib9bf4 , b/177420019 )
  • CompositionData.asTree() and related APIs moved to separate ui-tooling-data module and marked as experimental ( Ic95b8 )
  • Parameters on RounderCornerShape, CutCornerShape and CornerBasedShape were renamed from left/right to start/end in order to support the shape's auto mirroring in the rtl direction. āϝāĻ–āύ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧ-āĻŽāĻŋāϰāϰāĻŋāĻ‚ āĻ•āĻžāĻ™ā§āĻ–āĻŋāϤ āĻšāϝāĻŧ āύāĻž āĻāĻŽāύ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻ…ā§āϝāĻžāĻŦāϏ⧋āϞ⧁āϟ āϰāĻžāωāĻ¨ā§āĻĄāĻžāϰ āĻ•āĻ°ā§āύāĻžāϰāĻļ⧇āĻĒ āĻāĻŦāĻ‚ āĻ…ā§āϝāĻžāĻŦāϏ⧋āϞ⧁āϟāĻ•āĻžāϟ āĻ•āĻ°ā§āύāĻžāϰāĻļ⧇āĻĒ āϚāĻžāϞ⧁ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ ( I61040 , b/152756983 )
  • āĻ•āĻŽā§āĻĒā§‹āϜ āĻ•āĻŽā§āĻĒāĻžāχāϞāĻžāϰ āĻĒā§āϞāĻžāĻ—āχāύ āϟāĻžāĻ°ā§āϗ⧇āϟ āĻāĻĒāĻŋāφāχ āĻāĻ•āϟāĻŋ āĻ•āĻ‚āĻ•ā§āϰāĻŋāϟ āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϰāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏāϟāĻŋ āφāϰ āϟāĻžāχāĻĒ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āύāĻžāĨ¤

    This is an internal change that should not effect source code compatibility but is a binary breaking change. ( I3b922 , b/169406779 )

  • Remove unintentionally public StringBuilder.deleteAt function ( Id6ed9 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • ComposeViews placed in view hierarchies that are children of another composition now host child compositions of their ancestors ( I92883 )
  • Updated compose's imageFromResource API to reuse the resource drawable cache when loading ImageBitmap objects. ( If3627 , b/178751994 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha11

28 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2021

androidx.compose.ui:ui-*:1.0.0-alpha11 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha11-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • WithConstraints was reworked as BoxWithConstraints and moved to foundation.layout. ( I9420b , b/173387208 )
  • Key.DPadUp is deprecated. Use Key.DirectionUp instead. ( Iab335 , b/177954892 )
  • Owner interface from now on internal. ( If8e35 )
  • Added FocusManager.moveFocus() API to move focus programmatically. ( I045cb , b/177681839 )
  • Changes PopupPositionProvider to use window-relative coordinates, not global coordinates. Renames parentGlobalBounds to anchorBounds, and changes windowGlobalBounds to be windowSize: IntSize ( I2994a )
  • āϏāĻŽāϝāĻŧāĻ•āĻžāϞ āĻāĻŦāĻ‚ āφāĻĒāϟāĻžāχāĻŽ āϞāĻ‚ āĻŽāĻŋāϞāĻŋāϏ⧇āϕ⧇āĻ¨ā§āĻĄā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāĻŦ⧇ āĻāĻŦāĻ‚ āĻāχ āϧāĻžāĻĒāϟāĻŋ āϏ⧇āχ āĻ•ā§āϞāĻžāϏāϗ⧁āϞāĻŋāϤ⧇ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āĻŸā§‡āϰ āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āϝāĻŧāĨ¤ ( Ia33b2 , b/175142755 , b/177420019 )
  • AmbientSavedStateRegistryOwner was added similarly to already existing AmbientLifecycleOwner and AmbientViewModelStoreOwner ( I9a3e8 , b/176756365 )
  • Updated vector graphics API to support parsing of tinting applied to the root of vector graphics. ( Id9d53 , b/177210509 )
  • Added toolType to PointerInputChange to differentiate devices ( Iac787 , b/175142755 )
  • AmbientWindowManager is renamed to AmbientWindowInfo ( I2686a , b/177084714 , b/177084983 )
  • āĻ—ā§āϞ⧋āĻŦāĻžāϞ āϕ⧋āĻ…āĻ°ā§āĻĄāĻŋāύ⧇āϟ āĻĒāĻĻā§āϧāϤāĻŋ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āύāϤ⧁āύ āωāχāĻ¨ā§āĻĄā§‹-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ¸ā§āĻĨāĻžāύāĻžāĻ™ā§āĻ• āĻĒāĻĻā§āϧāϤāĻŋ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( IE284 )
  • Added Modifier.toolingGraphicsLayer which adds a graphics layer modifier when inspection is turned on. ( I315df )
  • FocusRequester.createRefs is now marked as experimental as it might change. ( I2d898 , b/177000821 )
  • SemanticsPropertyReceiver.hidden was renamed to invisibleToUser and marked @ExperimentalComposeUiApi. AccessibilityRangeInfo was renamed to ProgressBarRangeInfo. stateDescriptionRange was renamed to progressBarRangeInfo. AccessibilityScrollState was renamed to ScrollAxisRange. horizontalAccessibilityScrollState was renamed to horizontalScrollAxisRange. verticalAccessibilityScrollState was renamed to verticalScrollAxisRange. ( Id3148 )
  • PointerInputData āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ PointerInputData-āĻāϰ āϏāĻŽāĻ¸ā§āϤ āĻ•ā§āώ⧇āĻ¤ā§āϰ āĻĻ⧇āĻ“āϝāĻŧāĻžāϰ āϜāĻ¨ā§āϝ PointerInputChange āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ PointerInputEvent āĻāĻŦāĻ‚ PointerInputEventData āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āϏ⧇āϗ⧁āϞāĻŋ āϕ⧋āύ⧋ āĻĒāĻžāĻŦāϞāĻŋāĻ• API-āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āύāĻžāĨ¤ ( Ifff97 , b/175142755 )
  • Updated GraphicsLayerScope implement density to support conversions of dp into raw pixels. ( Ied528 , b/176819695 )
  • Updated matrix API to follow row major ordering and provide index constants to assist with conversions between different matrix representations to match framework conversion logic between SkMatrix and Matrix4 internally. ( I432e6 )
  • Removed experimental monotonicFrameAnimationClockOf methods ( Ib753f , b/170708374 )
  • Move String.fintPrecedingBreak and String.fingFollowingBreak to InternalTextApi. ( I657c4 )
  • androidx.compose.ui.util.isSurrogatePair has been removed from public API. ( Ia9494 )
  • TransformedText.transformedText āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ TransformedText.text āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • TransformedText āφāϰ āĻāĻ•āϟāĻŋ āĻĄā§‡āϟāĻž āĻ•ā§āϞāĻžāϏ āύāϝāĻŧ ( Ie672a )
  • āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•ā§āϞāĻžāϏ āĻĨ⧇āϕ⧇ data class āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇:
    • InlineTextContent
    • LocaleList ( I605c7 )
  • āύāĻŋāĻŽā§āύāϞāĻŋāĻ–āĻŋāϤ āĻ•ā§āϞāĻžāϏāϗ⧁āϞāĻŋ āφāϰ āĻĄā§‡āϟāĻž āĻ•ā§āϞāĻžāϏ āύāϝāĻŧ:
    • AnnotatedString
    • āĻ…āύ⧁āĻšā§āϛ⧇āĻĻāĻļ⧈āϞ⧀
    • āĻ¸ā§āĻĒā§āϝāĻžāύāĻ¸ā§āϟāĻžāχāϞ
    • āĻŸā§‡āĻ•ā§āϏāϟāĻ¸ā§āϟāĻžāχāϞ
    • āĻĢāĻ¨ā§āϟāĻ“āϝāĻŧ⧇āϟ
    • āĻŸā§‡āĻ•ā§āϏāϟ āĻĄā§‡āϕ⧋āϰ⧇āĻļāύ
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput ( Iaff99 )
  • āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āĻšāϤ⧇ āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāϰāĻŽā§‡āĻļāύ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇ ( I3bba4 )
  • Added a function reference parameter type ( I5e1bd )
  • Add transformed bounds to InspectorNode ( Ice42f )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • onCommit, onDispose, āĻāĻŦāĻ‚ onActive-āϕ⧇ SideEffect āĻāĻŦāĻ‚ DisposableEffect APIs ( If760e ) āĻāϰ āĻĒāĻ•ā§āώ⧇ āĻŦāĻ°ā§āϜāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • Changes to factory functions for Font/FontFamily/Typeface

    • āĻ•ā§āϝāĻžāĻĒāĻŋāϟāĻžāϞ āϞ⧇āϟāĻžāϰ āĻĻāĻŋāϝāĻŧ⧇ āĻļ⧁āϰ⧁ āĻšāĻ“āϝāĻŧāĻž āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • Deprecated previous factory functions with lowercase first letters
    • āύāϤ⧁āύ āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ FontFamily āĻĢ⧇āϰāϤ āĻĻ⧇āϝāĻŧ
    • āϏāĻžāĻŦāĻ•ā§āϞāĻžāϏ⧇āϰ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āϞ⧁āĻ•āĻŋāϝāĻŧ⧇ āϰāĻžāϖ⧇, āϝāĻžāϤ⧇ āϏ⧇āϗ⧁āϞāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϝāĻžāϝāĻŧāĨ¤
    • Renamed Font.asFontFamily to Font.toFontFamily ( I42aa7 )
  • Introduced ComposeContentTestRule , which extends ComposeTestRule and defines setContent , which has been removed from ComposeTestRule . Added a factory method createEmptyComposeRule() that returns a ComposeTestRule and does not launch an Activity for you. āϝāĻ–āύ āφāĻĒāύāĻŋ āφāĻĒāύāĻžāϰ āĻĒāϰ⧀āĻ•ā§āώāĻžāϰ āϏāĻŽāϝāĻŧ āφāĻĒāύāĻžāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ āϚāĻžāϞ⧁ āĻ•āϰāϤ⧇ āϚāĻžāύ āϤāĻ–āύ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ, āϝ⧇āĻŽāύ ActivityScenario.launch ( I9d782 , b/174472899 ) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇

  • animateAsState āĻāĻ–āύ animateFooAsState, āϝ⧇āĻ–āĻžāύ⧇ Foo āĻšāϞ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻŸā§‡āĻĄ āϭ⧇āϰāĻŋāϝāĻŧ⧇āĻŦāϞ⧇āϰ āϧāϰāύāĨ¤ āϝ⧇āĻŽāύ āĻĢā§āϞ⧋āϟ, āĻĄāĻŋāĻĒāĻŋ, āĻ…āĻĢāϏ⧇āϟ, āχāĻ¤ā§āϝāĻžāĻĻāĻŋ ( Ie7e25 )

  • āĻ›āĻŦāĻŋ āĻāĻŦāĻ‚ āφāχāĻ•āύ⧇ āĻŦāĻŋāώāϝāĻŧāĻŦāĻ¸ā§āϤ⧁āϰ āĻŦāĻŋāĻŦāϰāĻŖ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ It is used to provide description to the accessibility services ( I2ac4c )

  • āĻĄāĻŋāϏāĻĒā§āϞ⧇ āϏāĻžāχāϜ āϏāϰāĻžāύ āĻ•āĻžāϰāĻŖ āĻāϟāĻŋ āĻāĻĄāĻŧāĻžāύ⧋ āωāϚāĻŋāϤāĨ¤ Typically it is better to use size of onRoot() or window size at least. ( I62db4 )

  • OnSizeChanged was reporting the size of the layout's contents. It now reports the size at its position within the modifier chain. ( I36b78 , b/177562900 )

  • The emit() API and all overloads have been deprecated and renamed to ComposeNode. The APIs are identical, just a different name in order to follow the naming conventions of Compose ( I4137b )

  • TextFieldValue AnnotatedString āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇āĨ¤ āϤāĻŦ⧇ āĻāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āϟāĻŋ API āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻāĻŦāĻ‚ āĻŦāĻšā§-āĻļ⧈āϞ⧀ āĻĒāĻžāĻ ā§āϝ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻāĻ–āύāĻ“ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧāύāĻŋāĨ¤

    • Removed initial from EditingBuffer constructor parameters. ( I326d5 )
  • invalidate āĻāĻŦāĻ‚ compositionReference() āĻāĻ–āύ āϝāĻĨāĻžāĻ•ā§āϰāĻŽā§‡ currentRecomposeScope āĻāĻŦāĻ‚ memoryCompositionReference-āĻāϰ āĻĒāĻ•ā§āώ⧇ āĻ…āĻŦāϚāϝāĻŧāĨ¤ ( I583a8 )

  • AnnotatedString is changed to extend from kotlin.CharSequence. āĻ…āϤāĻāĻŦ āĻĻ⧈āĻ°ā§āĻ˜ā§āϝ āĻāĻŦāĻ‚ āĻ…āύ⧁āĻ•ā§āϰāĻŽ āĻāĻ–āύ āωāĻĻāĻžāĻšāϰāĻŖ āĻĢāĻžāĻ‚āĻļāύ, āĻāĻŦāĻ‚ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧāĨ¤ ( āφāχāĻāĻāĻĢā§Ē⧍⧝ )

  • RememberObserver replaces CompositionLifecycleObserver and CompositionLifecycleObserver is now deprecated.

    RememberObserver is a replacement for CompositionLifecycleObserver with modified semantics and renamed methods. āύāϤ⧁āύ āĻāĻĒāĻŋāφāχ-āϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻŦāĻ¸ā§āϤ⧁āϰ āϜāĻ¨ā§āϝ āϝāĻžāĻ¨ā§āĻ¤ā§āϰāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇āϗ⧁āϞāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āĻŦāĻžāϰ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ, āϝāĻž āĻĒā§āϰāĻ¸ā§āϤāĻžāĻŦāĻŋāϤ āĻ…āύ⧁āĻļā§€āϞāύāĨ¤ āϝāĻžāχāĻšā§‹āĻ•, āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āĻāĻ•āϟāĻŋ āϰāϚāύāĻžāϝāĻŧ āĻāĻ•āĻžāϧāĻŋāĻ•āĻŦāĻžāϰ āĻŽāύ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ āϤāĻŦ⧇ āĻĒā§āϰāϤāĻŋāϟāĻŋ āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ⧇āϰ āϜāĻ¨ā§āϝ onRemembered āĻŦāϞāĻž āĻšāϝāĻŧ āϝ⧇āĻ–āĻžāύ⧇ onEnter āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāĻ•āĻŦāĻžāϰ āĻŦāϞāĻž āĻšāϝāĻŧāĨ¤ onEnter was called multiple time if the object was used in subcompositions, such as WithConstraints and Scaffold making the single onEnter call guarantee unreliable and it was removed for RememberObserver .

    RememberObserver adds onAbandoned which is called if the RememberObserver instance is returned from the callback passed to remember but was not remembered in the composition state and, therefore, will never have onRemembered called. āĻāϟāĻŋ āϘāϟāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻĻāĻŋ āĻāĻ•āϟāĻŋ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻšāĻ“āϝāĻŧāĻžāϰ āφāϗ⧇ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻŦāĻ¨ā§āϧ āĻ•āϰ⧇ āĻĻ⧇āϝāĻŧ āĻŦāĻž āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ āĻ•āĻžāϰāĻŖ āĻ¸ā§āĻŸā§‡āϟ āĻāĻ–āύ āφāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āύāϝāĻŧ āĻŦāĻž āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āφāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤ āωāĻĒāϰ⧋āĻ•ā§āϤ āĻāĻ•āĻ• āϰ⧇āĻĢāĻžāϰ⧇āĻ¨ā§āϏ āϏ⧁āĻĒāĻžāϰāĻŋāĻļ āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ RememberObserver āĻāϰ āωāĻĻāĻžāĻšāϰāĻŖ āϝāĻĻāĻŋ onForgotten āĻāĻŦāĻ‚ onAbandoned āωāĻ­āϝāĻŧāχ āĻāĻ•āϟāĻŋ āĻŦāĻžāĻšā§āϝāĻŋāĻ• āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰ⧇ āĻĨāĻžāϕ⧇ āϤāĻžāĻšāϞ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϝ⧇ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύāϟāĻŋāϰ āφāϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχāĨ¤ āϝāĻĻāĻŋ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϟāĻŋ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰāĻžāϰ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻ•āϰ⧇ āĻŦāĻž onRemembered āĻ āϏāĻ‚āĻ¸ā§āĻĨāĻžāύ āĻŦāϰāĻžāĻĻā§āĻĻ āĻ•āϰāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧇ onAbandoned āωāĻĒ⧇āĻ•ā§āώāĻž āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āĻ•āĻžāϰāĻŖ onRemembered āĻŦāϞāĻž āĻšāϞ⧇ āĻāϟāĻŋ āĻ•āϞ āĻ•āϰāĻž āĻšāĻŦ⧇ āύāĻžāĨ¤ ( I02c36 )

  • Deprecated arithmetic operations between 2 or more TextUnits. Deprecated TextUnit.Sp and TextUnit.Em functions in preference to the extension functions such as Int.sp and Int.em. ( I48369 )

  • Resources in libraries with no explicitly declared public resources (ex. via public.xml) are now private by default. ( Ia1dcc , b/170882230 )

  • ScrollableColumn/Row were deprecated. Using ScrollableColumn is less efficient compared to LazyColumn when you have a large scrolling content because with LazyColumn we can only compose/measure/draw visible elements. To prevent users from going the inefficient way we decided to deprecate ScrollableColumn and ScrollableRow and promote usages of LazyColumn and LazyRow instead. āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰāĻž āĻāĻ–āύāĻ“ āϏāĻŋāĻĻā§āϧāĻžāĻ¨ā§āϤ āύāĻŋāϤ⧇ āĻĒāĻžāϰ⧇ āϝ⧇ āϤāĻžāĻĻ⧇āϰ āĻ…āϞāϏ āφāϚāϰāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āύ⧇āχ āĻāĻŦāĻ‚ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰāϗ⧁āϞāĻŋ āϏāϰāĻžāϏāϰāĻŋ āĻāĻ­āĻžāĻŦ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ: Column(Modifier.verticalScroll(rememberScrollState())) ( Ib976b , b/170468083 )

  • LazyColumn/LazyRow/LazyVerticalGrid āĻāϰ āϏ⧁āϝ⧋āϗ⧇āϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ items(count: Int) āĻ•āĻžāϰāĻ–āĻžāύāĻž āĻĒāĻĻā§āϧāϤāĻŋāĨ¤ items(items: List) and itemsIndexed(items: List) are now extension functions so you have to manually import them when used. āĻ…ā§āϝāĻžāϰ⧇āϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ: items(items: Array) āĻāĻŦāĻ‚ itemsIndexed(Array) ( I803fc , b/175562574 )

  • Please use ImeAction.None instead of ImeAction.NoAction

    • Please use ImeAction.Default instead of ImeAction.Unspecified ( Ie1bcc )
  • Leverage TestCoroutineDispatcher in testing ( I532b6 )

  • āύāϤ⧁āύ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ TextInputService.onStateUpdated āĻšāĻŋāϏ⧇āĻŦ⧇ updateState ( Id4853 )

  • TransitionDefinition-based Transition has been deprecated ( I0ac57 )

  • TextUnitType.Inherit is removed. Please use TextUnitType.Unspecified instead. ( I9ff64 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-āφāϞāĻĢāĻž10

13 āϜāĻžāύ⧁āϝāĻŧāĻžāϰ⧀, 2021

androidx.compose.ui:ui-*:1.0.0-alpha10 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha10 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

Breaking Change

  • Restructuring of the internal compiler API allows batching changes to the nodes generated as a result of composition into the "apply changes" phase of composition, after all @Composable functions have completed.

    This is a behavioral breaking change that might affect application code as nodes are no longer available from internal and experimental APIs until after changes have been applied. This can usually be worked around by surrounding code with such dependencies in a SideEffect composable to defer execution of the code until after the nodes have been created and initialized. ( I018da )

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added Modifier.focusOrder() that can be used to specify a custom focus traversal order ( I90cf5 , b/175899543 , b/170155556 , b/170155429 )
  • Removed deprecated focusObserver use onFocusChanged or onFocusEvent instead ( I3ecb9 , b/175156387 )
  • EditOperations API Changes
    • EditOperation āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ EditCommand āĻšāĻŋāϏ⧇āĻŦ⧇ āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇
    • Added Command suffix for EditOperation concrete implementations
    • EditCommand āĻāĻ–āύ āφāϰ āĻĄā§‡āϟāĻž āĻ•ā§āϞāĻžāϏ āύāϝāĻŧ
    • ApplyTo āĻ EditOperation.process āĻĢāĻžāĻ‚āĻļāύ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • Renamed InputEventListener to InputEventCallback
    • ( I0a366 )
  • Removed unused PxSquared, PxCubed, PxInverse. Changed Size.center() to be a property. ( I973f7 )
  • ui-test module will now be able to configure the creation of Recomposers for UIs under test ( Ibebd8 )
  • āωāĻĒāĻžāĻĻāĻžāύ āĻ…āĻ‚āĻļ āĻāĻŦāĻ‚ āĻ—āĻžāĻŖāĻŋāϤāĻŋāĻ• āĻ…āĻĒāĻžāϰ⧇āĻļāύ āφāϛ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻŦ⧇āĻ—. ( Ib0447 )
  • āĻ…āύ⧁āϰ⧂āĻĒ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• āĻāĻĒāĻŋāφāχ āĻŸā§€āĻ•āĻž ( Ia4502 , b/171464963 ) āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻžāĻŽāĻžā§āϜāĻ¸ā§āϝāĻĒā§‚āĻ°ā§āĻŖ āĻšāϤ⧇ @ExperimentalTesting āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ @ExperimentalTestApi āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • Renamed Color.useOrElse() to Color.takeOrElse() ( Ifdcf5 )
  • Removed unused DpInverse, DpSquared, and DpCubed classes. ( I4d62b )
  • Constraints#satisfiedBy was renamed to isSatisfiedBy. ( I9cf5c )
  • Add a callback to notify Owner when layoutnode bounds change. ( I72fd1 )
  • āĻāĻ•āϟāĻŋ āĻ…āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ§ā§āϰ⧁āĻŦāĻ• āϏāĻš āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ isSpecified, isUnspecified, āĻāĻŦāĻ‚ useOrElse āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I93f7b , b/174310811 )
  • Expand [Abstract]ComposeView APIs to allow recycling Compose-based views, disposing their composition to recreate again later. Add APIs for installing and discovering window-scoped Recomposers and CompositionReferences for creating child compositions.

    Add ViewCompositionStrategy for configuring the composition disposal strategy of [Abstract]ComposeViews; default behavior is dispose on window detach. ( I860ab )

  • Removed Any.identityHashCode() public api ( I025d7 )

  • Removed toStringAsFixed API in favor of using String.format instead directly. ( Iaba6b )

  • Add Toggle to foundation Strings.kt ( I4a5b7 , b/172366489 )

  • āύ⧇āϟāĻŋāĻ­āĻ•ā§āϞāĻžāϏāϕ⧇ UI āĻŽāĻĄāĻŋāωāϞ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻ•āϰ⧇āϛ⧇āĨ¤ Updated usages of nativeClass in equals implementations to use 'is MyClass' instead. ( I4f734 )

  • Modifier.focus() āĻāĻŦāĻ‚ Modifier.focusRequester() āĻŦāĻžāϤāĻŋāϞ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Modifier.focusModifier() āĻāĻŦāĻ‚ Modifier.focusReference() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I75a48 , b/175160751 , b/175160532 , b/175077829 )

  • SelectionRegistrar.notifySelectableChange āĻĒā§āϰāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ SelectionManager-āĻ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύāϝ⧋āĻ—ā§āϝ āφāĻĒāĻĄā§‡āϟāϗ⧁āϞāĻŋāϕ⧇ āϜāĻžāύāĻžāύ⧋āϰ āϜāĻ¨ā§āϝāĨ¤ ( I6ff30 , b/173215242 )

  • Introduced Outline.bounds property to obtain the bounding rect for various outline implementations. ( I16e74 , b/175093504 )

  • āĻ…āĻĒā§āϰāϚāϞāĻŋāϤ TestUiDispatcher. Use Dispatchers.Main instead ( Ic171f , b/175385255 )

  • ImeOptions and KeyboardOptions are no more a data class ( I3c898 , b/168684531 )

  • āĻ­āĻŋāĻœā§āϝ⧁āϝāĻŧāĻžāϞ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāϰāĻŽā§‡āĻļāύ āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

    • Renamed OffsetMap to OffsetMapping
    • Renamed OffsetMapping.identityOffsetMap to OffsetMapping.Identity
    • āĻĒāĻžāϏāĻ“āϝāĻŧāĻžāĻ°ā§āĻĄ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāϰāĻŽā§‡āĻļāύ āφāϰ āĻĄā§‡āϟāĻž-āĻ•ā§āϞāĻžāϏ āύāϝāĻŧ
    • OffsetMapping āĻāϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĢāĻžāχāϞ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
    • ( I0bdf3 )
  • Renamed Position to DpOffset and removed getDistance() ( Ib2dfd )

  • Changed fun Dp.isFinite() to a val Dp.isFinite ( I50e00 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Recomposer now exposes a Flow of its current state, allowing monitoring its activity and the activity of associated effects. ( Ifb2b9 )
  • āύ⧇āϟāĻŋāĻ­ āϕ⧀ āχāϭ⧇āĻ¨ā§āϟ āĻāĻ–āύ keyEvent.nativeKeyEvent ( I87c57 , b/173086397 ) āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇
  • animate() is now replaced with animateAsState() , which returns a State<T> instead of T . This allows better performance, as the invalidation scope can be narrowed down to where the State value is read. ( Ib179e )
  • Add Semantics role API and add Role as a parameter to clickable, selectable and toggleable SemanticsModifier. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ Modifier.progressSemantics āϝāĻžāϤ⧇ āĻ¸ā§āϞāĻžāχāĻĄāĻžāϰāĻ“ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I216cd )
  • āύāϤ⧁āύ āϕ⧋āϰ⧋āϟāĻŋāύ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• API Animatable āϝāĻž āĻāϰ āĻ…ā§āϝāĻžāύāĻŋāĻŽā§‡āĻļāύāϗ⧁āϞāĻŋāϰ āĻŽāĻ§ā§āϝ⧇ āĻĒāĻžāϰāĻ¸ā§āĻĒāϰāĻŋāĻ• āĻāĻ•āĻšā§‡āϟāĻŋāϝāĻŧāĻžāϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰ⧇āĨ¤
    • New DecayAnimationSpec to support multi-dimensional decay animation
    • ( I820f2 , b/168014930 )

Version 1.0.0-alpha09

16 āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ, 2020

androidx.compose.ui:ui-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Deprecated KeyEvent.Alt is now removed. Use KeyEvent.isAltPressed instead. ( Idd695 )
  • Modifier.keyInputFilter and Modifier.previewKeyInputFilter are deprecated use Modifier.onKeyEvent and Modifier.onPreviewKeyEvent instead ( Idbf1b , b/175156384 )
  • Modifier.focusObserver is deprecated. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Modifier.onFocusChanged āĻŦāĻž Modifier.onFocusEvent āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( I30f17 , b/168511863 , b/168511484 )
  • āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ API āϗ⧁āϞāĻŋ āϏāĻžāϏāĻĒ⧇āĻ¨ā§āĻĄ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, HandlePointerInputScope āĻāϰ āύāĻžāĻŽ AwaitPointerEventScope āĻāĻŦāĻ‚ handlePointerInput() āĻ awaitPointerEventScope() āϰāĻžāĻ–āĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Idf0a1 , b/175142755 )
  • āĻ…āĻŸā§‹āĻĢāĻŋāϞ API āĻāĻ–āύ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• API āĻāĻŦāĻ‚ āĻāϰ āϜāĻ¨ā§āϝ āĻ…āĻĒā§āϟ-āχāύ āĻĒā§āϰāϝāĻŧā§‹āϜāύ ( I0a1ec )
  • Adding destructuring declarations to create FocuSRequester instances ( I35d84 , b/174817008 )
  • accessibilityLabel has been renamed to contentDescription. accessibilityValue has been renamed to stateDescription. ( I250f2 )
  • Custom events were removed from suspending pointer input API ( Ia54d5 , b/175142755 )
  • Introduced several new functions in SelectionRegistrar and also renamed onPositionChange to notifyPositionChange. ( Ifbaf7 )
  • More members of LayoutNode we marked as internal ( I443c6 )
  • LayoutInfo was introduced to be used by tooling and testing ( I9b190 )
  • AndroidOwner āϤ⧈āϰāĻŋ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ ( Ibcad0 , b/170296980 )
  • Removed ExperimentalPointerInput annotation ( Ia7a24 )
  • Nested scroll system added. Refer to Modifier.nestedScroll for more details ( I36e15 , b/162408885 )
  • subcomposeInto(LayoutNode) was made internal ( Id724a )
  • Applier āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϟāĻĒ-āĻĄāĻžāωāύ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦāĻŋāĻ˛ā§āĻĄāĻŋāĻ‚ āĻŸā§āϰāĻŋāϕ⧇ āĻŦāϟāĻŽ-āφāĻĒ āϏāĻšāϜ āĻ•āϰāϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

    insert() āĻĒāĻĻā§āϧāϤāĻŋāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ insertTopDown() āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤

    A new method, insertBottomUp() , was added.

    āĻāĻ•āϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ—āĻ•āĻžāϰ⧀ āĻšāϝāĻŧ āĻ—āĻžāϛ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āύ⧋āĻĄ āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ āĻ•āϰāĻžāύ āϝāĻž āĻāϟāĻŋ insertTopDown() āĻŦāĻž insertBottomUp() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āϏāĻŽā§āĻĒāĻžāĻĻāύāĻž āĻ•āϰāϛ⧇ āϤāĻžāϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰ⧇ āϕ⧋āύāϟāĻŋ āĻ­āĻžāϞ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤

    Some trees, such as LayoutNode and View , are much more efficient to build bottom-up than top-down. āĻāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧇āϰ āφāϗ⧇, āĻŦāϟāĻŽ-āφāĻĒ āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ⧇āϰ āϜāĻ¨ā§āϝ āϏāĻ¨ā§āύāĻŋāĻŦ⧇āĻļ⧇āϰ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§āϝāĻžāĻ• āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻ›āĻŋāϞ āϝāĻž āĻ•āĻ°ā§āĻŽāĻ•ā§āώāĻŽāϤāĻžāϰ āϜāĻ¨ā§āϝ āĻŦāϟāĻŽ-āφāĻĒ āύāĻŋāĻ°ā§āĻŽāĻžāϪ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻāĻŽāύ āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒā§āϰāϝāĻŧā§‹āĻ—āĻ•āĻžāϰ⧀āϤ⧇ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻž āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤ With this change an Applier overrides insertBottomUp() to build a tree bottom-up and insertTopDown() to build the tree top-down. ( āφāχāϏāĻŋāĻŦāĻŋāĻĄāĻŋāϏāĻŋ⧍ )

  • Added dismissOnBackPress and dismissOnClickOutside properties to AndroidDialogProperties. These allow configuring when the dialog's onDismissRequest lambda will be invoked. ( If5e17 )

  • āϰāĻžāĻ¸ā§āϟāĻžāϰāĻžāχāϜāĻĄ āĻ…ā§āϝāĻžāϏ⧇āϟ āĻĢāϰāĻŽā§āϝāĻžāϟ (āϝ⧇āĻŽāύ PNGs) āĻŦāĻž VectorDrawables āĻĨ⧇āϕ⧇ āĻ…āĻ¸ā§āĻŦāĻšā§āĻ›āĻ­āĻžāĻŦ⧇ āϞ⧋āĻĄ āĻšāĻ“āϝāĻŧāĻž āĻĒ⧇āχāĻ¨ā§āϟāĻžāϰ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāϚāĻžāϞāύāĻž āĻ•āϰāϤ⧇ āĻĒ⧇āχāĻ¨ā§āϟāĻžāϰ āϰāĻŋāϏ⧋āĻ°ā§āϏ API āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Consumers no longer have to determine the type of asset in advance and can call this method to get a Painter object to use in Image composables or painter modifiers. ( I2c703 , b/173818471 )

  • Added Modifier.clearAndSetSemantics to clear descendants' semantics and set new ones. ( I277ca )

  • DrawScope-āĻāϰ āϏāĻžāĻĨ⧇ āĻĨāĻžāĻ•āĻžāϰ āϜāĻ¨ā§āϝ ContentDrawScope āϕ⧇ ui-āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻŽāĻĄāĻŋāωāϞ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iee043 , b/173832789 )

  • Introduced PathEffect graphics API to provide different patterns to stroked shapes. Deprecated usage of NativePathEffect in favor of expect/actual implementation of PathEffect. ( I5e976 , b/171072166 )

  • Added IdlingResource interfaces to Compose, as a Compose supported variant of Espresso's idling resources. They can be registered and unregistered through the ComposeTestRule ( I433f3 )

  • Removed global (un)registration of ComposeIdlingResource and global (un)registration of clocks into ComposeIdlingResource ( I32660 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Lambdas in offset modifiers now return IntOffset rather than Float. ( Ic9ee5 , b/174137212 , b/174146755 )
  • āĻĒāĻžāĻŦāϞāĻŋāĻ• API āĻĨ⧇āϕ⧇ SlotTable, SlotReader āĻāĻŦāĻ‚ SlotWriter āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϗ⧁āϞāĻŋāϕ⧇ āĻĒā§‚āĻ°ā§āĻŦ⧇ InternalComposeAPI āĻšāĻŋāϏāĻžāĻŦ⧇ āϚāĻŋāĻšā§āύāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ āĻāĻ–āύ āϤāĻžāϰāĻž āϰāϚāύāĻž āĻŽāĻĄāĻŋāωāϞ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ.

    āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ⧇āϰ āϤāĻĨā§āϝ āĻŦ⧇āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ UI-tooling API-āĻāϰ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻšāĻŋāϏ⧇āĻŦ⧇ CompositionData āĻāĻŦāĻ‚ CompositionGroup āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāϗ⧁āϞāĻŋ āϏāĻ°ā§āĻŦāϜāύ⧀āύ āĻ•āĻŋāĻ¨ā§āϤ⧁ ui-tooling API-āĻāϰ āĻŦāĻžāχāϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āωāĻĻā§āĻĻ⧇āĻļā§āϝ⧇ āύāϝāĻŧ āĻ•āĻžāϰāĻŖ āϤāĻžāϰāĻž ui-tooling API āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰ⧇ ( I31a9c ) āĻ•āĻžāρāϚāĻž āϤāĻĨā§āϝ āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇

  • āĻĄā§āϰāϝāĻŧāĻŋāĻ‚ āĻāύāĻ­āĻžāϝāĻŧāϰāύāĻŽā§‡āĻ¨ā§āĻŸā§‡āϰ āϏāĻžāχāϜāĻŋāĻ‚ āϤāĻĨā§āϝ āωāĻĒāϞāĻŦā§āϧ āĻšāϞ⧇ āĻ…āϞāϏāĻ­āĻžāĻŦ⧇ āĻāĻ•āϟāĻŋ āĻļ⧇āĻĄāĻžāϰ āχāĻ¨ā§āϏāĻŸā§āϝāĻžāĻ¨ā§āϏ āϤ⧈āϰāĻŋ āĻ•āϰāϤ⧇ āϰāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻ•āϰāĻž ShaderBrushāĨ¤ āĻ•āĻžāĻ¸ā§āϟāĻŽ DrawModifier āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āύāĻž āĻ•āϰ⧇āχ āĻ•āĻŽā§āĻĒā§‹āϜāĻŋāĻļāύ⧇āϰ āϏāĻŽāϝāĻŧ āĻ•āĻŽā§āĻĒā§‹āĻœā§‡āĻŦāϞ⧇āϰ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ…āĻ™ā§āĻ•āύ āϏ⧀āĻŽāĻž āĻĻāĻ–āϞ āĻ•āϰ⧇ āĻāĻŽāύ āĻ—ā§āϰ⧇āĻĄāĻŋāϝāĻŧ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϕ⧇ āϏāĻ‚āĻœā§āĻžāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāϤ⧇ āĻāϟāĻŋ āĻ•āĻžāĻ°ā§āϝāĻ•āϰāĨ¤

    Deprecated gradient function constructor APIs in favor of factory methods on a Gradient object. ( I511fc , b/173066799 )

  • Deprecate LazyColumnFor, LazyRowFor, LazyColumnForIndexed and LazyRowForIndexed. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ LazyColumn āĻāĻŦāĻ‚ LazyRow āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( I5b48c )

  • Deprecated BuildCompat.isAtLeastR ( Idb37e )

  • Added buildAnnotatedString factory function in order to build an AnnotatedString. Deprecated annotatedString builder function. ( Idfe0b )

  • Removed extension methods on Float and Double to convert values to radians. Moved to be a private function within the implementation PathParser which was the only place where it was used ( I25f52 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha08

2 āĻĄāĻŋāϏ⧇āĻŽā§āĻŦāϰ, 2020

androidx.compose.ui:ui-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Add semantics action Dismiss ( I2b706 )
  • DrawModifier APIāϗ⧁āϞāĻŋāϕ⧇ androidx.compose.ui āĻĒā§āϝāĻžāϕ⧇āϜ āĻĨ⧇āϕ⧇ androidx.compose.ui.draw āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Created DrawModifierDeprecated.kt file to include typealiases/helper methods to assist with the migration from the deprecated to the current APIs. ( Id6044 , b/173834241 )
  • Renamed Modifier.drawLayer to Modifier.graphicsLayer Also updated related classes to GraphicsLayer as per API feedback. ( I0bd29 , b/173834241 )
  • New methods placeable.placeWithLayer() and placeable.placeRelativeWithLayer() were added which allows custom layouts and layout modifiers to place a child with introducing a graphics layer for their drawing. Having that we can first optimize redrawings, so when we need to move a child we don't have to redraw its content, second we can apply draw transformations for a child ( Ibd8f6 , b/170296989 , b/171493718 , b/173030831 )
  • <T> was removed from SubcomposeLayout declaration. You can use it without specifying a type now. ( Ib60c8 )
  • Added Modifier.scale/rotate APIs as conveniences for drawLayer.
    • Renamed Modifier.drawOpacity to Modifier.alpha
    • Renamed Modifier.drawShadow to Modifier.shadow ( I264ca , b/173208140 )
  • Made PointerInputData's uptime and position fields non-nullable. ( Id468a )
  • MaterialTheme āĻāĻ–āύ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻšā§āϝāĻžāĻ¨ā§āĻĄā§‡āϞ āĻāĻŦāĻ‚ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻĒāϟāĻ­ā§‚āĻŽāĻŋāϰ āϜāĻ¨ā§āϝ āϏāĻ āĻŋāĻ• āϰāĻ‚ āϏ⧇āϟ āĻ•āϰ⧇āĨ¤ āύāύ-āĻŽā§‡āĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ āĻ…ā§āϝāĻžāĻĒāϗ⧁āϞāĻŋ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ⧇āϰ āϜāĻ¨ā§āϝ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āϰāĻ™āϗ⧁āϞāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽāĻžāχāϜ āĻ•āϰāϤ⧇ āĻ…ā§āϝāĻžāĻŽā§āĻŦāĻŋāϝāĻŧ⧇āĻ¨ā§āϟ āĻŸā§‡āĻ•ā§āϏāϟ āϏāĻŋāϞ⧇āĻ•āĻļāύ āĻ•āĻžāϞāĻžāϰ āĻŽā§āϝāĻžāύ⧁āϝāĻŧāĻžāϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ ( I1e6f4 , b/139320372 , b/139320907 )
  • āĻšā§‹āĻ¸ā§āϟ āωāχāĻ¨ā§āĻĄā§‹ āĻĢā§‹āĻ•āĻžāϏ⧇ āφāϛ⧇ āĻ•āĻŋāύāĻž āϤāĻž āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰāϤ⧇ WindowManager.isWindowFocused āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āĻāĻ•āϟāĻŋ WindowFocusObserver āϝāĻž āĻāĻ•āϟāĻŋ onWindowFocusChanged āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ ( I53b2a , b/170932874 )
  • Updated TransformOrigin API to have destructuring syntax to return pivotFractionX and pivotFractionY as component1 and component2 ( If43c4 , b/173586560 )
  • Added lint check for composable lambda parameter naming and position, to check for consistency with Compose guidelines. Also migrated some APIs using children as the name for their trailing lambda to content , according to the lint check and guidance. ( Iec48e )
  • Added API to check if Alt, Ctrl, Meta or Shift modifier keys were pressed when a keyevent was dispatched. ( I50ed9 )
  • Added a new Modifier.drawLayer() overload. It takes a lambda block on a new GraphicsLayerScope where you define the layer parameters in a way which allows to skip recomposition and relayout when the state change happens. DrawLayerModifier is now internal in preparation to migrating its logic into placeable.placeWithLayer() method of LayoutModifier ( I15e9f , b/173030831 )
  • Ambient āϏāĻžāĻĨ⧇ āϤāĻžāĻĻ⧇āϰ āĻĒā§āϰāĻ¤ā§āϝāϝāĻŧ āĻšāĻŋāϏāĻžāĻŦ⧇ āύāĻžāĻŽ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻ…ā§āϝāĻžāĻŽā§āĻŦāĻŋāϝāĻŧ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϕ⧇ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻ…ā§āϝāĻžāĻŽā§āĻŦāĻŋāϝāĻŧ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āϰāϚāύāĻž API āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž āĻ…āύ⧁āϏāϰāĻŖ āĻ•āϰ⧇ āĻ…ā§āϝāĻžāĻŽā§āĻŦāĻŋāϝāĻŧ⧇āĻ¨ā§āĻŸā§‡āϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāĻŋāĻĢāĻŋāĻ•ā§āϏ āĻ•āϰāĻž āύāϤ⧁āύ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋāϰ āϏāĻžāĻĨ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇⧎ ( I33440 )
  • Moved androidx.compose.ui.text.Typeface to androidx.compose.ui.text.font.Typeface ( Ic2b81 )
  • Semantics argument mergeAllDescendants was renamed to mergeDescendants. ( Ib6250 )
  • New drag gesture detector suspending pointer input API, including orientation locking. ( Icef25 )
  • Renamed VectorAsset to ImageVector Moved and renamed VectorAsset to Builder to be an inner class of ImageVector as per API guidelines. āĻ•āĻŽā§āĻĒā§āϝāĻžāĻŸā§‡āϰ āϜāĻ¨ā§āϝ ImageVector.Builder āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāϤ⧇ VectorAssetBuilder-āĻāϰ āϟāĻžāχāĻĒāϞāĻŋāϝāĻŧāĻžāϏ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Icfdc8 )
  • Renamed ImageAsset and related methods to ImageBitmap. ( Ia2d99 )
  • Add zIndex param for the PlacementScope's place() so Modifier.zIndex() now works as a LayoutModifier and any custom layout can set zIndexes for their children right in the placement block ( I711f7 , b/171493718 )
  • āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ⧇āϰ āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻžāϰ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ UI ( I6f05c ) āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
  • Deprecate place(Offset) and placeRelative(Offset). Use overloads with int offsets instead ( I4c5e7 )
  • Previously Deprecated APIs were removed: Modifier.onPositioned was removed, use Modifier.onGloballyPositioned. Modifier.onDraw was removed, use Modifier.onDrawBehind. Modifier.plus was removed, use Modifier.then. Color.Unset was removed, use Color.Unspecified. PxBounds class was removed, use Rect instead. ( Ie9d02 , b/172562222 )
  • The Alignment interface was updated and made functional. ( I46a07 , b/172311734 )
  • āύāϤ⧁āύ āϏāĻžāϏāĻĒ⧇āĻ¨ā§āĻĄāĻŋāĻ‚ āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāύāĻĒ⧁āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻŸā§āϝāĻžāĻĒ, āĻĄāĻŦāϞ-āĻŸā§āϝāĻžāĻĒ, āĻĻā§€āĻ°ā§āϘ āĻĒā§āϰ⧇āϏ āĻāĻŦāĻ‚ āĻĒā§āϰ⧇āϏ āχāĻ™ā§āĻ—āĻŋāϤ⧇āϰ āϜāĻ¨ā§āϝ āĻœā§‡āϏāϚāĻžāϰ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ āχāωāϟāĻŋāϞāĻŋāϟāĻŋ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻĄā§‡āϭ⧇āϞāĻĒāĻžāϰāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϤāĻžāĻĻ⧇āϰ āύāĻŋāϜāĻ¸ā§āĻŦ āĻ…āĻ™ā§āĻ—āĻ­āĻ™ā§āĻ—āĻŋ āĻĄāĻŋāĻŸā§‡āĻ•ā§āϟāϰ āϞāĻŋāĻ–āϤ⧇ āϏāĻšāϜ āĻ•āϰ⧇ āϤ⧋āϞ⧇āĨ¤ ( I00807 )
  • LayoutIdParentData āϜāĻ¨ā§āϝ id āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ layoutId āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Measurable.id was renamed to Measurable.layoutId . ( āφāχāĻāĻĄāĻŋāĻŦāĻŋāϏāĻŋāĻŦāĻŋ , āĻŦāĻŋ/172449643 )
  • New multitouch gesture detector, including helpers for detecting rotation, zoom, and panning. ( Ic459d )
  • Introduced SweepGradientShader and SweepGradientBrush APIs. ( Ia22c1 )
  • āĻĒāϰ⧀āĻ•ā§āώāĻžāϝāĻŧ āϏāĻŽāϝāĻŧ āύāĻŋāϝāĻŧāĻ¨ā§āĻ¤ā§āϰāĻŖ (TestAnimationClock āĻāĻŦāĻ‚ āĻāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ) āĻāĻ–āύ āĻĒāϰ⧀āĻ•ā§āώāĻžāĻŽā§‚āϞāĻ• ( I6ef86 , b/171378521 )
  • āϕ⧋āϰ⧋āϟāĻŋāύ-āĻ­āĻŋāĻ¤ā§āϤāĻŋāĻ• āĻ¸ā§āĻ•ā§āϰ⧋āϞāĻŋāĻ‚ API āϝ⧋āĻ— āĻ•āϰ⧁āύ:

    Adds LazyListState.snapToItem and LazyListState.smoothScrollBy, as well as lower-level APIs for scroll control. These APIs provide a suspend interface to control scrolling that waits until the scroll is finished before returning. ( Ie5642 )

  • Modifier.focusable āĻĒā§āϰāϝāĻŧā§‹āϜāύ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇. Use this to add focusable behavior to a component, with correct semantics and accessibility. ( I41eb9 , b/152525426 , b/162865824 )

  • Provide default implementations of methods and properties in AnimationClockTestRule that can be delegated to its clock ( I7ea3d , b/173399709 )

  • AndroidComposeTestRule can now accept custom activity launchers ( Ib8288 , b/153623653 , b/154135019 )

  • TextLayoutResult.getLineVisibleEnd is deprecated. As a replacement TextLayoutResult.getLineEnd now has a new parameter visibleEnd. ( I73282 )

  • Updated TextFieldValue API

    • TextFieldValue.composition āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻĒāĻ āύāϝ⧋āĻ—ā§āϝ
    • āĻ…āĻĒāϏāĻžāϰāĻŋāϤ āĻŦā§āϝāϤāĻŋāĻ•ā§āϰāĻŽ āĻ…āĻŦ⧈āϧ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻĒāϰāĻŋāϏāϰ⧇āϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ•ā§āώ⧇āĻĒ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I4a675 , b/172239032 )
  • Support TtsAnnotation for text to speech engine. ( I54cc6 )

  • New APIs for running animations in coroutines ( Ied662 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻŦāĻ•ā§āϏ⧇āϰ āĻ…ā§āϝāĻžāϞāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āĻ•āύāĻŸā§‡āĻ¨ā§āϟ āĻ…ā§āϝāĻžāϞāĻžāχāύāĻŽā§‡āĻ¨ā§āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I2c957 )
  • offsetPx modifiers were renamed to offset. They are now taking lambda parameters instead of State. ( Ic3021 , b/173594846 )
  • Added resetInput parameter to TextInputService#onStateUpdated ( I3e8f5 , b/172239032 , b/171860947 )
  • Added lint check for Modifier parameters in Composable functions. This lint check checks the naming, return type, default value, and order of the parameter for consistency with Compose guidelines. ( If493b )
  • Temporarily added option to let the TestAnimationClock be driven by the MonotonicFrameClock ( I1403b , b/173402197 )
  • āĻ…ā§āϝāĻžāĻ¨ā§āĻĄā§āϰāϝāĻŧ⧇āĻĄ āϟāĻžāχāĻĒāĻĢ⧇āϏ āĻŽā§‹āĻĄāĻŧāĻ• āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āφāĻĒāύāĻŋ typeface āĻĢāĻžāĻ‚āĻļāύ āĻ…āĻ°ā§āĻĨāĻžā§Ž typeface(Typeface.DEFAULT) āĻāϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻāĻ•āϟāĻŋ Android Typeface āϞ⧋āĻĄ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻāĻ›āĻžāĻĄāĻŧāĻžāĻ“ typefaceFromFontFamily() āĻĨ⧇āϕ⧇ typeface() ( I52ab7 ) āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • Added lint check to check that Modifier factory functions are defined as extensions on Modifier, so they can be fluently chained together. ( I07981 )
  • Remove old ui-test module and its stubs ( I3a7cb )
  • Recomposer no longer accepts an EmbeddingContext; required scheduling dependencies are obtained from the effectCoroutineContext. FrameManager is deprecated; platform integrations should initialize their own global snapshot handling. ( I02369 )
  • Pass style information to accessibility node. ( If5e8d )
  • TextUnit.Inherit is renamed to TextUnit.Unspecified for consistency with other units. ( ifce19 )

Compose UI Version 1.0.0-alpha07

11 āύāϭ⧇āĻŽā§āĻŦāϰ, 2020

androidx.compose.ui:ui-*:1.0.0-alpha07 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha07 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Introduced ScaleFactor inline class to represent scale factors for the horizontal and vertical axes independent of one another in order to support non-uniform scaling use cases.
    • Added computeScaleFactor method to ContentScale
    • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ContentScale.FillBounds āϝāĻžāϤ⧇ āĻ—āĻ¨ā§āϤāĻŦā§āϝāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖāϰ⧂āĻĒ⧇ āĻĻāĻ–āϞ āĻ•āϰāϤ⧇ src āĻŦāĻžāωāĻ¨ā§āĻĄāϗ⧁āϞāĻŋ āĻĒā§āϰāϏāĻžāϰāĻŋāϤ āĻ•āϰāϤ⧇ āĻ…-āχāωāύāĻŋāĻĢāĻ°ā§āĻŽ āĻ¸ā§āϕ⧇āϞāĻŋāĻ‚ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāϤ⧇āĨ¤
    • Added operator methods to compute ScaleFactor parameters with Size parameters.
    • ( Ic96a6 , b/172291582 )
  • The BiasAlignment and BiasAbsoluteAlignment factories for creating Alignments were added. ( Iac836 , b/169406772 )
  • Allow a developer to forcefully clear focus. ( I90372 )
  • A bug causing elevation not being drawn for Views inside Compose was fixed. ( If7782 )
  • Created onDrawBehind API within ContentDrawScope to match naming convention with Modifier.drawBehind. ( I4fc3a , b/171955269 )
  • Add support for camera distance to complement 3d transformations rotationX/rotationY on layer APIs. ( I40213 , b/171492100 )
  • Added SelectionContainer without the callback ( Ibfadb )
  • ExperimentalSubcomposeLayoutApi annotation was removed. SubcomposeLayout āĻāĻ–āύ @OptIn ( I708ad ) āϝ⧋āĻ— āύāĻž āĻ•āϰ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇
  • āĻĢāĻžāĻ°ā§āĻ¸ā§āϟāĻŦ⧇āϏāϞāĻžāχāύ āĻāĻŦāĻ‚ āϞāĻžāĻ¸ā§āϟāĻŦ⧇āϏāϞāĻžāχāύāϕ⧇ androidx.compose.ui.layout āĻĒā§āϝāĻžāϕ⧇āĻœā§‡ ( Ied2e7 ) āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
  • Removed opacity from drawShadow() modifier as it was confusing. ( I82c62 , b/171624638 )
  • MeasureResult MeasureScope āĻĨ⧇āϕ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ibf96d , b/171184002 )
  • āĻŦ⧇āĻļ āĻ•āĻŋāϛ⧁ āϞ⧇āφāωāϟ āϏāĻŽā§āĻĒāĻ°ā§āĻ•āĻŋāϤ āϚāĻŋāĻšā§āύ androidx.compose.ui āĻĨ⧇āϕ⧇ androidx.compose.layout.ui āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I0fa98 , b/170475424 )
  • Removed Deprecated FocusState2 ( I686cb , b/168686446 )
  • ZIndexModifier is now internal ( I1808b , b/171493718 )
  • Updated return type of lerp method on Size parameters to return a non-null Size to avoid unnecessary boxing. ( Ib0044 )
  • Added TestMonotonicFrameClock for testing code that relies on Compose's MonotonicFrameClock for awaiting composition frame events using kotlinx-coroutines-test's runBlockingTest ( I4402f )
  • Removed GestureScope.localToGlobal ( I15299 , b/171462785 )
  • Added onAllNodesWithSubstring finder ( I81dd7 , b/171462889 )
  • androidx.ui.test module deprecated. Please migrate to androidx.compose.ui.test and androidx.compose.ui.test.junit4 ( I452e8 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • captureToBitmap moved to captureToImage. ( I86385 )
  • foundation.Text āĻ…āĻŦāϚāϝāĻŧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ material.Text āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻŽā§ŒāϞāĻŋāĻ•, āĻ…āĻŦāĻŋāĻ•ā§ƒāϤ āĻĒāĻžāĻ ā§āϝ API āĻāϰ āϜāĻ¨ā§āϝ āϝāĻž āĻāĻ•āϟāĻŋ āĻĨāĻŋāĻŽ āĻĨ⧇āϕ⧇ āĻŽāĻžāύ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰ⧇ āύāĻž, āĻĻ⧇āϖ⧁āύ androidx.compose.foundation.BasicTextāĨ¤ ( If64cb )
  • āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻ…āĻĒāĻļāύ āĻ—ā§āϰāĻšāĻŖ āĻ•āϰāϤ⧇ āĻĒāĻžāĻ ā§āϝāĻ•ā§āώ⧇āĻ¤ā§āϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰ⧁āύ ( Ida7f3 )
  • āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāϗ⧁āϞāĻŋāϕ⧇ ImeOptions āĻšāĻŋāϏāĻžāĻŦ⧇ āĻĒ⧁āύāσāύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰ⧁āύ ( I82f36 )
  • Moved KeyboardType and ImeAction into KeyboardOptions ( I910ce )
  • provideDefault was added as an alternative for providing ambients, and it can be used to specify ambient values that will only be set when there is no ambient value already provided. ( Id6635 , b/171024925 )
  • BaseTextField āĻ…āĻŦāĻŽā§āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Use BasicTextField instead. ( I896eb )
  • Introduce ui-test-junit4 module ( Ib91f8 )
  • relativePaddingFrom was renamed to paddingFrom . āϞ⧇āφāωāϟ āĻŦāĻžāωāĻ¨ā§āĻĄ āĻĨ⧇āϕ⧇ āĻŸā§‡āĻ•ā§āϏāϟ āĻŦ⧇āϏāϞāĻžāχāύ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĻā§‚āϰāĻ¤ā§āĻŦ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻžāϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻšāĻŋāϏ⧇āĻŦ⧇ paddingFromBaseline āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I0440a , b/170633813 )
  • LaunchedTask was renamed to LaunchedEffect for consistency with the SideEffect and DisposableEffect APIs. LaunchedEffect with no subject params is not permitted in order to encourage best practices. ( Ifd3d4 )
  • Introduced resources composable that recomposes when the configuration updates. ( I6387c , b/167352819 )
  • Recomposer now requires a CoroutineContext at construction ( Ic4610 )
  • Sum zIndex values when multiple Modifier.zIndex() applied. Previously the first one was winning. ( Ic514c , b/170623936 )
  • Changes to the internal SlotTable implementation which should not affect the public API. ( If9828 )
  • Added Keyboard auto correct IME Option ( I57b8d )
  • androidx.ui.test moved to androidx.compose.ui.test ( I9ffdb )
  • āϏāĻ°ā§āĻŦāϜāύ⧀āύ API āĻĨ⧇āϕ⧇ KeyboardOptions.toImeOptions āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ic2e45 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • Disabled publication of internal artifact androidx.compose.ui:ui-text-android ( Ib93fa )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha06

28 āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ, 2020

androidx.compose.ui:ui-*:1.0.0-alpha06 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha06 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Recomposer is now a CompositionReference and a valid composition parent. Explicit Recomposer is now required in fewer places. ( I4036f )
  • Deprecate VectorPainter in favor of rememberVectorPainter to better indicate that the composable API internally leverages 'remember' to persist data across compositions. ( Ifda43 )
  • Updated Modifier.drawWithCache API to expose ContentDrawScope as a receiver scope instead of DrawScope in order to provide implementations the ability to re-order drawing commands. This is useful for blending/ tinting use cases in which content pixels must be rendered first in order for the corresponding blend mode algorithm to be applied properly. ( Ie7ec8 )
  • Move SimpleContainer into PopupTestUtils.kt ( I78c57 )
  • ConsumedData is no longer a data class. See https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 for details ( I1737f )
  • Fix Rtl Handle Position. ( I6e1e0 )
  • Refactored DrawScope and ContentDrawScope to be interfaces instead of abstract classes
    • Created CanvasDrawScope implementation of DrawScope
    • Refactored implementations of DrawScope to use CanvasScope instead
    • Created DrawContext to wrap dependencies for DrawScope
    • Removed deprecated methods on DrawScope ( I56f5e )
  • āĻŦā§āϰ⧇āĻ•āĻŋāĻ‚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: PointerInputFilter.onPointerEvent(...) āĻĨ⧇āϕ⧇ āϰāĻŋāϟāĻžāĻ°ā§āύ āĻŽāĻžāύ āϏāϰāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ“āϝāĻŧāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝ⧇ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻŽāĻžāύ āϝāĻž āĻĒāϝāĻŧ⧇āĻ¨ā§āϟāĻžāϰ āχāϭ⧇āĻ¨ā§āϟāϗ⧁āϞāĻŋāϤ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇ āϤāĻž āĻšāϞ āĻ–āϰāϚ āĻĄā§‡āϟāĻžāĨ¤ Instead of returning data from PointerInputFilter.onPointerEvent(...) , now you can just mutate the consumption data of the PointerEvents passed in. ( I6acd0 )
  • MeasureScope and IntrinsicMeasureScope were made interfaces. ( I1a087 , b/170461665 )
  • The merge function for AlignmentLine was hidden. ( I9da1a , b/170612900 , b/170611568 )
  • Add ability to specify inspector info in composed modifier ( Idee08 , b/163494569 )
  • Added SelectAll option into selection menu ( Ief02b )
  • Updated DrawTransform.rotate to take a default pivot parameter of center to match the documentation.
    • Updated DrawScope.rotateRad to consume an Offset for the pivot point to match other transformation methods.
    • Deprecated DrawScope.rotateRad overload that consumed floats for the x and y coordinate of the pivot.
    • ( Iffcbb , b/170434992 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • MissingGetterMatchingBuilder-āĻāϰ āϜāĻ¨ā§āϝ API lint āĻšā§‡āĻ• androidx ( I4bbea , b/138602561 ) āĻāϰ āϜāĻ¨ā§āϝ āϏāĻ•ā§āώāĻŽ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • āĻĒāϰ⧀āĻ•ā§āώāĻž āϝ⧋āĻ— āĻ•āϰ⧁āύāĨ¤ ( I6b8ae )
  • Enable transitions in ComposeTestRule; ComposeTestRule āĻĨ⧇āϕ⧇ āĻŦā§āϞāĻŋāĻ™ā§āĻ•āĻŋāĻ‚ āĻ•āĻžāĻ°ā§āϏāĻžāϰ āϏāĻ•ā§āϰāĻŋāϝāĻŧ āĻ•āϰāϤ⧇ āĻ…āĻĒāĻļāύ āĻ…āĻĒāϏāĻžāϰāĻŖ āĻ•āϰ⧁āύāĨ¤ ( if0de3 )
  • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻ•ā§āϝāĻžāĻĒāĻŋāϟāĻžāϞāĻžāχāĻœā§‡āĻļāύ āφāχāĻāĻŽāχ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ ( I8ac38 )
  • CoreTextField ( I72e6d ) āĻ āĻāĻ•āĻ• āϞāĻžāχāύ āϕ⧀āĻŦā§‹āĻ°ā§āĻĄ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • Move SimpleContainer into PopupTestUtils.kt ( I65c3e )
  • āĻ•āĻŽā§āĻĒā§‹āϜ āϜ⧁āĻĄāĻŧ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ āϤāĻž āφāϰāĻ“ āĻ­āĻžāϞāĻ­āĻžāĻŦ⧇ āĻĒā§āϰāĻ•āĻžāĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϰ⧇āĻĄāĻŋāϝāĻŧāĻžāϏ API āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ āĻ•āĻ°ā§āύāĻžāϰāϰ⧇āĻĄāĻŋāϝāĻŧāĻžāϏ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āύ⧇āϤāĻŋāĻŦāĻžāϚāĻ• āϕ⧋āĻŖāĻžāϰ āĻŦā§āϝāĻžāϏāĻžāĻ°ā§āϧ āĻļā§‚āĻ¨ā§āϝ⧇ āφāϟāĻ•āĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āϤāĻž āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύāĨ¤ ( I130c7 , b/168762961 )
  • Improved Android interop by continuing to send MotionEvents to child Android Views that return false for onTouchEvent for all actions except ACTION_DOWN ( I94c5a , b/170320973 )
  • āĻŦāĻ•ā§āϏ āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻĢāĻžāĻ‚āĻļāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇. ( Ibce0c , b/155056091 )

āĻŦāĻžāĻšā§āϝāĻŋāĻ• āĻ…āĻŦāĻĻāĻžāύ

  • Support different locales for AnnotatedString.capitalize and AnnotatedString.decapitalize ( I4aa7f )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha05

āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ 14, 2020

androidx.compose.ui:ui-*:1.0.0-alpha05 is released. 1.0.0-alpha05 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • āĻĒāϰāĻŋāĻĻāĻ°ā§āĻļāĻ• āϤāĻĨā§āϝ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ DSL āϝ⧋āĻ— āĻ•āϰ⧁āύ ( Ic9a22 )
  • āϞāĻ‚āĻĒā§āϰ⧇āϏāϕ⧇ āĻŸā§‡āĻ•ā§āϏāĻŸā§‡ āϏāϰāĻžāύāĨ¤ ( Iff2bc )
  • Experimental Modifier.pointerInput suspending input modifier ( Ia77d2 )
  • āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻĒāĻŋ/āĻĒ⧇āĻ¸ā§āϟ/āĻ•āĻžāϟ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāĻŋāĻŦāĻŋāϞāĻŋāϟāĻŋ āĻ…ā§āϝāĻžāĻ•āĻļāύ ( I6db4f )
  • Public constructor for AndroidOwner was removed ( Iacaef )
  • Popups and dialogs now inherit FLAG_SECURE from parent Window. Also added option to configure this explicitly ( I64966 , b/143778148 , b/143778149 )
  • Consumption data is now mutable. Also calls to extension functions that do consumption now no longer return a new PointerInputChange, but instead mutate the provided PointerInputChange.

    This is the first step in a 2 step process to make PointerEvent data mutable such that other pointer data cannot be edited by user code. The second step will be to remove the List<PointerInputChange> return type from PointerInputFilter.onPointerEvent(...) . ( Id067e )

  • Disable Selection in Text, and a Demo. ( Ie7e97 )

  • Made onGloballyPositioned an inline function ( I15830 )

  • OnPositionedModifier āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ OnGloballyPositionedModifier āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ onPositioned() āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ onGloballyPositioned() āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I587e8 , b/169083903 )

  • The hasPendingMeasureOrLayout property was added to Owner, telling whether the Owner has any pending layout work. ( I3d9f8 , b/169038599 )

  • Added API to programmatically clear focus ( Ie1dc2 , b/161487952 )

  • PointerInputFilter.onPointerInput(...) āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ PointerInputFilter.onPointerEvent(...) should be used in its place. ( I6f04a )

  • Changes to Size

    • Removed Size.getFlipped
    • Removed Size.rem
    • Removed Size.truncDiv ( Ief44d , b/169790720 )
  • As part of the standardization of sentinel values for inline classes, rename Color.Unset to Color.Unspecified for consistency with other inline classes ( I97611 , b/169797763 )

  • TextOverflow.None is introduced. When overflow is None, Text won't handle overflow anymore, and it will report its actual size to LayoutNode. ( I175c9 , b/158830170 )

  • The scope parameter within AnnotatedString.Builder.addStringAnnotation is renamed to tag for API consistency. ( I7c8cb )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • The scrolling performance of LazyColumn/Row is improved by doing less work in subcomposition on every scroll. The new hasInvalidations() method was added for Composition class. hasPendingChanges() method from Recomposer was renamed to hasInvalidations() ( Ib2f32 , b/168293643 , b/167972292 , b/165028371 )
  • Updated Size.Unspecified parameters to be Float.NaN instead of Float.POSITIVE_INFINITY. Updated Painter implementations to check against Size.Unspecified as well as non-finite Sizes. ( I95a7e )
  • The order of place() calls in custom Layouts now defines the drawing order for the children ( Ibc9f6 )
  • āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āϜāĻ¨ā§āϝ SpannableString āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāϕ⧇ AnnotatedString āϏāĻŽāĻ°ā§āĻĨāύ āĻ•āϰ⧁āύāĨ¤ ( Ief907 )
  • Added stubs for android classes that are on older platforms to avoid use of reflection when possible. ( Ia1790 )
  • Fixed bug: If the software keyboard showing caused the app to translate, pointer input coordinates would become incorrect. ( Ic4cec , b/163077821 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha04

āĻ…āĻ•ā§āĻŸā§‹āĻŦāϰ 1, 2020

androidx.compose.ui:ui-*:1.0.0-alpha04 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha04 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Added OwnerScope to allow collection of layout and drawing observation scopes once they are no longer valid. ( Ic4cf8 )
  • Added OnRemeasuredModifier and onSizeChanged() to receive a callback when content layout has been remeasured and the size has changed, respectively. ( I657cf , b/154108792 )
  • āϞāĻ‚ āĻ•ā§āϞāĻŋāĻ• āĻļāĻŦā§āĻĻāĻžāĻ°ā§āĻĨāĻŦāĻŋāĻĻā§āϝāĻž āĻ…ā§āϝāĻžāĻ•āĻļāύ āϝ⧋āĻ— āĻ•āϰ⧁āύ ( I6281b , b/156468846 )
  • Made FocusManager private. ( I7872f )
  • Updated implementation to create a dedicated DrawCacheModifier implementation instead of adding optional properties on DrawModifier.

    Updated documentation for various methods ( Ibd166 )

  • āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āϤ⧈āϰāĻŋ āĻāĻĄāĻŧāĻžāϤ⧇ TextRange āχāύāϞāĻžāχāύ āĻ•āϰ⧁āύāĨ¤ ( Id034b )

  • PlacementScope#parentWidth and PlacementScope#parentLayoutDirection can no longer be read from the placement block of a custom layout. ( Icc1ae , b/168295623 )

  • add AccessibilityScrollState to semantics properties. ( Ifeda9 )

  • Introduced Modifier.drawWithCache to support creating a drawing object that conditionally recreates dependencies that depend on size/state information ( I376dc )

  • āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ āϏ⧀āĻŽāĻžāĻŦāĻĻā§āϧāϤāĻž āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ. āĻĒā§āϰāĻ¸ā§āĻĨ āĻāĻ–āύ āϏāϰāĻžāϏāϰāĻŋ āĻ…āύ⧁āĻšā§āϛ⧇āĻĻ⧇ āĻĒāĻžāϏ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Ica712 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Updated many Graphics APIs
    • Updated scale and rotation transformation APIs to consume a single Offset parameter to represent the pivot coordinate instead of separate float parameters for the x/y coordinates in DrawScope and DrawTransform
    • Rect.expandToInclude āĻāĻŦāĻ‚ Rect.join āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇⧎
    • Updated Radius documentation to say oval in addition to elliptical
    • Added documentation to indicate the public constructor for the inline Radius class is not to be called directly but instead Radius objects should be instantiated through their function constructors
    • āϟāĻĒāϰāĻžāχāϟ, āĻŦāϟāĻŽāϰāĻžāχāϟ, āĻŦāϟāĻŽāϏ⧇āĻ¨ā§āϟāĻžāϰ, āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āϜāĻŋāĻœā§āĻžāĻžāϏāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ RoundRect API āϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇⧎
    • Deprecated Rect.shift in favor of Rect.translate
    • Removed RoundRect.grow and Rect.shrink APIs
    • Renamed RoundRect.outerRect to Rect.boundingRect
    • RoundRect.middleRect/tallMiddleRect/wideMiddleRect āĻāĻŦāĻ‚ Rect.isStadium āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
    • RoundRect.longestSide āĻĨ⧇āϕ⧇ RoundRect.maxDimension āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • Renamed RoundRect.shortestSide to RoundRect.minDimension
    • Changed RoundRect.center to be a property instead of a function
    • X/y āĻŦā§āϝāĻžāϏāĻžāĻ°ā§āϧ⧇āϰ āĻŽāĻžāύāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āĻĒ⧃āĻĨāĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻŦā§āϝāĻžāϏāĻžāĻ°ā§āϧ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝāϗ⧁āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āϰāĻžāωāĻ¨ā§āĻĄāϰ⧇āĻ•ā§āϟ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āĻŽāĻžāĻĒ API āϗ⧁āϞāĻŋ āϝāĻž āϧāϰ⧇ āύāĻŋāϝāĻŧ⧇āϛ⧇ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰ āϝāĻžāϰ āĻ‰ā§ŽāĻĒāĻ¤ā§āϤāĻŋ 0,0
    • Added a destructing API to Radius
    • Migrated various RoundRect extension functions to be properties instead
    • ( I8f5c7 , b/168762961 )
  • foundation.Box was deprecated. Please use foundation.layout.Box instead. ( Ie5950 , b/167680279 )
  • Stack was renamed to Box. The previously existing Box will be deprecated in favor of the new Box in compose.foundation.layout. The behavior of the new Box is to stack children one on top of another when it has multiple children - this is different from the previous Box, which was behaving similar to a Column. ( I94893 , b/167680279 )
  • Box decoration parameters have been deprecated. If you want to have decorations/padding on your box, use Modifiers instead (Modifier.background, Modifier.border, Modifier.padding) ( Ibae92 , b/167680279 )
  • Updated many Graphics APIs
    • āĻ¸ā§āϕ⧋āĻĒāĻĄ āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāϰāĻŽā§‡āĻļāύ āĻĒāĻĻā§āϧāϤāĻŋ āϏāĻš āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž DrawScope APIāϗ⧁āϞāĻŋ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ āĻ•āϰ⧇ āϝ⧇ āϰ⧂āĻĒāĻžāĻ¨ā§āϤāϰāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻ•āϞāĻŦā§āϝāĻžāϕ⧇āϰ āĻŽāĻ§ā§āϝ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ āĻāĻŦāĻ‚ āĻ•āϞāĻŦā§āϝāĻžāĻ• āφāĻšā§āĻŦāĻžāύ āĻ•āϰāĻžāϰ āĻĒāϰ⧇ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ
    • āĻŦ⧃āĻ¤ā§āϤāĻžāĻ•āĻžāϰ āφāϝāĻŧāϤāĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻĒāĻžāĻĨ āωāĻ˛ā§āϞ⧇āĻ– āĻ•āϰāϤ⧇ clipPath āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • āĻ•ā§āϞāĻŋāĻĒāĻĒāĻžāĻĨ⧇āϰ āĻĄāĻžāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻŦā§āϝāĻŦāϧāĻžāύ
    • Renamed DrawScope.drawCanvas to drawIntoCanvas and removed size parameter
    • Renamed dx/dy parameters in inset method to horizontal and vertical
    • Added inset overload that provides the same inset value to all 4 bounds
    • āχāύāϏ⧇āϟ āĻĒāĻĻā§āϧāϤāĻŋāϤ⧇ āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āχāĻ™ā§āĻ—āĻŋāϤ āĻ•āϰ⧇ āϝ⧇ āχāύāϏ⧇āϟ āϏāĻŽāĻ¸ā§āϤ 4 āĻĻāĻŋāϕ⧇ āĻĒā§āϰāϝāĻŧā§‹āĻ— āĻ•āϰāĻž āĻšāĻŦ⧇
    • Rect āĻ•ā§āϞāĻžāϏ⧇āϰ āϜāĻ¨ā§āϝ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻĄāϕ⧁āĻŽā§‡āĻ¨ā§āĻŸā§‡āĻļāύ
    • Updated comments on Rect parameters to match kdoc style
    • Rect.join āĻāĻŦāĻ‚ Rect.expandToInclude āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇
    • Rect.translate(āĻ…āĻĢāϏ⧇āϟ) āĻāϰ āϜāĻ¨ā§āϝ āĻ“āĻ­āĻžāϰāϞ⧋āĻĄ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ Rect.shift āĻŦāĻ¨ā§āϧ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    • ( If086a , b/167737376 )
  • @VisibleForTesting-āĻāϰ āϏāĻžāĻĨ⧇ āĻŸā§€āĻ•āĻžāϝ⧁āĻ•ā§āϤ rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled āĻāĻŦāĻ‚ textInputServiceFactory, āϤāĻžāĻĻ⧇āϰ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ API āϤ⧈āϰāĻŋ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ kdoc āϞ⧁āĻ•āĻžāύ ( I554eb , b/168308412 )
  • Remove SelectionContainer from the Top to disable default selection and avoid unexpected behavior. One can specifically use a SelectionContainer to wrap the content that needs to be selectable instead. ( I8dfe0 , b/158459594 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha03

16 āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2020

androidx.compose.ui:ui-*:1.0.0-alpha03 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha03 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • Remove scroll forward/backward semantics actions. Added steps in AccessibilityRangeInfo. ( Ia47b0 )
  • Removed onInvalidate() from Owner -- OwnedLayer handles invalidation. ( Ica72b , b/162061312 )
  • Removed operator methods on Size API that consume Offset parameters. The result of these operations is unclear and the type of result is unexpected for these. āϝ⧇āĻŽāύ should size - offset return an offset or a size result with the difference?

    Also removed deprecated methods on Size class. ( Iec902 , b/166514214 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Fix for items of LazyColumn being incorrectly drawn sometimes, this was also causing crashes in some conditions. ( Ibcf17 , b/163066980 , b/165921895 )
  • DpConstraints and APIs using it were deprecated. ( I90cdb , b/167389835 )
  • Moved createAndroidComposeRule and AndroidInputDispatcher from androidx.ui.test.android to androidx.ui.test ( Idef08 , b/164060572 )
  • Usages of gravity were consistently renamed to align or alignment in layout APIs. ( I2421a , b/164077038 )
  • ComposeTestRule-āĻ onNode āĻāĻŦāĻ‚ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦ⧈āĻļā§āĻŦāĻŋāĻ• āĻĒāĻĻā§āϧāϤāĻŋ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻ•āĻžāϰāĻŖ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦāĻŋāĻļā§āĻŦāĻŦā§āϝāĻžāĻĒā§€ āĻĒāĻĻā§āϧāϤāĻŋāϗ⧁āϞāĻŋ āĻ…āĻŦāĻŽā§‚āĻ˛ā§āϝāĻžāϝāĻŧāĻŋāϤ āĻšāϤ⧇ āϚāϞ⧇āϛ⧇āĨ¤ ( Ieae36 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha02

2āĻļ⧇ āϏ⧇āĻĒā§āĻŸā§‡āĻŽā§āĻŦāϰ, 2020

androidx.compose.ui:ui-*:1.0.0-alpha02 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha02 āĻāχ āĻ•āĻŽāĻŋāϟ āϧāĻžāϰāĻŖ āĻ•āϰ⧇āĨ¤

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • remove callback to notify Owner when layoutnode bounds change. ( If654e , b/166106882 )
  • Added support for filltype parameters on vector graphics paths to support cutouts of shapes according to evenOdd or NonZero path fill rules. ( I43dd2 )
  • Uptime and Velocity are now inline classes ( I48f4a )
  • Duration is now an inline class ( I565eb )
  • Add a callback to notify Owner when layoutnode bounds change. ( Ic40b3 )
  • Fixed issue where Rect function constructor with Offset and radius would create the Rect in the order of left, right, top, bottom instead of left, top, right, bottom.

    Removed deprecated companion methods on Rect in favor of function constructors.

    Added tests to verify methods in Rect.kt ( I08460 , b/165822356 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Added MutableRect, a rectangle that can be modified. ( I71bd2 , b/160140398 )
  • Matrix4 was replaced with Matrix. All other parts of vectormath package have been removed. ( Ibd665 , b/160140398 )
  • The calling convention for composable functions has changed. This is a binary breaking change. All libraries must be recompiled to work with this version of the compose compiler plugin.

    This change does not create a source level breaking change as the only APIs that have changed are compiler APIs that have an explicit opt in. ( I7afd2 , b/158123185 )

  • Fixed crash that could occur when dispatch to a PointerInputFilter could cause the PointerInputFilter to be synchronously removed. ( I58f25 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha01

āφāĻ—āĻ¸ā§āϟ 26, 2020

androidx.compose.ui:ui-*:1.0.0-alpha01 is released. āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 1.0.0-alpha01-āĻ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

Version 0.1.0-dev

Version 0.1.0-dev17

āφāĻ—āĻ¸ā§āϟ 19, 2020

androidx.compose.ui:ui-*:0.1.0-dev17 is released. Version 0.1.0-dev17 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • emitView was deprecated. Use AndroidView instead if possible for emitting Views inside Compose. Note that composing Views and ViewGroups directly will not be supported in the future unless these are leaves in the composition tree, case when this can be achieved using AndroidView. ( I29b1e , b/163871221 )
  • FocusState2 is deprecated and replaced by FocusState ( Ia8b79 , b/160822876 , b/160923332 )
  • The deprecated AndroidView overloads were removed. ( I946b9 , b/163802393 )
  • Custom emits can now declare that one or more of its setters can be skipped and recomposed independently of the emit. ( Ibbd13 )
  • Changed Vector classes to no longer be data classes as the same object instance is used for composition.

    Added mutableStateOf flag for VectorPainter to conditionally re-draw if contents of the vector change.

    Refactored VectorComponent instance to be part of VectorPainter as it is re-used across compositions.

    Updated GroupComponent and PathComponent to have their name fields be mutable ( Ieae45 , b/151378808 )

  • Removed onChildPositioned and OnChildPositionedModifier . āĻŦāĻŋāĻ•āĻžāĻļāĻ•āĻžāϰ⧀āĻĻ⧇āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϚāĻžāχāĻ˛ā§āĻĄ āϞ⧇āφāωāĻŸā§‡ onPositioned āĻāĻŦāĻ‚ OnPositionedModifier āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤāĨ¤ ( I4522e , b/162109766 )

  • āĻ…āĻĢāϏ⧇āϟ āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ⧇ āĻĒāϰāĻŋāĻŖāϤ āĻšāϝāĻŧ⧇āϛ⧇ ( Iaec70 )

  • SelectionContainer āĻ āĻāĻ•āϟāĻŋ āϏāĻ‚āĻļā§‹āϧāĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( I4aada , b/161487952 )

  • Removed deprecated FocusModifier ( I0b4ba , b/160922116 , b/160821157 , b/162441435 , b/160822875 , b/160921940 )

  • Added mergePolicy lambda to SemanticsPropertyKey . āĻāϟāĻŋ āĻāĻ•āĻ¤ā§āϰāĻŋāϤāĻ•āϰāϪ⧇āϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ•āĻžāĻ¸ā§āϟāĻŽ āύ⧀āϤāĻŋ āύāĻŋāĻ°ā§āϧāĻžāϰāĻŖ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āĻĄāĻŋāĻĢāĻ˛ā§āϟ āύ⧀āϤāĻŋ āĻšāϞ āĻ…āĻ­āĻŋāĻ­āĻžāĻŦāĻ• āĻŽāĻžāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝāĻĻāĻŋ āχāϤāĻŋāĻŽāĻ§ā§āϝ⧇ āωāĻĒāĻ¸ā§āĻĨāĻŋāϤ āĻĨāĻžāϕ⧇, āĻ…āĻ¨ā§āϝāĻĨāĻžāϝāĻŧ āϚāĻžāχāĻ˛ā§āĻĄ āĻŽāĻžāύāĨ¤ ( Iaf6c4 , b/161979921 )

  • Constraints is now an inline class ( I88736 )

  • Added FocusManager that moves common focus logic out of AndroidComposeView ( I528ef , b/161487952 , b/162206799 )

  • Updated PointerEventPass names for Alpha release. ( Ifda6f )

  • IntOffset is now an inline class ( Iac0bf )

  • IntSize āĻāĻ–āύ āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ ( I2bf42 )

  • PlacementScope.placeAbsolute() āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ PlacementScope.place() āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āĻāĻŦāĻ‚ āφāϗ⧇āϰ PlacementScope.place() āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ PlacementScope.placeRelative() āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ As a result, the PlacementScope.place() method will not automatically mirror the position in right-to-left contexts anymore. āϝāĻĻāĻŋ āĻāϟāĻŋ āχāĻšā§āĻ›āĻž āĻšāϝāĻŧ āϤāĻŦ⧇ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ PlacementScope.placeRelative() āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I873ac , b/162916675 )

  • AlertDialog now uses FlowRow for buttons ( I00ec1 , b/161809319 , b/143682374 )

  • Made some test utilities non public because they are not where they belong. Will be made public in the future. ( I32ab1 )

  • Refactored organization of pointer input code. ( Ie3f45 )

  • Deprecated PxBounds in favor of Rect. Updated all usages of PxBounds with rect and added proper deprecate/replace with annotations to assist with the migration. ( I37038 , b/162627058 )

  • Removed Deprecated KeyEvent2. Use KeyEvent instead. ( Ied2d0 , b/162097587 )

  • KeyEvent has a unicode property that can be used to get the unicode character generated by the specified key and meta key state combination ( If3afc )

  • Made the DelayUp custom event and related classes an opt in API as it is very likely going to be changed. ( I56d6f )

  • Removed 2 PointerEventPasses that are no longer needed. ( I3dd9d )

  • Add parameter color, shadow and TextDecoration to Paragraph.paint This function is useful to avoid unnecessary Paragraph recreation. ( I81689 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻŸā§‡āĻ•ā§āϏāϟāĻĢāĻŋāĻ˛ā§āĻĄ āĻĨ⧇āϕ⧇ āĻĢā§‹āĻ•āĻžāϏ āĻšā§‡āĻžā§āϜāĻĄ āĻ•āϞāĻŦā§āϝāĻžāĻ•āϗ⧁āϞāĻŋ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇⧎ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Modifier.focusObserver āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I51089 , b/161297615 )
  • Modifier.drawBorder has been deprecated. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Modifier.border āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ āĻŦāĻ°ā§āĻĄāĻžāϰ āĻĄāĻžāϟāĻž āĻ•ā§āϞāĻžāϏ āĻŦāĻ°ā§āĻĄāĻžāϰāĻ¸ā§āĻŸā§āϰ⧋āĻ• ( I4257d , b/158160576 ) āĻĻā§āĻŦāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇
  • Removed deprecated FrameManager calls.

    Internal compose APIs have been changed to reduce the amount of overhead to track state objects such as mutableStateof() ( I80ba6 )

  • VerticalScroller and HorizontalScroller have been removed. Use ScrollableColumn/Row instead. Modifier.drawBackground has been removed. Use Modifier.background ( I73b0d , b/163019183 )

  • Crash when something which saves the state was used inside the for loop is fixed. Now having the same key in savedInstanceState() is allowed, api of UiSavedStateRegistry is now adjusted to this new requirement ( I4ab76 , b/160042650 , b/156853976 , b/159026663 , b/154920561 )

  • The state { ... } composable is now deprecated in favor of explicit calls to remember { mutableStateOf(...) } for clarity. This reduces the overall API surface and number of concepts for state management, and matches the by mutableStateOf() pattern for class property delegation. ( Ia5727 )

  • Renamed RRect to RoundRect to better fit compose naming patterns Created similar function constructors to RRect and deprecated RRect function constructors ( I5d325 )

āϏāĻ‚āĻ¸ā§āĻ•āϰāĻŖ 0.1.0-dev16

5 āφāĻ—āĻ¸ā§āϟ, 2020

androidx.compose.ui:ui-*:0.1.0-dev16 is released. Version 0.1.0-dev16 contains these commits.

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • OnChildPositioned has been deprecated. āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āϏāĻ¨ā§āϤāĻžāύ⧇āϰ āωāĻĒāϰ OnPositioned āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ ( I87f95 , b/162109766 )
  • setViewContent was deprecated. setContent should be used instead. ( I7e497 , b/160335130 )
  • Added the AndroidViewBinding API for inflating and composing layout resources, based on ViewBinding. ( I081c6 )
  • KeyEvent2 is replaced by KeyEvent ( I2d770 , b/162097585 )
  • Added support for Alt hardware key ( I9036b )
  • FocusManager is Deprecated. Use Modifier.focus(), Modifier.focusObserver() and Modifier.focusRequester() instead. ( I74ae4 , b/162211322 )
  • loadVectorResource supports trimPath attributes ( I808fe )
  • āĻĄāĻžāϝāĻŧāĻžāϞāĻ—āϕ⧇ UI āĻ āϏāϰāĻžāύ ( I47fa6 )
  • Removed 2 PointerEventPasses that are no longer needed. ( I33ca7 )
  • Implemented PointerInteropModifier which provides the ability to receive MotionEvents and interact with Compose as if you are an implementation of an Android View. ( Ieb08c )
  • Removed the deprecated tag modifier. Please use layoutId instead. ( Idaa05 , b/162023919 )
  • The APIs for right-to-left support has been updated. LayoutDirectionAmbient āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇, āϝāĻž āĻĒāĻĄāĻŧāϤ⧇ āĻāĻŦāĻ‚ āϞ⧇āφāωāĻŸā§‡āϰ āĻĻāĻŋāĻ• āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāϤ⧇ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ Modifier.rtl and Modifier.ltr have been removed. ( I080b3 )
  • Support path trimming in vector graphics ( Ie16c9 , b/158188351 )
  • Added Modifier.layout() that allows to create a custom layout modifier conveniently ( I73b69 , b/161355194 )
  • Added a new AndroidView API and deprecated the existing ones. ( I5bcfd )
  • Modifier.plus has been deprecated, use Modifier.then instead. 'Then' has a stronger signal of ordering, while also prohibits to type Modifier.padding().background() + anotherModifier , which breaks the chain and harder to read ( Iedd58 , b/161529964 )
  • Add [Abstract]ComposeView View subclasses for hosting Compose content in a View hierarchy. ( I46357 )
  • Row āĻāĻŦāĻ‚ Column āĻāĻ–āύ āχāύāϞāĻžāχāύ āĻĢāĻžāĻ‚āĻļāύ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āϤāĻžāĻĻ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ“āĻ­āĻžāϰāĻšā§‡āĻĄ āĻšā§āϰāĻžāϏ. ( I75c10 )
  • SubcomposeLayout is added. It is a low level primitive which allows to compose the children during the measuring if we want to use some values available only later during the measure for the subtree composition. For example WithConstraints is not implemented using SubcomposeLayout. ( I25cc8 )
  • Added SemanticsNode.positionInRoot to get the position of a SemanticsNode relative to the root of the Compose hierarchy ( Icdf26 , b/161336532 )
  • MotionEvents passed all the way through from Android, into Compose, and back into Android. ( I14be8 , b/158034713 )
  • Removed dropdownPopup. ( I00430 )
  • Fixed popup position on cut-out displays. ( Idd7dd )
  • Add accessibility action to get TextLayoutResult ( I9d6e6 )
  • RemeasurementModifier added. it allows to synchronously remeasure the layout. In general you never need it as remeasure/relayout is happening automatically, but we use it inside LazyColumnItems during the scroll. ( I5f331 , b/160791058 )
  • Remove getLineEllipsisOffset/getLineEllipsisCount. Use getLineVisibleEnd/getLineEnd/isLineEllipsized instead. ( I85aa2 )
  • Add some Marks/Annotations for best practice reason. ( I66b20 )
  • expose more line APIs in TextLayoutResult. ( I79bd2 )
  • Built-in vector converters to convert built-in units are now accessible via Foo.VectorConverter. eg Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, etc ( I3e273 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • Address broad API fixes ( I077bc )
    1. āĻ…āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ…āĻĢāϏ⧇āϟāĻŦ⧇āϏ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āϏāϰāĻžāύ
    2. Align Offset and IntOffset classes to have a consistent API surface
    3. Rename IntOffset.Origin to IntOffset.Zero to be consistent with Offset API
    4. Moved nativeCanvas method off of Canvas interface to support consumers to create their own Canvas instances
    5. āϞ⧇āϟāĻŋāύāĻŋāĻŸā§‡āϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āĻāĻ•āϟāĻŋ āύāύ-āύāĻžāϞ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāϤ⧇ āĻĄā§āϰāĻ¸ā§āϕ⧋āĻĒāϕ⧇ āϰāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϰ āĻ•āϰāϤ⧇ āĻ¸ā§āϟāĻžāĻŦ āĻ–āĻžāϞāĻŋ āĻ•ā§āϝāĻžāύāĻ­āĻžāϏ āĻ•ā§āϞāĻžāϏ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āĻāĻŦāĻ‚ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇āϰ āĻ…-āĻļā§‚āĻ¨ā§āϝāϤāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    6. Renamed ClipOp enums to be Pascal Case
    7. FilterQuality enums āϕ⧇ Pascal Case āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    8. StrokeJoin enums āϕ⧇ Pascal Case āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    9. Renamed PointMode enums to be Pascal Case
    10. Pascal Case āĻšāϤ⧇ āĻĒ⧇āχāĻ¨ā§āϟāĻŋāĻ‚ āĻ¸ā§āϟāĻžāχāϞ enums āĻāϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    11. Renamed PathFillType enums to be Pascal Case
    12. StrokeCap ​​enums āϕ⧇ āĻĒāĻžāĻ¸ā§āĻ•āĻžāϞ āϕ⧇āϏ āĻšāĻŋāϏ⧇āĻŦ⧇ āύāĻžāĻŽāĻ•āϰāĻŖ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    13. āφāϰ lateinit āĻĒā§āϝāĻžāϰāĻžāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ DrawCache āĻŦāĻžāĻ¸ā§āϤāĻŦāĻžāϝāĻŧāύ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    14. āĻĢāĻŋāϞāĻĒ⧇āĻ¨ā§āϟ āĻāĻŦāĻ‚ āĻ¸ā§āĻŸā§āϰ⧋āĻ•āĻĒ⧇āĻ¨ā§āĻŸā§‡āϰ āĻ…āĻ­ā§āϝāĻ¨ā§āϤāϰ⧀āĻŖ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻ…āϞāϏ āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāĻ¤ā§āĻŦ āφāϰ āĻŦā§āϝāĻŦāĻšāĻžāϰ āύāĻž āĻ•āϰāϤ⧇ āĻĄā§āϰāĻ¸ā§āϕ⧋āĻĒ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    15. Updated Image composable to avoid Box usage for less overhead
    16. @āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧀āϝāĻŧ āĻŸā§€āĻ•āĻž āĻĨāĻžāĻ•āϤ⧇ āφāωāϟāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    17. āĻĒā§āϰāϤāĻŋāϟāĻŋ āĻĒāĻžāĻĨ āύāĻŋāĻ°ā§āĻĻ⧇āĻļ⧇āϰ āϜāĻ¨ā§āϝ @ āĻ…āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ⧀āϝāĻŧ āĻŸā§€āĻ•āĻž āĻĨāĻžāĻ•āĻžāϰ āϜāĻ¨ā§āϝ PathNode āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    18. Updated Vector subcomposition to remove redundant conditional checks for equality as compose already handles them
    19. Deprecated Rect companion constructor methods in favor of function constructors
    20. @Immutable āĻāĻŦāĻ‚ @Stable API āĻāϰ āϏāĻžāĻĨ⧇ āĻŦā§āϰāĻžāĻļ āĻ•ā§āϞāĻžāϏ āĻāĻŦāĻ‚ āĻĢāĻžāĻ‚āĻļāύ āĻ•āύāĻ¸ā§āĻŸā§āϰāĻžāĻ•ā§āϟāϰ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    21. Updated VertexMode enum to be PascalCase
    22. āĻĒ⧇āχāĻ¨ā§āĻŸā§‡ āĻ¸ā§āĻŸā§āϰ⧋āĻ• āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞāĻŋ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰāĻž āĻšāϞ⧇ āĻļāĻ°ā§āϤāϏāĻžāĻĒ⧇āĻ•ā§āώ⧇ āĻ“āĻ­āĻžāϰāϰāĻžāχāϟ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄā§āϰāĻ¸ā§āϕ⧋āĻĒ āύāĻŋāĻ°ā§āĻŦāĻžāϚāύ āĻĒ⧇āχāĻ¨ā§āϟ āĻĒāĻĻā§āϧāϤāĻŋ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
    23. Updated Size to add destructuring API, rename UnspecifiedSize to Unspecified and removed unused methods
  • Updated compose BlendMode API consumption to properly map between Android framework BlendModes and PorterDuff modes depending on API level. Introduced BlendMode#isSupported API to act as a capability query to determine if the BlendMode is supported on the device before it is used. ( I0ef42 )
  • LazyItemScope āĻ…āϞāϏ āϤāĻžāϞāĻŋāĻ•āĻžāϰ āφāχāĻŸā§‡āĻŽ āϏāĻžāĻŽāĻ—ā§āϰ⧀ āĻĒā§āϝāĻžāϰāĻžāĻŽā§‡āϰ āϜāĻ¨ā§āϝ āϝ⧋āĻ— āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞāĨ¤ It provides modifiers to fill the parent max size which solves the use case when the item should fill the viewport and the regular Modifier.fillMaxSize() doesn't work as the item is measured with infinity constraints. ( Ibd3b2 , b/162248854 )
  • āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇ SemanticsNodeInteraction.performPartialGesture āĨ¤ Use SemanticsNodeInteraction.performGesture instead. ( Id9b62 )
  • LazyColumnItems was renamed to LazyColumnFor . LazyRowItems āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ LazyRowFor ( I84f84 ) āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇
  • foundation.shape.corner package was flattened to foundation.share ( I46491 , b/161887429 )
  • Renamed AndroidComposeTestRule to createAndroidComposeRule . ( I70aaf )
  • Added more APIs to TextLayoutResult . ( Id7e04 )
  • āĻŽā§āϝāĻžāĻŸā§‡āϰāĻŋāϝāĻŧāĻžāϞ FilledTextField āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ TextField āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āĻāĻŦāĻ‚ āĻĢāĻžāωāĻ¨ā§āĻĄā§‡āĻļāύāĻžāϞ TextField āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ BaseTextField āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϝāĻžāϤ⧇ āϏāĻšāϜāϤāĻŽ āĻ•āĻžāĻ™ā§āĻ•ā§āώāĻŋāϤ API āφāĻŦāĻŋāĻˇā§āĻ•āĻžāϰ āĻāĻŦāĻ‚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āϏāĻšāϜ āĻšāϝāĻŧ ( Ia6242 , b/155482676 )
  • Modifier.drawBackground has been renamed to Modifier.background ( I13677 )

Version 0.1.0-dev15

22 āϜ⧁āϞāĻžāχ, 2020

androidx.compose.ui:ui-*:0.1.0-dev15 is released. 0.1.0-dev15 āϏāĻ‚āĻ¸ā§āĻ•āϰāϪ⧇ āĻāχ āĻ•āĻŽāĻŋāϟ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āύāĻŋāĻ°ā§āĻ­āϰāϤāĻž āφāĻĒāĻĄā§‡āϟ

  • To use the 0.1.0-dev15 version of Compose, you will need to update your dependencies according to the new code snippets shown above in Declaring dependencies .

āĻāĻĒāĻŋāφāχ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ

  • FocusModifier is deprecated in favor of Modifier.focus, Modifier.focusRequester, Modifier.focusObserver. FocusState and FocusDetailedState are deprecated in favor of FocusState2 ( I46919 , b/160822875 , b/160922136 )
  • Added a modifier to observe focus state change. ( I05866 , b/160924455 , b/160923326 )
  • Added a modifier to request focus changes ( I8dd73 , b/161182057 , b/160924778 )
  • Ajdust the Toolbar Menu to show copy, cut, paste properly. ( Id3955 )
  • Single-value semantics properties now use a calling style. For example, 'semantics { hidden = true }' is now written as: semantics { hidden() } . ( Ic1afd , b/145951226 , b/145955412 )
  • Added Modifier.focus which replaces FocusModifier. ( Ib852a , b/160924778 )
  • Add FloatingToolbar for TextField Selection. ( Ie8b07 )
  • Added an experimental api annotation for key input related API ( I53c0a )
  • Added an experimental api annotation for all Focus-related API ( I53b24 , b/160903352 )
  • Added FocusState2 which will replace FocusDetailedState ( I0a3ba , b/160822595 )
  • Added ExperimentalFocus which is an @OptIn annotation for Focus API. ( I1544b , b/160820961 )
  • An IntBounds unit class has been added, representing integer pixel bounds from layout. The API of PopupPositionProvider has been updated to use it. ( I0d8d0 , b/159596546 )
  • Applier now requires a clear() method for disposing compositions ( Ibe697 )
  • KeyEvent is deprecated and replaced by KeyEvent2 ( I68730 )
  • A new optional flag useUnmergedTree was added to test finders. ( I2ce48 )
  • Made LayoutNode experimental API ( I4f2e9 )
  • Added copy methods to various inline class types including:

    • āĻ…āĻĢāϏ⧇āϟ
    • āφāĻ•āĻžāϰ
    • āĻŦā§āϝāĻžāϏāĻžāĻ°ā§āϧ
    • āĻ—āϤāĻŋ
    • āĻŸā§āϰāĻžāĻ¨ā§āϏāĻĢāĻ°ā§āĻŽ āĻ…āϰāĻŋāϜāĻŋāύ

    • Deprecated Size.copy companion object method favor of instance copy method ( Ife290 , b/159905651 )

  • Popups, Dialogs and Menus are now inheriting the contextual MaterialTheme ( Ia3665 , b/156527485 )

  • TextDirection is renamed as ResolvedTextDirection ( I3ff38 )

  • Removed layout direction parameter from the measure block of the Layout() function. Layout direction is however available inside the callback through the measure scope object ( Ic7d9d )

  • Refactor SelectionHandles for reusing. ( I420e0 )

  • Clickable was removed. Modifier.clickable āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ ( I84bdf )

  • TestTag and Semantics have been deleted. Use Modifier.testTag and Modifier.semantics instead ( I15ff0 , b/158841414 )

  • Prior to this change, the compose compiler plugin would non-trivially intercept calls to constructors inside of a @Composable function if there was an ( I5205a , b/158123804 )

  • Modifier.tag was renamed to Modifier.layoutId, to avoid confusion with Modifier.testTag. ( I995f0 )

  • Alignment line Int positions returned from Placeable#get(AlignmentLine) are now non-null. If the queried alignment line is missing, AlignmentLine.Unspecified will be returned. ( I896c5 , b/158134875 )

  • The AndroidView composable was added a modifier parameter. ( I48a88 , b/158746303 )

  • Semantics() is deprecated. Use Modifier.semantics() instead. ( I72407 , b/158841414 )

  • Add viewModel() composable which allows to create or get already created ViewModel similarly to how it works in Activity or Fragment ( I5fdd1 )

  • Replaced usage of IntPx with Int. IntOffset āĻĻāĻŋāϝāĻŧ⧇ IntPxPosition āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ Replaced IntPxSize with IntSize. ( Ib7b44 )

  • In order to consolidate the number of classes used to represent sizing information, standardize on usage of the Size class instead of PxSize. āĻāϟāĻŋ āĻĢā§āϞ⧋āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻĒā§āϰāĻ¸ā§āĻĨ āĻāĻŦāĻ‚ āωāĻšā§āϚāϤāĻž āĻĒā§āϰāϤāĻŋāύāĻŋāϧāĻŋāĻ¤ā§āĻŦ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ 2 āϟāĻŋ āĻĢā§āϞ⧋āϟ āĻŽāĻžāύ āĻĒā§āϝāĻžāĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ⧇āϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ ( IC0191 )

  • In order to consolidate the number of classes used to represent positioning information, standardize on usage of the Offset class instead of PxPosition. āĻāϟāĻŋ āĻĢā§āϞ⧋āϟ āĻšāĻŋāϏāĻžāĻŦ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ x āĻāĻŦāĻ‚ y āĻ…āĻĢāϏ⧇āϟāϗ⧁āϞāĻŋāϕ⧇ āωāĻĒāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ 2āϟāĻŋ āĻĢā§āϞ⧋āϟ āĻŽāĻžāύ āĻĒā§āϝāĻžāĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āϞāĻ‚ āϟ⧁ āĻĒā§āϝāĻžāĻ• āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āχāύāϞāĻžāχāύ āĻ•ā§āϞāĻžāϏ⧇āϰ āϏ⧁āĻŦāĻŋāϧāĻž āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ ( I3ad98 )

  • Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters. Deleted Px class in its entirety ( I3ff33 )

  • Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I086f4 )

  • Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Id3434 )

  • Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I97a5a )

  • TestTag is now deprecated. Use Modifier.testTag instead. ( If5110 , b/157173105 )

  • The default, no-op, implementation of ParentDataModifier#modifyParentData has been removed - it was equivalent to not implementing the interface in the first place. ( I0deaa )

  • Previously deprecated ScaleFit as removed. Use ContentScale instead. ( Ifbc5b )

  • āĻĒāĻŋāĻ•ā§āϏ⧇āϞ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϜāĻ¨ā§āϝ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ Dp āĻāĻŦāĻ‚ āφāĻĻāĻŋāĻŽ āĻĒā§āϰāĻ•āĻžāϰ⧇āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻŦ⧃āĻšā§Ž āϰāĻŋāĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋāĻ‚ āĻĒā§āϰāĻšā§‡āĻˇā§āϟāĻžāϰ āĻ…āĻ‚āĻļ āĻšāĻŋāϏāĻžāĻŦ⧇ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āϰāϚāύāĻž āĻ•ā§āϞāĻžāϏ⧇ Px āĻ•ā§āϞāĻžāϏ⧇āϰ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻŋāϤ āĻŦā§āϝāĻŦāĻšāĻžāϰ ( I19d02 )

  • Added the DropdownMenu component in ui-material, a Material Design menu implementation. ( I9bb3d )

  • Removed deprecated LayoutTag(), please use Modifier.tag() instead. Removed deprecated Modifier.matchParent(), please use Modifier.matchParentSize() instead. ( If8044 )

  • Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( I57bff )

  • Modifier.semantics has been undeprecated to allow usages for high level components. ( I4cfdc )

  • Consolidated CanvasScope implementations so there is now just DrawScope and ContentDrawScope Renamed CanvasScope to DrawScope. Updated DrawScope to implement Density interface and provide LayoutDirection Deleted DrawScope subclass in ContentDrawScope Painter and PainterModifier have been updated to no longer maintain an RTL property themselves as DrawScope provides this already without manually providing it ( I1798e )

  • DoubleTapGestureFilter now disambiguates SingleTapGestureFilter across the tree. ( If92b1 )

  • Updated Alignment API and added support for absolute alignment (which does not auto-mirror in Rtl context) ( I38cd3 )

  • DrawLayer modifiers api has been changed: outlineShape renamed to shape and has the RectangleShape default value and now non-nullable; clipToOutline renamed to clip; clipToBounds removed as it is the same as clip == true with RectangleShape ( I7ef11 , b/155075735 )

  • Updated higher level compose APIs that expose a Canvas to expose CanvasScope instead. This removes the need for consumers to maintain their own Paint objects. āĻ­ā§‹āĻ•ā§āϤāĻžāĻĻ⧇āϰ āϜāĻ¨ā§āϝ āϝāĻžāĻĻ⧇āϰ āĻāĻ–āύāĻ“ āĻāĻ•āϟāĻŋ āĻ•ā§āϝāĻžāύāĻ­āĻžāϏ⧇ āĻ…ā§āϝāĻžāĻ•ā§āϏ⧇āϏ⧇āϰ āĻĒā§āϰāϝāĻŧā§‹āϜāύ āϤāĻžāϰāĻž drawCanvas āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĒāĻĻā§āϧāϤāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇ āϝāĻž āĻ…āĻ¨ā§āϤāĻ°ā§āύāĻŋāĻšāĻŋāϤ āĻ•ā§āϝāĻžāύāĻ­āĻžāϏ⧇āϰ āϏāĻžāĻĨ⧇ āĻ…āĻ™ā§āĻ•āύ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āχāĻ¸ā§āϝ⧁ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ āĻ•āϞāĻŦā§āϝāĻžāĻ• āĻĒā§āϰāĻĻāĻžāύ āĻ•āϰ⧇āĨ¤ ( I80afd )

  • WithConstraints trailing lambda API has been changed. Now instead of two params it has a receiver scope which in addition to constraints and layoutDirection provides minWidth, maxWidth, minHeight and maxHeight properties in Dp ( I91b9a , b/149979702 )

  • Renamed LayoutModifier2 to LayoutModifier. ( Id29f3 )

  • Removed deprecated LayoutModifier interface. ( I2a9d6 )

  • Intrinsic measurements functions in Layout and LayoutModifier2 have an IntrinsicMeasureScope receiver now which provides intrinsics query API with implicitly propagated layout direction. ( Id9945 )

  • Layout and LayoutModifier children can be measured with a different layout direction. ( Ibd731 )

  • New Modifier.zIndex() is added to control the drawing order of the children within the same parent layout. elevation property on DrawLayerModifier is renamed to shadowElevation and doesn't control the drawing order anymore. The params order fo DrawShadow is changed: elevation is now the first one and the shape is the second one with a RectangleShape default. ( I20150 , b/152417501 )

  • Removed onSizeChange and onPositionChange in Owner. ( I5c718 )

  • Added Constraints2, a copy of Constraints that does only supports Int connstraints values rather than IntPx. IntPx will be removed and all integer constraints will be assumed to be pixels like Android.

    • Added IntSize as well, which will eventually replace IntPxSize. ( I4b43a )
  • Made Alignment instantiable with arbitrary values. Added 1D Alignments. ( Ia0c05 )

  • alignToSiblings now accepts a Measured instead of Placeable. ( I5788d )

  • ( I45f09 , b/152842521 )

    • Renamed ScaleFit to ContentScale
    • Moved ContentScale from ui-graphics to ui-core module to live in the same module as the Alignment API.
    • Renamed FillMaxDimension to Crop
    • Renamed FillMinDimension to Fit
    • Renamed Fit to Inside to better match
    • ImageView.ScaleType equivalents
    • Added documentation indicating that the combination of Crop and Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_CROP and Fit used with Alignment.Center achieves the same result as ImageView.ScaleType.FIT_CENTER Inside used with Alignment.Center achieves the same result as ImageView.ScaleType.CENTER_INSIDE
  • Rtl support for draw modifiers. ( I0aaf9 )

  • Released API for inflating Android Views from XML. See ViewInCompose demo for more details. ( I42916 )

  • DrawModifier API āωāĻ¨ā§āύāϤ āĻ•āϰ⧁āύ:

    • draw() ContentDrawScope āĻāϰ āϜāĻ¨ā§āϝ āϰāĻŋāϏāĻŋāĻ­āĻžāϰ āĻ¸ā§āϕ⧋āĻĒ āϤ⧈āϰāĻŋ āĻ•āϰ⧇āϛ⧇
    • Removed all parameters on draw()
    • DrawScope has same interface as former CanvasScope
    • ContentDrawScope has drawContent() method ( Ibaced , b/152919067 )
  • Added positionInParent and boundsInParent for LayoutCoordinates. ( Icacdd , b/152735784 )

  • DrawLayerModifier and drawLayer() now default clipToBounds and clipToOutline to false. ( I0eb8b , b/152810850 )

  • Renamed LayoutResult to MeasureResult. ( Id8c68 )

  • Added LayoutModifier2, a new API for defining layout modifiers; deprecated LayoutModifier ( If32ac )

  • āĻĢā§āϝāĻžāĻ•ā§āϟāϰāĻŋ āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ āĻĢāĻžāĻ‚āĻļāύ ( I225e4 ) āϏāĻš āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāĻŋāϤ āĻŽāĻĄāĻŋāĻĢāĻžāϝāĻŧāĻžāϰ āĻĒā§āϞāĻžāϏ āĻ…āĻĒāĻžāϰ⧇āϟāϰ

  • Added translationX/Y properties to support offseting the display list of drawing commands for a given Layer. This is useful to move content in response to animations or touch events. ( I8641c )

  • Added pivotX, pivotY parameters to Layer APIs to support rotation and scaling around a particular point on a layer ( Icf7c3 )

  • Add OnPositionedModifier and OnChildPositionedModifier to replace OnPositioned and OnChildPositioned composable functions. ( I2ec8f )

  • Added LayerModifier, a modifier that allows adding a RenderNode for a Layout. It allows setting clipping, opacity, rotation, scaling, and shadows. This will replace RepaintBoundary. ( I7100d , b/150774014 )

  • Made the layout direction be propagated from parent layout node to children. Added layout direction modifier. ( I3d955 )

  • Stack component supports right-to-left directionality ( Ic9e00 )

  • Initial support for Rtl in Compose layout ( Ia5519 )

  • Density and DensityScope were merged into one interface. Instead of ambientDensity() you can now use DensityAmbient.current. Instead of withDensity(density) just with(density) ( I11cb1 )

  • Changed LayoutCoordinates to make providedAlignmentLines a Set instead of a Map and have LayoutCoordinates implement the get() operator instead for retrieving a value. This makes it easier for modifiers to modify one or more value of the set without creating a new collection for each modifier. ( I0245a )

  • LayoutCoordinates no longer has a position property. The position property does not make sense when considering LayoutModifiers, rotation, or scaling. Instead, developers should use parentCoordinates and childToLocal() to calculate the transform from one LayoutCoordinate to another.

    LayoutCoordinates uses IntPxSize for the size property instead of PxSize. Layouts use integer pixel sizes for layouts, so all layout sizes should use integers and not floating point values. ( I9367b )

  • Improvements to the API surface of Constraints ( I0fd15 )

  • āĻ•ā§āϝāĻžāύāĻ­āĻžāϏāĻ¸ā§āϕ⧋āĻĒ āĻāĻĒāĻŋāφāχ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ āϝāĻž āĻāĻ•āϟāĻŋ āĻ•ā§āϝāĻžāύāĻ­āĻžāϏ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟāϕ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻŸā§‡āϟāϞ⧇āϏ, āĻĄāĻŋāĻ•ā§āϞāĻžāϰ⧇āϟāĻŋāĻ­ āĻĄā§āϰāϝāĻŧāĻŋāĻ‚ āĻāĻĒāĻŋāφāχ āϏāĻžāϰāĻĢ⧇āϏāϕ⧇ āωāĻ¨ā§āĻŽā§‹āϚāĻŋāϤ āĻ•āϰ⧇āĨ¤ Transformations are contained within their own receiver scope and sizing information is also scoped to corresponding inset bounds. āĻ…āĻ™ā§āĻ•āύ āĻ•ā§āϰāĻŋāϝāĻŧāĻžāĻ•āϞāĻžāĻĒāϗ⧁āϞāĻŋ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āϕ⧋āύāĻ“ āĻ—ā§āϰāĻžāĻšāĻ•āϕ⧇ āύāĻŋāϜāĻ¸ā§āĻŦ āĻĒ⧇āχāĻ¨ā§āϟ āĻ¸ā§āĻŸā§‡āϟ āĻ…āĻŦāĻœā§‡āĻ•ā§āϟ āĻŦāϜāĻžāϝāĻŧ āϰāĻžāĻ–āϤ⧇ āĻšāĻŦ⧇ āύāĻžāĨ¤

    • āĻāĻ•āϟāĻŋ āĻ˜ā§‹āώāĻŖāĻžāĻŽā§‚āϞāĻ• āĻ—ā§āϰāĻžāĻĢāĻŋāĻ•ā§āϏ āĻĄā§‡āĻŽā§‹ āĻ…āĻ¨ā§āϤāĻ°ā§āϭ⧁āĻ•ā§āϤ āĻ•āϰāϤ⧇ āĻ•ā§āϝāĻžāύāĻ­āĻžāϏāĻ¸ā§āϕ⧋āĻĒ āύāĻŽā§āύāĻž āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻĄā§‡āĻŽā§‹ āĻ…ā§āϝāĻžāĻĒ āφāĻĒāĻĄā§‡āϟ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ ( Ifd86d )
  • Removed unused MaskFilter API as it has limited usage and is not optimized for hardware acceleration in most use cases ( I54f76 )

  • RectangleShape androidx.ui.foundation.shape.* āĻĨ⧇āϕ⧇ androidx.ui.graphics āĻ āϏāϰāĻžāύ⧋ āĻšāϝāĻŧ⧇āϛ⧇āĨ¤* ( Ia74d5 , b/154507984 )

  • āĻāĻĒāĻŋāφāχ-āĻāϰ āϏāĻŽāĻ¸ā§āϤ āĻŦāĻžāϤāĻŋāϞāϝ⧋āĻ—ā§āϝ āϰāϙ⧇āϰ āĻŦā§āϝāĻŦāĻšāĻžāϰāϕ⧇ āύāύ-āύāĻžāϞ⧇āĻŦāϞ āĻĻāĻŋāϝāĻŧ⧇ āĻĒā§āϰāϤāĻŋāĻ¸ā§āĻĨāĻžāĻĒāύ āĻ•āϰ⧁āύ āĻāĻŦāĻ‚ āύāĻžāϞ ( Iabaa7 ) āĻāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ Color.Unset āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ

  • Introduce additional optional rect parameter to ImagePainter to support drawing a subsection of underlying ImageAsset ( I0ea9e )

  • Added Unset Color to represent an unset value without boxing Colors. ( If901a )

  • Added Canvas.rotate and Canvas.scale extension methods to consume optional pivot coordinates for transformations. These default to the top left corner of the current canvas translation.

    Also moved Canvas.rotateRad to be an extension method for consistency ( Ibaca6 )

  • Created PixelMap API to support querying pixel information from an ImageAsset. ( I69ad6 )

  • Renamed toFrameworkRect/toFrameworkRectF to toAndroidRect/toAndroidRectF to match naming convention for object conversions between compose and the Android framework APIs they are built on top of. Also updated docs on these APIs ( I86337 )

  • Added VectorPainter API to replace existing subcomposition API for vector graphics. Result of subcomposition is a VectorPainter object instead of a DrawModifier. Deprecated previous DrawVector composables in favor of VectorPainter.

    Renamed Image(Painter) API to PaintBox(Painter) Created Vector composable that behaves like the Image composable except with a VectorAsset instead of an ImageAsset ( I9af9a , b/149030271 )

  • Renamed Image to ImageAsset to better differentiate the difference between the Image data and the upcoming Image composable used to participate in layout and draw content. _Body:Created extension method on android.graphics.Bitmap, Bitmap.asImageAsset(), to create an instance of an ImageAsset useful for combining traditional Android application development with the compose framework ( Id5bbd )

  • Added TextDirection.Content ( I48f36 )

  • Added TextDecoration.plus operator ( I0ad1a )

  • Force is removed from TextDirectionAlgorithm enum values ( Icc944 )

  • TextDirectionAlgorithm is renamed as TextDirection ( I75ce8 )

  • Implements LongPressAndDrag for TextField Selection. ( I17919 )

  • Added AnnotatedString.getStringAnnotations that returns all annotations within the range. ( I1fa00 )

  • Changed the package name for Locale and LocaleList from androidx.ui.text to androidx.ui.intl ( I8132c )

  • TextField's cursor has a blinking animation ( Id10a7 )

  • API change: AnnotatedString(builder: Builder) is renamed to annotatedString(builder: Builder). ( Ia6377 )

  • API change: AnnotatedString.Item is renamed to AnnotatedString.Range. ( I2d44d )

  • Rename AnnotatedString.Builder.addAnnotationString to addStringAnnotation. ( I5059e )

  • Now it is possible to hide/show software keyboard by using SoftwareKeyboardController which is delivered by onTextInputStarted callback ( I8dc44 , b/151860051 )

  • Added plus operator for (Text/Paragraph/Span)Style which delegates to merge() function. ( Ia1add )

  • FontWeight.lerp does not snap anymore. It is still a data class. ( I521c2 )

  • FontWeight constructor is now public, it is not data class anymore. ( Id6b1f )

  • Add getLineStart, getLineEnd, getEllipsisOffset and getEllipsisCount to TextLayoutResult ( Ibc801 )

  • ui-text module is renamed as ui-text-core ( I57dec )

  • Removed unused Size class as there is a duplicate Size class in the ui-geometry module that is being consumed. ( I1b602 )

  • Added AdapterList, a scrolling list component that only composes and lays out the visible items. Currently known issues include that it is vertical-only and does not fully handle all cases of changes to its children. ( Ib351b )

  • Add paddings, border, shape and background param to Box ( I05027 , b/148147281 )

āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ

  • āĻŸā§‡āĻ•ā§āϏāϟ āĻĢāĻŋāĻ˛ā§āĻĄā§‡ onFocusChange āĻ•āϞāĻŦā§āϝāĻžāϕ⧇āϰ āύāĻžāĻŽ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āϰ⧇ onFocusChanged ( Ida4a1 )
  • VerticalScroller āĻāĻŦāĻ‚ HoriziontalScroller āĻŦāĻ°ā§āϜāύ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻ•āϞāĻžāĻŽ/āϏāĻžāϰāĻŋ āφāϚāϰāĻŖ āĻāĻŦāĻ‚ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻŦāĻŋāĻ˛ā§āĻĄ-āχāύ āĻ…āĻ­āĻŋāĻœā§āĻžāϤāĻžāϰ āϜāĻ¨ā§āϝ ScrollableColumn āĻāĻŦāĻ‚ ScrollableRow āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ, āĻ…āĻĨāĻŦāĻž āφāĻĒāύāĻžāϰ āύāĻŋāĻœā§‡āϰ āωāĻĒāĻžāĻĻāĻžāύ⧇ Modifier.verticalScroll āĻāĻŦāĻ‚ Modifier.horizontalScroll āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύāĨ¤ Similarly, ScrollerPosition has been deprecated in favor of ScrollState' ( I400ce , b/157225838 , b/149460415 , b/154105299 )
  • runOnIdleCompose renamed to runOnIdle ( I83607 )
  • Several testing APIs were renamed to be more intuitive. All findXYZ APIs were renamed to onNodeXYZ. All doXYZ APIs were renamed to performXYZ. ( I7f164 )
  • Compose UI can now be composed inside ViewGroups without requiring a new composition. See ViewInteropDemo for an example. ( I9ab0b , b/160455080 )
  • Added sortWith and removeRange to MutableVector ( Icccf7 )
  • Implement Drag Selection Handles to change selection for TextField. ( I27032 )
  • Removed Shader inline class that wrapped the NativeShader expect class Renamed NativeShader to Shader. The wrapped Shader inline class did not add anything valuable to the API surface and was an inline class, so use the NativeShader class directly. ( I25e4d )
  • Refactored PainterModifier to no longer provide scaling based on the given constraints and ContentScale parameter. Implementations of Painter are to scale their drawing content themselves based on the given size of the DrawScope they are drawing into.

    Fixed issue where VectorPainter's cache bitmap was sized to its default size instead of the given size to draw into.

    Updated ImagePainter to scale its content instead of relying on PainterModifier to do so on its behalf. ( I6ba90 )

  • add top-level withFrameNanos function for animation timing ( Ie34c5 )

  • @Untracked annotation has been deprecated. Replace with @ComposableContract(tracked=false) ( Id211e )

  • androidx.ui.foundation.TextFieldValue and androidx.ui.input.EditorValue is deprecated. TextField, FilledTextField and CoreTextField composables that uses that type is also deprecated. Please use androidx.ui.input.TextFieldValue instead ( I4066d , b/155211005 )

  • Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. āĻāϟāĻž āĻāĻ–āύ āĻ āĻŋāĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( I1f48b , b/157998762 )

  • Fixed issue where pointer input dispatch would cause a crash if PointerInputFilters were removed via subcomposition during disptach. āĻāϟāĻž āĻāĻ–āύ āĻ āĻŋāĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ ( Iab398 , b/157998762 )

  • Refactored Radius class to be an inline class. Removed companion creation methods in favor of function constructor with default parameter to have the radius along the y-axis match that of the mandatory x-axis radius parameter.

    Updated DrawScope.drawRoundRect to consume a single Radius parameter instead of 2 separate float values for the radius along the x and y axis ( I46d1b )

  • The Recompose composable is no longer a useful abstraction. Most recomposition should happen as a result of MutableState assignments. For anything beyond that, it is recommended that you use the invalidate function to trigger a recomposition of the current scope. ( Ifc992 )

  • Replaced usage of Px class in various compose classes as part of the large refactoring effort to only rely on Dp and primitive types for pixel parameters ( Iede0b )

  • Changes the code generation strategy of Compose's compiler. Prior to the change, the compose compiler would transform calls to composable functions. With this change, we now transform the body of a composable function and leave the callsite unaltered (mostly).

    This means that most of the logic communicating with the compose runtime happens at the start of the function body, instead of at the callsite.

    This should be a source-compatible change for all usage of compose. Most users of compose should not have to update any code as a result of this change.

    In order to support this work, the JVM signature of all composable functions has changed. A Composable function accepting a single parameter is transformed into a function accepting 3 parameters, the additional parameters are the Composer, a 'key' integer. a bitmask integer used to propagate metadata through calls.

    Compose now also transforms default arguments to a composable function. It does this without introducing an additional synthetic default overload of the function itself, so this change will result in fewer functions being defined.

    Known intentional behavioral changes resulting from this:

    1. Some calls will skip where they wouldn't have previously
    2. Composable expressions in default argument expressions are now correctly subscribed to and handled

    This work included some optimizations: 1. The result of comparisons of parameters are propagated through the call graph to other composable functions. This will result in fewer comparisons at runtime, reduces the slot table size, as well as more skipping of composable functions that were previously not skipped 2. Paremeters which are determined to be “static” at compile time are no longer compared or stored in the runtime. This reduces the number of comparisons and reduces slot table size. 3. Control flow structure of the body of functions is used to minimize the number of groups that are generated. This reduces slot table size and results in less work for the runtime 4. Unused dispatch and receiver parameters to functions are not included in determining skippability of the function if they are not used inside of the body of the function.

    Most breaking changes were for APIs that the compiler targets directly, and typical use of compose will not be affected: 1. Composer::startExpr was removed 2. Composer::endExpr was removed 3. Composer::call was deprecated 4. The non-varargs overloads of key have been removed. Use the vararg version going forward. 5. The Pivotal annotation was deprecated. Use key as a replacement. 6. ScopeUpdateScope::updateScope was changed to expect a Function3 instead of Function1 7. restartableFunction and restartableFunctionN were updated to include additional compile time parameters ( I60756 , b/143464846 )

  • Removed deprecated LayoutAlign modifiers. ( I10877 )

  • Removed RepaintBoundary in favor of DrawLayerModifier ( I00aa4 )

  • Button, FloatingActionButton and Clickable now have a separate enabled param. Some of the params on Button were renamed or reordered. ( I54b5a )

  • Replaced ButtonStyle with distinct functions and removed text (string) overload. See updated samples for usage information. ( If63ab , b/146478620 , b/146482131 )

  • Breaking changes to the ambients API. See log and Ambient<T> documentation for details ( I4c7ee , b/143769776 )

  • Changed the behavior of default TextDirection to be determined by LayoutDirection. ie If LayoutDirection is RTL, default TextDirection will be RTL. Previously it was TextDirection.ContentOrLtr/Rtl ( I4e803 )

  • Bug fix: When font weight and font style are nested on an AnnotatedString, text is not rendered correctly. ( I77a9d )

  • Adds commonly used parameters to Text(). If you are currently creating a local text style to pass a small number of these parameters, such as Text(style = TextStyle(textAlign = TextAlign.Center)), you can now just provide the parameters directly: Text(textAlign = TextAlign.Center) ( I82768 )

  • ui-android-text module is renamed as ui-text-android ( I68cbe )