Compose UI

লেআউট, ড্রয়িং ও ইনপুট সহ ডিভাইসের সাথে ইন্টার‍্যাক্ট করার জন্য প্রয়োজনীয় কম্পোজ UI-এর মৌলিক কম্পোনেন্ট।
লেটেস্ট আপডেট স্টেবল রিলিজ রিলিজ ক্যান্ডিডেট বিটা রিলিজ আলফা রিলিজ
০৭ অক্টোবর, ২০২৬ ১.১২.১ - 1.13.0-beta01 -

গঠন

androidx-এর মধ্যে ৭টি Maven Group Id-এর কম্বিনেশন হল Compose. প্রতিটি গ্রুপে কার্যকারিতার একটি টার্গেট করা সাবসেট থাকে, প্রতিটি গ্রুপের নিজস্ব রিলিজ নোট থাকে।

এই সারণীতে গ্রুপ ও রিলিজ নোটের প্রতিটি সেটের লিঙ্ক ব্যাখ্যা করা হয়েছে।

গ্রুপবর্ণনা
compose.animationব্যবহারকারীর অভিজ্ঞতা আরও ভাল করতে Jetpack Compose অ্যাপ্লিকেশনে অ্যানিমেশন তৈরি করা।
compose.compilerKotlin কম্পাইলার প্লাগ-ইনের মাধ্যমে @Composable ফাংশন ট্রান্সফর্ম করুন এবং অপ্টিমাইজেশন চালু করুন।
compose.foundationবিল্ডিং ব্লক ব্যবহার করার জন্য রেডি এবং আপনার নিজস্ব ডিজাইন সিস্টেমের অংশ তৈরি করার জন্য ফাউন্ডেশন এক্সটেন্ড করে Jetpack Compose অ্যাপ্লিকেশন লিখুন।
compose.materialব্যবহার করার জন্য রেডি মেটেরিয়াল ডিজাইন কম্পোনেন্ট দিয়ে Jetpack Compose UI তৈরি করুন। এটি হল Compose-এর উচ্চতর লেভেল এন্ট্রি পয়েন্ট, যা www.material.io-তে বর্ণিত কম্পোনেন্টগুলির সাথে ম্যাচ করে এমন কম্পোনেন্ট প্রদান করার জন্য ডিজাইন করা হয়েছে।
compose.material3মেটেরিয়াল ডিজাইন ৩ কম্পোনেন্ট ব্যবহার করে Jetpack Compose UI তৈরি করুন, এটি হল মেটেরিয়াল ডিজাইনের পরবর্তী উন্নত ভার্সন। Material 3-এ আপডেট করা থিমিং ও কম্পোনেন্ট এবং ডায়নামিক কালারের মতো Material You পছন্দমতো সাজিয়ে নেওয়ার ফিচার অন্তর্ভুক্ত থাকে এবং এটি নতুন Android 12-এর ভিজ্যুয়াল স্টাইল ও সিস্টেম UI-এর সাথে সামঞ্জস্যপূর্ণ হওয়ার জন্য ডিজাইন করা হয়েছে।
compose.runtimeCompose-এর প্রোগ্রামিং মডেল ও স্টেট ম্যানেজমেন্টের মৌলিক বিল্ডিং ব্লক এবং টার্গেট করার জন্য Compose Compiler Plugin-এর মূল রানটাইম।
compose.uiলেআউট, ড্রয়িং ও ইনপুট সহ ডিভাইসের সাথে ইন্টার‍্যাক্ট করার জন্য প্রয়োজনীয় কম্পোজ UI-এর মৌলিক কম্পোনেন্ট।

ডিপেন্ডেন্সি ঘোষণা করা

Compose-এ কোনও ডিপেন্ডেন্সি যোগ করতে, আপনাকে অবশ্যই নিজের প্রোজেক্টে Google Maven রিপোজিটরি যোগ করতে হবে। আরও তথ্যের জন্য Google-এর Maven রিপোজিটরি পড়ুন।

আপনার অ্যাপ বা মডিউলের জন্য build.gradle ফাইলে প্রয়োজনীয় আর্টিফ্যাক্টের জন্য ডিপেন্ডেন্সি যোগ করুন:

গ্ৰুভি

plugins {
    id 'org.jetbrains.kotlin.plugin.compose'
}

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

android {
    buildFeatures {
        compose true
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

Kotlin

plugins {
    kotlin("plugin.compose")
}

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

android {
    buildFeatures {
        compose = true
    }

    kotlinOptions {
        jvmTarget = "1.8"
    }
}

নির্ভরতা সম্পর্কে আরও তথ্যের জন্য, বিল্ড নির্ভরতা যোগ করুন দেখুন।

মতামত

আপনার মতামত Jetpack-কে আরও ভালো করে তুলতে সাহায্য করে। আপনি যদি নতুন কোনও সমস্যা খুঁজে পান বা এই লাইব্রেরি উন্নত করার জন্য কোনও আইডিয়া থাকে, তাহলে আমাদের জানান। নতুন লাইব্রেরি তৈরি করার আগে এই লাইব্রেরিতে আগে থেকে থাকা সমস্যা দেখে নিন। আপনি তারকাচিহ্ন বোতামে ক্লিক করে আগে থেকে থাকা কোনও সমস্যাতে আপনার ভোট যোগ করতে পারবেন।

নতুন সমস্যা তৈরি করুন

আরও তথ্যের জন্য ইস্যু ট্র্যাকার ডকুমেন্টেশন দেখুন।

ভার্সন 1.13

ভার্সন 1.13.0-beta01

০৭ অক্টোবর, ২০২৬

androidx.compose.ui:ui-*:1.13.0-beta01 রিলিজ করা হয়েছে। 1.13.0-beta01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • 1.13-এর জন্য পাবলিক API সারফেস থেকে Modifier.interactionBarrier() ফিরিয়ে নেওয়া হয়েছে। (I47974, b/564575045, b/347038246)
  • আপডেট করা PolygonShape API: CornerRounding-কে dp() ও fraction() ফ্যাক্টরির সাথে টপ-লেভেলে সরানো হয়েছে, transformed() ও scaledToFit() এক্সটেনশনকে ইন-প্লেস মিউটেবল PolygonShape.transform(PolygonShapeTransformScope.() -> Unit) ও PolygonShape.copy() দিয়ে পাল্টানো হয়েছে। (If5970)
  • onValueChange এখন Slider, VerticalSlider ও RangeSlider-এ একটি প্রয়োজনীয় প্যারামিটার। Slider ও RangeSlider কম্পোনেন্ট জুড়ে আগে লুকানো বন্ধ হয়ে যাওয়া API সরিয়ে দেওয়া হয়েছে, এর মধ্যে SliderState-এ DraggableState প্রয়োগ করা এবং পুরনো Saver ওভারলোড অন্তর্ভুক্ত। SliderState থেকে isVertical সরিয়ে দেওয়া হয়েছে। isVertical ওভারলোডের পরিবর্তে SliderDefaults.Thumb ওভারলোড SliderState ব্যবহার করা হচ্ছে। (I3fdc1)
  • MediaQuery-এর Posture ক্লাসটি WindowPosture দিয়ে প্রতিস্থাপন করা হয়েছে, যা ফিজিক্যাল WindowFold (FoldState ও FoldOrientation) এক্সপোজ করে। WindowPosture-এ isTabletop ও isFlat কনভেনিয়েন্স প্রপার্টি যোগ করা হয়েছে এবং এক্সপ্লিসিট বুক পসচার সরিয়ে দেওয়া হয়েছে। (Id9e8e)
  • লাইব্রেরি এখন Kotlin 2.2-কে টার্গেট করে এবং kotlinc 2.2 (I82396, b/498369605) প্রয়োজন
  • BlurStop.fraction-এ @FloatRange যোগ করা হয়েছে, BlurRadiusSpec.radialGradient-এ ডিফল্ট fallOffRadius পরিবর্তন করে Dp.Unspecified করা হয়েছে, Modifier.blur-এর radius প্যারামিটারের নাম পরিবর্তন করে blurRadiusSpec করা হয়েছে এবং BlurScope.radius-এর নাম পরিবর্তন করে blurRadiusSpec করা হয়েছে। (I91dbc, b/556335791)

সমস্যার সমাধান

  • মাপার সময় অ্যালাইনমেন্ট লাইন কোয়েরি করা হলে IllegalArgumentException ('LayoutNode not found in RectList') সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Icec9e, b/549552303)
  • একাধিক কম্পোজেবল জুড়ে একই ImageVector রেন্ডার করার সময় VectorPainter এখন ইন্টার্নাল গ্রাফিক্স রিসোর্স (ImageBitmap) শেয়ার করবে। এর ফলে, একই টেক্সচার একাধিকবার আপলোড করতে হয় না এবং মেমরি ব্যবহারও কমে যায়। এর ফলে, একই আইকন একাধিকবার ব্যবহার করা হয়েছে এমন তালিকার মতো পরিস্থিতিতে পারফর্ম্যান্স উন্নত হয়। ComposeUiFlags.isVectorDrawCacheSharingEnabled-এর মাধ্যমে এই অপ্টিমাইজেশন বন্ধ করা যেতে পারে। (I91b41)
  • AndroidTextPaint.setTextMotion, FontHinting বা None linearity-তে ট্রানজিশন করার সময় LINEAR_TEXT_FLAG মুছে না ফেলার সমস্যা সমাধান করা হয়েছে। (I8c19c)
  • Compose UI কন্টেন্ট দিয়ে ঢাকা এম্বেড করা AndroidView-তে (যেমন, WebView) TalkBack টাচ এক্সপ্লোরেশন ফোকাস জাম্প করতে পারে এমন একটি সমস্যার সমাধান করা হয়েছে। (I11372, b/561099702)
  • Color.toColorLong() কল করা বা Paint-এ Color.Unspecified-এর উপরে কম্পোজিট করা রঙ সেট করার ফলে IllegalArgumentException সহ ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। (Ia365b, b/557521315)
  • androidx.lifecycle:lifecycle-runtime ডিপেনডেন্সি আপডেট করে 2.10.0 করা হয়েছে। AGP 9.5.0-alpha04 বা এর পরের যেকোনও ভার্সনের সাথে বান্ডেল করা লাইফসাইকেল রানটাইম লিন্ট চেক চালানোর জন্য এই ভার্সনটি প্রয়োজন। (I99bfd, b/556807521)
  • ১০টির বেশি প্যারামিটার সহ কম্পোজ করার উপযুক্ত আইটেমের জন্য টুলিংয়ে ফিক্সড প্যারামিটার এক্সট্র্যাকশন। (Ib167d)
  • লেআউট কিউ থেকে ডিঅ্যাক্টিভেট করা লেআউট নোড মুছে না ফেলার ফলে রিম্যাজার করার সময় ক্র্যাশ হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ie64a5)

ভার্সন 1.13.0-alpha03

৯ সেপ্টেম্বর, ২০২৬

androidx.compose.ui:ui-*:1.13.0-alpha03 রিলিজ করা হয়েছে। 1.13.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Material 2 টেক্সট ফিল্ড ওভারলোড যা value, onValueChange প্যারামিটার গ্রহণ করে তা বন্ধ করা হয়েছে। TextFieldState ব্যবহার করে স্টেট হোইস্ট করে এমন ওভারলোডে মাইগ্রেট করুন। (I6b841, b/556234973)
  • প্রথম কম্পোজ রুট তৈরি হওয়ার আগে WindowInsetsRulers গ্লোবালি বন্ধ করতে একটি সাধারণ API যোগ করুন। সাধারণ WindowInsetsRulers.disable() (Iadc8f)-এর পরিবর্তে শুধু Android ComposeView.disableWindowInsetsRulers() বন্ধ করুন
  • পলিগন শেপ ট্রান্সফর্ম ও ফিট করার জন্য Compose Foundation-এ PolygonShape.transformed ও PolygonShape.scaledToFit এক্সটেনশন ফাংশন যোগ করে। (I3f327)
  • পরিবর্তনকারী LineHeight.Trim.isTrimLastLineBottom() ফাংশনের নাম পরিবর্তন করে LineHeight.Trim.trimsLastLineBottom এবং LineHeight.Trim.isTrimFirstLineTop-এর নাম পরিবর্তন করে LineHeight.Trim.trimsFirstLineTop করেছেন (I02211)
  • ComposeUiTestConfig.platform-এর অধীনে boundsAssertionTolerance থেকে PlatformTestConfig যোগ করা হয়েছে, এর ফলে এনভায়রনমেন্ট/নিয়ম লেভেলে ডিফল্ট বাউন্ডস অ্যাসারশন টলারেন্স কনফিগার করার জন্য টেস্টকে অনুমতি দেওয়া হয়েছে। (I7819d, b/545673912)
  • BasicTextField ওভারলোড যা value, onValueChange প্যারামিটার গ্রহণ করে তা বাতিল করা হয়েছে। BasicTextField ওভারলোড এ মাইগ্রেট করুন যেটি নিজের স্টেট হোয়েস্ট করতে TextFieldState ব্যবহার করে। (I636bf, b/552879150)
  • BasicTextField(value, onValueChange)-এর সাথে, VisualTransformation-ও বাতিল করা হয়েছে কারণ এটি শুধুমাত্র এই TextField ফ্লেভারের মাধ্যমে এক্সপোজ করা হয়। আগে থেকে থাকা ট্রান্সফর্মেশন OutputTransformation-এ মাইগ্রেট করা উচিত। (I636bf, b/552879150)
  • প্রতিটি লাইনের জন্য আলাদাভাবে লাইন হাইট গণনা করতে LineHeightStyle.Mode.PerLine যোগ করা হয়েছে, এর ফলে একই প্যারাগ্রাফে ওভারল্যাপ না করেই বিভিন্ন ফন্ট সাইজ ব্যবহার করা যায়। (I41738)
  • LazyListState-এর মাধ্যমে LazyLayoutCacheWindow ও LazyListPrefetchStrategy প্রদান করার পদ্ধতিটি কম্পোজেবল ফাংশনে LazyLayoutCacheWindow প্রদান করার জন্য বন্ধ করে দেওয়া হয়েছে। (I71f19)
  • প্রোগ্রেসিভ ব্লার (যেমন, গ্রেডিয়েন্ট ও কাস্টম শেডার) কাজ করার জন্য Modifier.blur { ... } API যোগ করা হয়েছে (Ie6595, b/481685669)
  • টাচ, ফোকাস ও অ্যাক্সেসিবিলিটি ইন্টার‍্যাকশন ব্লক করতে Added Modifier.interactionBarrier()। (I7c1b7, b/347038246)
  • Android-এ সিস্টেম-ওয়াইড ক্রস-উইন্ডো ব্লার স্টেট কোয়েরি ও পর্যবেক্ষণ করার জন্য ডেভেলপারদের অনুমতি দিতে WindowInfo-এ isCrossWindowBlurEnabled এক্সটেনশন প্রপার্টি যোগ করা হয়েছে। (If38e2, b/538405295)
  • বর্তমান android.view.Window অবজেক্ট রিট্রিভ করার অনুমতি দিতে LocalWindow CompositionLocal যোগ করা হয়েছে, এর ফলে কম্পোজ করার উপযুক্ত আইটেমের মধ্যে থেকে উইন্ডো-লেভেল API কন্ট্রোল করা সহজ হয়ে গেছে। (I4d4ff, b/221889664)

সমস্যার সমাধান

  • ডিফল্ট হিসেবে isMinimalistLocalsEnabled চালু করা থাকে। (Ibb4eb, b/523295932)
  • ডিফল্ট হিসেবে সিঙ্গেল লাইন হাইট অপ্টিমাইজেশন চালু করা আছে। এর ফলে উচ্চতা বা বেছে নেওয়ার পাথের (I5575a) মতো কিছু টেক্সট মেট্রিক্সে কয়েক পিক্সেলের পার্থক্য হতে পারে
  • compileSdk-এর জন্য Compose লাইব্রেরি 37.1-এ আপডেট করা হয়েছে। এর জন্য Compose ব্যবহার করা compileSdk সব অ্যাপ ও লাইব্রেরির জন্য ট্রানজিটিভ আপডেট প্রয়োজন হবে। (I05b0f)
  • প্রিডিক্টিভ ব্যাক চলাকালীন WindowInsetsRulers IME ইনসেট অ্যানিমেট করা হচ্ছে বলে চিহ্নিত না করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে এবং টেক্সট ফিল্ডের মধ্যে ফোকাস পরিবর্তন করার সময় imePadding আপডেট না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Id4562, b/537386261, b/539686000)
  • ComposeView স্ট্যান্ডার্ড Android ViewGroup-এর মধ্যে হোস্ট করা হলে ট্র্যাকপ্যাড পিঞ্চ জেস্চার উপেক্ষা করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I80f79)

এক্সটার্নাল কন্ট্রিবিউশন

  • ComposeView বিচ্ছিন্ন করার পরে একই ফ্রেমে আবার যুক্ত করলে অ্যাক্টিভিটি লিক হওয়ার সমস্যা সমাধান করা হয়েছে, যেমন, removeView ও addView দিয়ে আবার সাজানোর সময়। (Ib5129, b/547675867)

ভার্সন 1.13.0-alpha02

২৬ আগস্ট, ২০২৬

androidx.compose.ui:ui-*:1.13.0-alpha02 রিলিজ করা হয়েছে। 1.13.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Modifier.background-এর জন্য নতুন সিম্যান্টিক প্রপার্টি BackgroundColor যোগ করা হয়েছে (I7eec3, b/518049030)
  • আপনি এখন আগে থেকে থাকা আদিম অ্যারে থেকে Vertices তৈরি করতে পারবেন। (Ifaba8, b/496412761)
  • একাধিক কম্পোজেবল জুড়ে একই ImageVector রেন্ডার করার সময় VectorPainter এখন ইন্টার্নাল গ্রাফিক্স রিসোর্স (ImageBitmap) শেয়ার করবে। এর ফলে, একই টেক্সচার একাধিকবার আপলোড করতে হয় না এবং মেমরি ব্যবহারও কমে যায়। এর ফলে, একই আইকন একাধিকবার ব্যবহার করা হয়েছে এমন তালিকার মতো পরিস্থিতিতে পারফর্ম্যান্স উন্নত হয়। ComposeUiFlags.isVectorDrawCacheSharingEnabled-এর মাধ্যমে এই অপ্টিমাইজেশন বন্ধ করা যেতে পারে। (I35639, b/331283180)
  • requestFocusForChildInLocalBounds সহায়ক যোগ করুন (Ib1a48)

ভার্সন 1.13.0-alpha01

১২ আগস্ট, ২০২৬

androidx.compose.ui:ui-*:1.13.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.13.0-alpha01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • isVelocityTrackerMinSampleSizeFixEnabled ফিচার ফ্ল্যাগ যোগ করে (Ic9b51, b/533444810, b/533775739, b/523705159)
  • পুরনো ExperimentalVelocityTrackerApi অ্যানোটেশন ক্লাস সরিয়ে দেওয়া হয়েছে। (I6f9c6, b/483449576)
  • isClearNestedScrollCoroutineScopeFixEnabled ফ্ল্যাগ সরিয়ে দিন (Iedfd7, b/506963276)
  • TextFieldState এখন টেক্সট স্টাইল সংক্রান্ত তথ্য সেভ ও রিস্টোর করে। AnnotatedString.Annotation অবজেক্ট সেভ ও রিস্টোর করার অনুমতি দিতে AnnotatedString.Annotation.Saver এখন সর্বজনীন করা হয়েছে। (I8b533, b/135556699)
  • Compose UI টেস্টে কাস্টম ব্যর্থতা ইভেন্ট হ্যান্ডলার ও ব্যর্থতা আর্টিফ্যাক্ট কনটেক্সট কাজ করে, সেই জন্য ComposeTestConfig-এ TestFailurePolicy ও TestFailureHandler চালু করা হয়েছে। (Ib1a85, b/414802953, b/291106656, b/430644575)
  • টেস্টিংয়ের জন্য লেআউট নোডের সমাধান করা কম্পোজিট পেরেন্ট-চাইল্ড আলফা ভ্যালু এক্সপোজ করতে SemanticsProperties.alpha যোগ করা হয়েছে। (Ifddb6, b/524035059)
  • ui-test-junit4 v2 প্যাকেজে createComposeRule, createAndroidComposeRule ও createEmptyComposeRule ওভারলোড বাতিল করা হয়েছে যেগুলি আলাদা আলাদা প্যারামিটার নেয়। ComposeUiTestConfig গ্রহণ করে এমন ওভারলোড বা প্যারামিটার ছাড়া ওভারলোড ব্যবহার করুন, যেগুলি ডিফল্ট ComposeUiTestConfig ব্যবহার করে। মনে রাখবেন, ডিফল্ট ComposeUiTestConfig প্রতিটি পরীক্ষার শুরুতে প্রাথমিক ইনপুট মোড InputMode.Touch হিসেবে সেট করে। এর ফলে, কীবোর্ড মোড (InputMode.Keyboard) আশা করা বর্তমান টেস্টগুলি কাজ নাও করতে পারে। প্রভাবিত টেস্ট ঠিক করতে, ComposeUiTestConfig(inputMode = InputMode.Keyboard) স্পষ্টভাবে পাস করুন এবং ইনপুট মোডের জন্য কোনও ম্যানুয়াল সেট-আপ লজিক সরিয়ে দিন। অথবা, আপনি AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false সেট করে প্রতিটি টেস্টের শুরুতে ডিফল্ট ইনপুট মোড সেট করা সাময়িকভাবে বন্ধ করতে পারেন এবং আপনার টেস্ট মাইগ্রেট করার সময় পুরনো আচরণ বজায় রাখতে পারেন। ভবিষ্যতে এই ফ্ল্যাগ সরিয়ে দেওয়া হবে, তাই যদি অল্প সংখ্যক টেস্ট ব্যর্থ হয়, তাহলে সেগুলির কনফিগারেশন পরিবর্তন করে সরাসরি টেস্ট সমাধান করার জন্য সাজেস্ট করা হয়। (Idfb86, b/504195741)
  • createComposeRule ও createAndroidComposeRule-এ (যেমন, createComposeRule() বা createAndroidComposeRule<MyActivity>()) আর্গুমেন্ট ছাড়া কল এখন ডিফল্ট ComposeUiTestConfig ব্যবহার করে, যা প্রতিটি পরীক্ষার শুরুতে প্রাথমিক ইনপুট মোডকে InputMode.Touch হিসেবে সেট করে, এর ফলে ডিভাইসটি ক্লিন স্টেটে থাকে এবং আগের ইনপুট মোড পরিবর্তনগুলি যাতে পরীক্ষা জুড়ে লিক না করে তা নিশ্চিত করা যায়। তবে, কীবোর্ড মোড (InputMode.Keyboard) আশা করে এমন বিদ্যমান পরীক্ষাগুলি এই নতুন ডিফল্ট টাচ মোডের কারণে ব্যর্থ হতে পারে। প্রভাবিত টেস্ট ঠিক করতে, ComposeUiTestConfig(inputMode = InputMode.Keyboard) স্পষ্টভাবে পাস করুন এবং ইনপুট মোডের জন্য কোনও ম্যানুয়াল সেট-আপ লজিক সরিয়ে দিন। অথবা, আপনি AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false সেট করে প্রতিটি টেস্টের শুরুতে ডিফল্ট ইনপুট মোড সেট করা সাময়িকভাবে বন্ধ করতে পারেন এবং আপনার টেস্ট মাইগ্রেট করার সময় পুরনো আচরণ বজায় রাখতে পারেন। ভবিষ্যতে এই ফ্ল্যাগ সরিয়ে দেওয়া হবে, তাই যদি অল্প সংখ্যক টেস্ট ব্যর্থ হয়, তাহলে সেগুলির কনফিগারেশন পরিবর্তন করে সরাসরি টেস্ট সমাধান করার জন্য সাজেস্ট করা হয়। (Idc4dd, b/267253920, b/504195741)
  • Compose জুড়ে @EmptySuper সহ অ্যানোটেট করা ওভাররাইড করা যায় এমন খালি বেস পদ্ধতি, যাতে বোঝানো যায় যে ওভাররাইডিং প্রয়োগ সুপারকে ইনভোক করবে না। (Id407b)
  • ExposedDropdownMenu এখন মেম্বার না হয়ে ExposedDropdownMenuBoxScope-এর এক্সটেনশন ফাংশন হিসেবে কাজ করে। আপনাকে হয়ত নতুন ইমপোর্ট দিয়ে কোড আপডেট করতে হবে। (Ie8a65, b/356452026)
  • DialogProperties-এ blurBehindRadius, backgroundBlurRadius, scrimAlpha ও windowShape প্রপার্টি এবং PopupProperties-এ blurBehindRadius ও scrimAlpha প্রপার্টি যোগ করা হয়েছে। ডেভেলপাররা এখন সরাসরি ডায়ালগ ও পপ-আপে ব্যাকগ্রাউন্ড ব্লার, উইন্ডো ব্লার ও স্ক্রিম অস্বচ্ছতা কনফিগার করতে পারবেন। সেটিং windowShape ডায়ালগ উইন্ডোর ব্যাকগ্রাউন্ডের অস্পষ্টতা রাউন্ডেড কোণে ক্লিপ করার অনুমতি দেয়। (I5d437)
  • সরানো ফিচার ফ্ল্যাগ - 'কম্পোজ' বোতাম এখন অ্যাক্সেসিবিলিটি ফোকাস সঠিকভাবে ধরে রাখে এবং টাচ করে এক্সপ্লোর করার সুবিধা চালু থাকলে আর ফ্লিকার করে না, কারণ হোভার ইভেন্ট সঠিকভাবে হ্যান্ডেল করা হয়েছে হিসেবে চিহ্নিত করা হয়েছে। (Ib1c80)
  • অন্যান্য সেটিংসের সংগ্রহ মার্জ করা বা ইনলাইন সেটিংস ওভাররাইড করার জন্য FontVariation.Settings-এ মার্জ ওভারলোড যোগ করা হয়েছে। (I6340c)
  • ফন্ট ইন্টারফেসে variationSettings এক্সপোজ করা হয়েছে, ডিফল্ট হিসেবে নতুন FontVariation.Empty সেট করা আছে। অ্যারে কপি অ্যালোকেশন এড়াতে asList() ব্যবহার করার জন্য FontVariation.Settings vararg কনস্ট্রাক্টর অপ্টিমাইজ করা হয়েছে। (I9c22f)
  • আনঅ্যাটাচ বা ডিট্যাচ করা হলে নিরাপদে বাতিল করা CoroutineScope ফিরিয়ে আনার জন্য NestedScrollDispatcher.coroutineScope প্রপার্টি আপডেট করা হয়েছে। (I9b112, b/535290281)
  • runComposeUiTest, runAndroidComposeUiTest ও AndroidComposeUiTestEnvironment ওভারলোডগুলি বাতিল করা হয়েছে যেগুলি আলাদা আলাদা effectContext, runTestContext ও testTimeout প্যারামিটার নেয়। ComposeUiTestConfig গ্রহণ করে এমন ওভারলোড বা প্যারামিটার ছাড়া ওভারলোড ব্যবহার করুন, যেগুলি ডিফল্ট ComposeUiTestConfig ব্যবহার করে। মনে রাখবেন, ডিফল্ট ComposeUiTestConfig প্রতিটি পরীক্ষার শুরুতে প্রাথমিক ইনপুট মোডকে InputMode.Touch হিসেবে সেট করে। এর ফলে, কীবোর্ড মোড (InputMode.Keyboard) আশা করা বর্তমান টেস্টগুলি কাজ নাও করতে পারে। প্রভাবিত টেস্ট ঠিক করতে, ComposeUiTestConfig(inputMode = InputMode.Keyboard) স্পষ্টভাবে পাস করুন এবং ইনপুট মোডের জন্য কোনও ম্যানুয়াল সেট-আপ লজিক সরিয়ে দিন। অথবা, আপনি AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false সেট করে প্রতিটি টেস্টের শুরুতে ডিফল্ট ইনপুট মোড সেট করা সাময়িকভাবে বন্ধ করতে পারেন এবং আপনার টেস্ট মাইগ্রেট করার সময় পুরনো আচরণ বজায় রাখতে পারেন। ভবিষ্যতে এই ফ্ল্যাগ সরিয়ে দেওয়া হবে, তাই যদি অল্প সংখ্যক টেস্ট ব্যর্থ হয়, তাহলে সেগুলির কনফিগারেশন পরিবর্তন করে সরাসরি টেস্ট সমাধান করার জন্য সাজেস্ট করা হয়। (Ia6d55, b/504195741)
  • শুধুমাত্র ট্রেলিং ল্যাম্বডা সহ runComposeUiTest, runAndroidComposeUiTest ও AndroidComposeUiTestEnvironment-এ কল করলে এখন ডিফল্ট ComposeUiTestConfig ব্যবহার করা হয়, যা প্রতিটি টেস্টের শুরুতে প্রাথমিক ইনপুট মোডকে InputMode.Touch হিসেবে সেট করে, এর ফলে ডিভাইসটি ক্লিন স্টেটে থাকে এবং আগের ইনপুট মোড পরিবর্তনগুলি যাতে টেস্ট জুড়ে লিক না হয় তা নিশ্চিত করা যায়। তবে, কীবোর্ড মোড (InputMode.Keyboard) আশা করে এমন বিদ্যমান পরীক্ষাগুলি এই নতুন ডিফল্ট টাচ মোডের কারণে ব্যর্থ হতে পারে। প্রভাবিত টেস্ট ঠিক করতে, ComposeUiTestConfig(inputMode = InputMode.Keyboard) স্পষ্টভাবে পাস করুন এবং ইনপুট মোডের জন্য কোনও ম্যানুয়াল সেট-আপ লজিক সরিয়ে দিন। অথবা, আপনি AndroidComposeUiTestFlags.isInputModeSetForDeviceTests = false সেট করে প্রতিটি টেস্টের শুরুতে ডিফল্ট ইনপুট মোড সেট করা সাময়িকভাবে বন্ধ করতে পারেন এবং আপনার টেস্ট মাইগ্রেট করার সময় পুরনো আচরণ বজায় রাখতে পারেন। ভবিষ্যতে এই ফ্ল্যাগ সরিয়ে দেওয়া হবে, তাই যদি অল্প সংখ্যক টেস্ট ব্যর্থ হয়, তাহলে সেগুলির কনফিগারেশন পরিবর্তন করে সরাসরি টেস্ট সমাধান করার জন্য সাজেস্ট করা হয়। (I8c85d, b/504195741)
  • SemanticsNodeInteraction.isDisplayed() ও isNotDisplayed()-এ @CheckResult যোগ করা হয়েছে যাতে নিশ্চিত করা যায় যে রিটার্ন ভ্যালু অ্যাসার্ট করা হয়েছে। এর ফলে, ডেভেলপাররা অ্যাসারশন API-এর পরিবর্তে ভুলবশত এগুলি ব্যবহার করলে, টেস্ট নীরবে ব্যর্থ হওয়া আটকানো যায়। (I1b447, b/508178494)
  • ফ্ল্যাগ AndroidComposeUiFlag.isDelayAndroidViewsHandlerCreationEnabled ViewGroup-এর মধ্যে থাকা AndroidView-কে শুধুমাত্র তখনই ইনস্ট্যানশিয়েট করবে যখন ComposeView-এর পারফর্ম্যান্স উন্নত করতে AndroidView যোগ করা হবে, যেগুলিতে AndroidView নেই। ফ্ল্যাগ বন্ধ করা থাকলে, কন্টেনিং ViewGroup ইনস্ট্যানশিয়েট করা হয় এবং ComposeView উইন্ডোর সাথে অ্যাটাচ করা হলে সেটি অ্যাটাচ করা হয়। (I306a3, b/524283041)
  • NestedScrollDispatcher-এ coroutineScopeOrNull()-এর ব্যাপারে জানুন, এটি হল ডিসপ্যাচারের পেরেন্ট কোরাউটিন স্কোপ অ্যাক্সেস করার একটি বিকল্প API। (I18c0f)
  • পরিষ্কার করার অ্যাকশন সবসময় এক্সিকিউট করা হয় তা নিশ্চিত করতে clearCallbacks পরিবর্তন করে runAndClearCallbacks করুন। (If4720, b/526700075)
  • ComposeTestConfig-এর নাম পরিবর্তন করে ComposeUiTestConfig করা হয়েছে এবং এটি v2 প্যাকেজ থেকে মূল androidx.compose.ui.test প্যাকেজে সরানো হয়েছে। (I1d2a1, b/504195741)
  • রিড্র পাস করার জন্য অপেক্ষা করার সময় কাস্টম টাইমআউট কনফিগার করার অনুমতি দিতে SemanticsNodeInteraction.captureToImage()-এ একটি timeoutMillis প্যারামিটার (ডিফল্ট হিসেবে ২০০০ মিলি সেকেন্ড) যোগ করা হয়েছে। (Ib7d62, b/249501063)
  • ইনডাইরেক্ট পয়েন্টার ইনপুট পরিবর্তন সংক্রান্ত ঐতিহাসিক তথ্য যোগ করে (Ie62d2, b/526961645)
  • টেক্সট ফিল্ডে হিন্ট টেক্সট দেখানোর জন্য নতুন hintText সিম্যান্টিক প্রপার্টি যোগ করা হয়েছে, যা AccessibilityNodeInfo-এর সাথে ম্যাপ করার মাধ্যমে অ্যাক্সেসিবিলিটি সংক্রান্ত সহায়তা উন্নত করে।hintText. (Ib65da, b/448376876)
  • LocalOwner ও LocalAndroidComposeView থেকে ডায়নামিক পদ্ধতিতে এবং CompositionLocal অন-ডিমান্ড অপ্টিমাইজ করা রেজোলিউশন, যা ComposeUiFlags.isMinimalistLocalsEnabled ব্যবহার করে টগল করা যায়। (I2bf6d)
  • androidx.benchmark-এর এখন ২৪টি minSdk আছে। (Ic2a85)
  • মার্জ করা চাইল্ডে hideFromAccessibility-এর প্রোপাগেশন কন্ট্রোল করতে AndroidComposeUiFlags-এ একটি এক্সপেরিমেন্টাল ফ্ল্যাগ isPropagateHideFromAccessibilityToMergingChildrenEnabled যোগ করা হয়েছে। (Ie41ff, b/483506400)
  • পরীক্ষামূলক থেকে স্থিতিশীল অবস্থায় প্রোমোট করা ComposeUiTest এবং সম্পর্কিত টেস্টিং API (ComposeTestRule এবং waitUntil ভেরিয়েন্ট সহ)। (Iaec77, b/471148519, b/485124363)
  • মার্জ করা ট্রাভার্সাল গ্রুপে TalkBack নেভিগেশন অর্ডার ফিক্স করা হয়েছে। প্রয়োজন হলে, AndroidComposeUiFlags.isTraversalGroupSortingEnabled বন্ধ করে এই পরিবর্তন আগের অবস্থায় ফিরিয়ে আনা যাবে। (I5ae09, b/285043826)
  • পরীক্ষামূলক পুরনো IndirectPointerEvent হেল্পার ফাংশন সরিয়ে দেয়। (I05dee, b/499336763, b/501098299, b/501098376, b/513249467)
  • পরীক্ষামূলক @AnimationToolingApi-এর পরিবর্তে @RestrictTo API ব্যবহার করুন, যেটিতে আরও কঠোর ট্র্যাকিং গ্যারান্টি আছে। (Ia4fd1, b/524317805)
  • কোনও প্রদত্ত নোডের সাবট্রিয়ের মধ্যে থাকা সব সিম্যান্টিক নোড খুঁজে পেতে onDescendants() সিলেক্টর যোগ করা হয়েছে। (Id6b9b, b/444588117)
  • waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists ও waitUntilDoesNotExist হেলার API আর ব্যবহার করা হয় না এবং এগুলি useUnmergedTree গ্রহণ করে না। আনমার্জড সিম্যান্টিক্স ট্রি-তে নোডের জন্য অপেক্ষা করার সুবিধা যোগ করতে, useUnmergedTree গ্রহণ করে এমন নতুন ওভারলোড যোগ করা হয়েছে। (If675f, b/268432145)
  • SemanticsNodeInteraction সাইজ ও পজিশন অ্যাসার্শনে (assertWidthIsEqualTo, assertHeightIsEqualTo, assertTouchWidthIsEqualTo, assertTouchHeightIsEqualTo, assertPositionInRootIsEqualTo, assertTopPositionInRootIsEqualTo, assertLeftPositionInRootIsEqualTo) tolerance প্যারামিটার যোগ করা হয়েছে যাতে ডেভেলপাররা তুলনা করার থ্রেশহোল্ড কনফিগার করতে পারেন। এর ফলে বিভিন্ন স্ক্রিন ডেনসিটি জুড়ে টেস্টের দৃঢ়তা উন্নত হয়। (I3a477, b/202752461)
  • কম্পোজ টেস্টিং এখন মূল-থ্রেড সিঙ্ক্রোনাইজেশন সাপোর্ট করে। আপনি এখন নিরাপদে সিঙ্ক্রোনাইজেশন API (যেমন, waitForIdle() এবং runOnIdle()) ইনভোক করতে এবং UI/মূল থ্রেড কলব্যাকের মধ্যে সরাসরি কম্পোজ অ্যাসার্শন বা অ্যাকশন এক্সিকিউট করতে পারবেন। (I0247a, b/498478569)
  • প্যারামিটার ম্যানেজমেন্ট সহজ করতে এবং স্কেলেবিলিটি বাড়াতে Compose টেস্ট API-এর জন্য একটি নতুন কনফিগারেশন মডেল (ComposeTestConfig) চালু করা হয়েছে। ComposeTestConfig-এর মাধ্যমে সরাসরি ইনপুট মোড (টাচ/কীবোর্ড) কনফিগার করার জন্য সহায়তা যোগ করা হয়েছে, এর ফলে অটোমেটিক সেট-আপ নিশ্চিত করা যায় এবং স্টেট লিক হওয়ার কারণে টেস্ট ফ্ল্যাকিনেস প্রতিরোধ করতে রিসেট করা যায়। run*ComposeUiTest ও create*ComposeRule-এর জন্য নতুন ওভারলোড যোগ করা হয়েছে যা ComposeTestConfig অবজেক্ট গ্রহণ করে। (Ia3da9, b/267253920, b/504195741)
  • PreviewParameterProvider-এর সাথে মিডিয়া কোয়েরি প্রপার্টি (Posture, PointerPrecision, ইত্যাদি) ব্যবহার করার সময় Compose Preview-তে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। এর জন্য, সেগুলির অন্তর্নিহিত উপস্থাপনাকে String থেকে Int-এ পরিবর্তন করা হয়েছে। (Ic8f92, b/489939558)
  • ভিজ্যুয়াল টেক্সটের পাশাপাশি কাঁচা ইনপুট টেক্সটে হুবহু মিল চালু করতে hasTextExactly এবং assertTextEquals-এ includeInputText প্যারামিটার যোগ করা হয়েছে। (Iee329, b/519026043)

সমস্যার সমাধান

  • SaveableStateRegistry.performSave() অপ্টিমাইজ করা হয়েছে যাতে HashMap অ্যালোকেশন আটকানো যায়। ইন্টার্নালি ScatterMap ব্যবহার করে। (I7d510)
  • টেক্সট কম্পোজ করার উপযুক্ত আইটেমের জন্য AccessibilityNodeInfo.ExtraRenderingInfo-তে টেক্সটের রঙের তথ্য অটো-ফিল করা হয়। (I11c94, b/518049030)
  • লেআউট নোড ডিটাচ করার সময় NestedScrollDispatcher.coroutineScopeOrNull অ্যাক্সেস করলে null রিটার্ন করার পরিবর্তে IllegalStateException দেখানোর সমস্যা সমাধান করা হয়েছে। (I55634, b/533444810)
  • ডায়নামিক গেটার ব্যবহার করে compose:ui টপ-লেভেল ভ্যালু ক্লাস প্রপার্টির অপ্টিমাইজ করা ফাইল-লেভেল ইনিশিয়ালাইজেশন। (I34184)
  • ডায়নামিক গেটার ব্যবহার করে ui-unit value ক্লাসের (TextUnit) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (If4a99)
  • ডায়নামিক গেটার ব্যবহার করে ui-graphics ভ্যালু ক্লাসের (BlendMode, Color, ইত্যাদি) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (Iaa86a)
  • ডায়নামিক গেটার ব্যবহার করে compose:ui:ui ভ্যালু ক্লাসের (Key, CompositingStrategy, ইত্যাদি) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (I1a340)
  • ডায়নামিক গেটার ব্যবহার করে compose:ui টেক্সট ভ্যালু ক্লাসের (TextAlign, TextOverflow, ImeAction, ইত্যাদি) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (I776e0)
  • ডায়নামিক গেটার ব্যবহার করে compose:ui টুলিং ও টেস্ট ভ্যালু ক্লাসের (AnimatedVisibilityState, MouseButton, ScrollWheel) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (I23e1b)
  • ডায়নামিক গেটার ব্যবহার করে compose:ui ইউনিট ভ্যালু ক্লাসের (Dp, DpOffset, TextUnitType, ইত্যাদি) অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (If5eb5)
  • compose:ui জ্যামিতি ভ্যালু ক্লাস (Offset, Size, CornerRadius)-এর অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন ডায়নামিক গেটার ব্যবহার করে। (I3b110)
  • ডায়নামিক গেটার ব্যবহার করে compose:ui ভ্যালু ক্লাস (Role, FocusDirection, PointerEventType, ইত্যাদি) -এর অপ্টিমাইজ করা কম্প্যানিয়ন অবজেক্ট ইনিশিয়ালাইজেশন। (Ie35dd)
  • অপ্রয়োজনীয় ধীর লেআউট পাস এড়াতে BaselineShift.None ও BaselineShift.Unspecified এবং BaselineShift(0f) সঠিকভাবে হ্যান্ডেল করুন। (I4350c)
  • একটি সমস্যার সমাধান করা হয়েছে যেখানে নেগেটিভ জিরো (-0.0) সহ Dp ভ্যালু, ফ্লোটিং পয়েন্ট তুলনা বা ইকুয়ালিটি চেক থেকে তুলনা বা ইকুয়ালিটি চেকের ক্ষেত্রে আলাদা আচরণ করে। (I7dbcf, b/525506543)
  • API সংক্রান্ত তথ্য ক্লিন-আপ করে (Ia8066)

এক্সটার্নাল কন্ট্রিবিউশন

  • Alignment.topRatio, Trim.isTrimFirstLineTop() ও Trim.isTrimLastLineBottom() এখন পাবলিক API (I84f62)

ভার্সন 1.12

ভার্সন 1.12.1

৯ সেপ্টেম্বর, ২০২৬

androidx.compose.ui:ui-*:1.12.1 রিলিজ করা হয়েছে। 1.12.1 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.12.0

১২ আগস্ট, ২০২৬

androidx.compose.ui:ui-*:1.12.0 রিলিজ করা হয়েছে। 1.12.0 ভার্সনে এইসব কমিট আছে।

### ডাউনলোড করা যায় এমন ভেরিয়েবল ফন্ট ও জিরো-কনফিগারেশন সেট-আপ (ui-text-google-fonts)

• ভেরিয়েবল ফন্ট ও জিরো-কনফিগার GMS সার্টিফিকেট!

    import androidx.compose.ui.text.font.FontFamily                                                                                                                                                                         
    import androidx.compose.ui.text.font.FontVariation                                                                                                                                                                      
    import androidx.compose.ui.text.googlefonts.Font                                                                                                                                                                        
    import androidx.compose.ui.text.googlefonts.GoogleFont                                                                                                                                                                  
                                                                                                                                                                                                                            
    val fontFamily = FontFamily(                                                                                                                                                                                            
        Font(                                                                                                                                                                                                               
            googleFont = GoogleFont("Google Sans Flex"),                                                                                                                                                                    
            // Automatically uses default GMS certificates!                                                                                                                                                                 
            variationSettings = FontVariation.Settings(                                                                                                                                                                     
                FontVariation.weight(900),                                                                                                                                                                                  
                FontVariation.slant(0f)                                                                                                                                                                                     
            )                                                                                                                                                                                                               
        )                                                                                                                                                                                                                   
    )
──────                                                                                                                                                                                                                  

### ওয়াইড কালার গ্যামাট (WCG) সাপোর্ট (ui-graphics)

WCG প্রিজার্ভেশন: * API 29+ ভার্সনে Paint বা Shader-এ সেট করা নন-sRGB কালার স্পেস (যেমন, AdobeRgb, DisplayP3) প্রিজার্ভ করা হয়। * পুরনো API লেভেলে sRGB-তে ফল ব্যাক করে।

    import androidx.compose.ui.graphics.Color                                                                                                                                                                               
    import androidx.compose.ui.graphics.Paint                                                                                                                                                                               
    import androidx.compose.ui.graphics.colorspace.ColorSpaces                                                                                                                                                              
                                                                                                                                                                                                                            
    val wcgColor = Color(0.9f, 0.5f, 0.1f, colorSpace = ColorSpaces.AdobeRgb)                                                                                                                                               
    val paint = Paint().apply {                                                                                                                                                                                             
        color = wcgColor // Preserved on API 29+                                                                                                                                                                            
    }
──────                                                                                                                                                                                                                  

### Hardware-Accelerated Mesh Gradients (ui)

• Painter API: Modifier.meshGradient-এর পরিবর্তে MeshGradientPainter ব্যবহার করা হয়, যা হার্ডওয়্যার-অ্যাক্সিলারেটেড Canvas.drawMesh ব্যবহার করে।
• ব্যবহার: Modifier.paint-এর মধ্যে MeshGradientPainter ব্যবহার করুন।

import androidx.compose.ui.draw.paint                                                                                                                                                                                   
import androidx.compose.ui.geometry.Offset                                                                                                                                                                              
import androidx.compose.ui.graphics.Color                                                                                                                                                                               
import androidx.compose.ui.graphics.MeshGradientPainter                                                                                                                                                                 

val meshPainter = remember {                                                                                                                                                                                            
    MeshGradientPainter(rows = 1, columns = 1, hasBicubicColor = true) {                                                                                                                                                
        setVertex(0, 0, Offset(0f, 0f), Color.Red)                                                                                                                                                                      
        setVertex(0, 1, Offset(1f, 0f), Color.Blue)                                                                                                                                                                     
        setVertex(1, 0, Offset(0f, 1f), Color.Green)                                                                                                                                                                    
        setVertex(1, 1, Offset(1f, 1f), Color.Yellow)                                                                                                                                                                   
    }                                                                                                                                                                                                                   
}                                                                                                                                                                                                                       
Box(Modifier.fillMaxSize().paint(meshPainter))                                                                                                                                                                          
──────                                                                                                                                                                                                                  

### ৪. ক্রেডেনশিয়াল ম্যানেজার ইন্টিগ্রেশন (ui)

অটোফিল: * API 34+ টেক্সট ফিল্ডের জন্য কম লেভেলের credentialRequest সিম্যান্টিক্স প্রপার্টি যোগ করে।

    import androidx.compose.ui.semantics.credentialRequest                                                                                                                                                                  
    import androidx.compose.ui.semantics.CredentialRequestData                                                                                                                                                              
    import androidx.compose.ui.semantics.semantics                                                                                                                                                                          
                                                                                                                                                                                                                            
    BasicTextField(                                                                                                                                                                                                         
        value = value,                                                                                                                                                                                                      
        onValueChange = onValueChange,                                                                                                                                                                                      
        modifier = Modifier.semantics {                                                                                                                                                                                     
            if (Build.VERSION.SDK_INT >= 34) {                                                                                                                                                                              
                credentialRequest = CredentialRequestData(request, callback)                                                                                                                                                
            }                                                                                                                                                                                                               
        }                                                                                                                                                                                                                   
    ) 
──────                                                                                                                                                                                                                  

### ৫. Automatic Interaction Sounds (ui)

ক্লিক ও নেভিগেশন সাউন্ড: * প্ল্যাটফর্ম সাউন্ড কনফিগারেশন ব্যবহার করে Android-এর সাথে মানানসই ক্লিক ও নেভিগেশন সাউন্ড কাজ করে। * অপ্ট-আউট করা: সাবট্রিয়ের জন্য সাউন্ড বন্ধ করতে SoundEffectOnInteraction র‍্যাপার ব্যবহার করুন।

    import androidx.compose.ui.platform.SoundEffectOnInteraction                                                                                                                                                            
                                                                                                                                                                                                                            
    // Opt-out of sounds for everything inside                                                                                                                                                                              
    SoundEffectOnInteraction(enabled = false) {                                                                                                                                                                             
        Button(onClick = {}) {                                                                                                                                                                                              
            Text("Silent Button")                                                                                                                                                                                           
        }                                                                                                                                                                                                                   
    }                                                                                                                                                                                                                       

### ৬. হাইব্রিড UI-এর জন্য Espresso ইন্টিগ্রেশন (ui-test)
Espresso ViewInteraction-এর মাধ্যমে ম্যাচ করা ভিউ হায়ারার্কিতে Compose ইন্ট্যার‍্যাকশন স্কোপ করুন।

    import androidx.compose.ui.test.junit4.onRootWithViewInteraction                                                                                                                                                        
    import androidx.test.espresso.Espresso.onView                                                                                                                                                                           
                                                                                                                                                                                                                            
    // Match RecyclerView row using Espresso                                                                                                                                                                                
    val specificRow = onView(allOf(withId(R.id.row), hasDescendant(withText("Item #5"))))                                                                                                                                   
                                                                                                                                                                                                                            
    // Scope Compose interactions to that row                                                                                                                                                                               
    composeTestRule.onRootWithViewInteraction(specificRow)                                                                                                                                                                  
        .onNodeWithTag("fav_icon")                                                                                                                                                                                          
        .performClick()

ভার্সন 1.12.0-rc01

২৯ জুলাই, ২০২৬

androidx.compose.ui:ui-*:1.12.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.12.0-rc01-এ এইসব কমিট রয়েছে।

ভার্সন 1.12.0-beta02

১ জুলাই, ২০২৬

androidx.compose.ui:ui-*:1.12.0-beta02 রিলিজ করা হয়েছে। 1.12.0-beta02 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.12.0-beta01

১৭ জুন, ২০২৬

androidx.compose.ui:ui-*:1.12.0-beta01 রিলিজ করা হয়েছে। 1.12.0-beta01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • প্রযোজ্য নয় (ইন্টার্নাল ডেভেলপার ফিচার ফ্ল্যাগ সরানো হচ্ছে) (Iaf2c4, b/368702588)
  • প্রযোজ্য নয় - ফিচার ফ্ল্যাগ সরানো হয়েছে। (I24668, b/521811270)
  • পরীক্ষামূলক ফিচার ফ্ল্যাগ যোগ করা হয়েছে ComposeUiFlags।isTrackpadPinchReinterpretationEnabled ট্র্যাকপ্যাড পিঞ্চ জেসচারকে স্কেল ফ্যাক্টর সহ মাউস ইভেন্ট হিসেবে আবার ব্যাখ্যা করতে। (Id3477, b/478053727)
  • পরোক্ষ পয়েন্টার ইভেন্ট ট্রিগার করার জন্য টেস্ট ফাংশনের নাম পরিবর্তন করে (I3ee35, b/509618414)
  • BasicText ও BasicTextField-এ অপ্টিমাইজেশন যোগ করুন, যেখানে softwrap=false সহ টেক্সটের জন্য লাইন হাইট সেট করা এখন আরও অপ্টিমালি গণনা করা হচ্ছে (I2150a)

সমস্যার সমাধান

  • অপ্রয়োজনীয় UI রিকম্পোজিশন আটকাতে সাবকম্পোজিশন জুড়ে অপ্টিমাইজ করা স্ক্রল ক্যাপচার স্টেট প্রোপাগেশন। (I05830)
  • এক্সপেরিমেন্টাল ফিচার ফ্ল্যাগ চালু করা হয়েছে ComposeUiFlags।isTrackpadPinchReinterpretationEnabled ডিফল্ট হিসেবে। (I35ab8, b/478053727)
  • ভেক্টর ড্রয়েবল রিসোর্স পার্সিংয়ে একটি সমস্যার সমাধান করা হয়েছে যেখানে নেস্ট করা <group> এলিমেন্ট থাকলে প্যারেন্ট <clip-path> এলিমেন্ট উপেক্ষা করা হত। (Id4ea9, b/474530439)
  • AndroidComposeTestRule-এ স্ট্যান্ডার্ড JUnit 4 টেস্ট আবার চালানোর নিয়মের জন্য সহায়তা যোগ করা হয়েছে। এটি ইন্টার্নাল টেস্ট এনভায়রনমেন্ট ও কোরাউটিন স্কোপকে এক্সিকিউশন অ্যাটেম্প্টের মধ্যে রিজেনারেট করে। (Iafaa7, b/235383900)

এক্সটার্নাল কন্ট্রিবিউশন

  • ক্লিপবোর্ড ইমপ্লিমেন্টেশন মক করার উপায় প্রদান করতে, পরীক্ষার জন্য AndroidClipboard ইন্টারফেস এক্সপোজ করা (Ie4d72, b/512924975)
  • commitText() ও setComposingText()-এর TextAttribute ভার্সনের জন্য ব্যাকওয়ার্ড কম্প্যাটিবিলিটি যোগ করুন। SDK>=37-এর জন্য, অ্যাক্সেসিবিলিটি পরিষেবা ঘোষণা করতে পারবে যে কোনও সাজেশন পরিবর্ত টেক্সট বেছে নেওয়া হয়েছে কিনা। SDK<37-এর জন্য, স্পোকেন ফিডব্যাককে প্রভাবিত করবে না (অর্থাৎ, আগে থেকে থাকা আচরণ)। (I90e3d, b/439879822)

ভার্সন 1.12.0-alpha03

১৯ মে, ২০২৬

androidx.compose.ui:ui-*:1.12.0-alpha03 রিলিজ করা হয়েছে। 1.12.0-alpha03 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • API 34+ ভার্সনে নতুন credentialRequest সিম্যান্টিক্স প্রপার্টি ও CredentialRequestData হেল্পার যোগ করা হয়েছে যাতে Jetpack Compose টেক্সট ফিল্ডকে অটোফিল ফ্রেমওয়ার্কের মাধ্যমে Android-এর Credential Manager-এর সাথে ইন্টিগ্রেট করা যায়। (Ida2bf, b/488446455)
  • ParagraphIntrinsics ফ্যাক্টরি ফাংশন যোগ করা হয়েছে যা অন্যান্য আর্গুমেন্টের মধ্যে softWrap আর্গুমেন্ট নেয়। অভ্যন্তরীণভাবে, আমরা এটিকে একটি সিগন্যাল হিসেবে ব্যবহার করতে পারি যে টেক্সটটি একটি লাইন হিসেবে রেন্ডার করা হয়েছে এবং নির্দিষ্ট কিছু অপ্টিমাইজেশন পারফর্ম করতে পারি। (I66ca4, b/485495112)
  • Compose কম্পোনেন্টে অটোমেটিক ইন্ট্যার‍্যাকশন সাউন্ড (ক্লিক ও ফোকাস নেভিগেশন) সংক্রান্ত সহায়তা যোগ করা হয়েছে, সাথে অপ্ট-আউট করার অনুমতি দিতে একটি নতুন SoundEffectOnInteraction কম্পোজ করার সুবিধা যোগ করা হয়েছে। মনে রাখবেন, এই পরিবর্তনের ফলে এখন থেকে মূল থ্রেড থেকে সিমান্টিক ক্লিক লিসেনারকে কল করতে হবে, যা অল্প সংখ্যক টেস্ট কেসে প্রভাব ফেলতে পারে। (I78f65)
  • স্টেবিলাইজ করা Font ফ্যাক্টরি ফাংশন variationSettings নিচ্ছে। (I183f2)
  • ResourceFont loadingStrategy প্রপার্টি ও copy মেথড স্টেবিলাইজ করা হয়েছে। (I40d84)
  • InterceptPlatformTextInput ও PlatformTextInputInterceptor API স্টেবিলাইজ করা হয়েছে। (Id2784)
  • প্ল্যাটফর্ম সেপারেশন উন্নত করতে, registerIdlingResource ও unregisterIdlingResource এক্সটেনশন ফাংশনে সরানো হয়েছে; আপনাকে হয়ত ইমপোর্ট আপডেট করতে হবে। (I21d3d, b/471148519)
  • স্টেট ইন্সপেকশনের সময় টেস্ট পারফর্ম্যান্স উন্নত করতে runWithoutImplicitWait থেকে ComposeTestRule এবং ComposeUiTest চালু করা হয়েছে। এই API, ইমপ্লিসিট সিঙ্ক্রোনাইজেশন বন্ধ করে কোডের একটি ব্লক এক্সিকিউট করার অনুমতি দেয়, যার ফলে প্রতিটি নোড কোয়েরির জন্য বারবার সিঙ্ক্রোনাইজেশনের ওভারহেড এড়ানো যায়। এর ফলে টেস্ট অনেক দ্রুত এক্সিকিউট করা যায়, বিশেষ করে অ্যানিমেশন টেস্টিংয়ের মতো টেস্টের ক্ষেত্রে, যেখানে ফ্রেমের মাধ্যমে ম্যানুয়ালি স্টেপ এবং একাধিক প্রপার্টি স্যাম্পেল করা হয়। (Ie00e9, b/490270394)
  • MultiPreview অ্যানোটেশন ক্লাসে এখন @PreviewWrapper অ্যানোটেশন প্রয়োগ করা যাবে, এর ফলে ডেভেলপাররা আগে থেকেই র‍্যাপ করা যায় এমন প্রিভিউ কনফিগারেশন তৈরি করতে পারবেন। (I8ae66, b/511170361)
  • MeshGradientPainter-এর মাধ্যমে মেশ গ্রেডিয়েন্ট রেন্ডার করা হয়।Modifier.meshGradient সরিয়ে দেওয়া হয়েছে, এর পরিবর্তে Modifier.paint-এর সাথে MeshGradientPainter ব্যবহার করুন। MeshGradientRenderer এখন ইন্টার্নাল। (I2d170, b/508110246)
  • Ruler-এর ভ্যালু প্রদানকারী আলাদা ল্যাম্বডার সাথে, Ruler প্রদান করা যাবে কিনা তা উত্তর দেয় এমন ল্যাম্বডা সাপ্লাই করে, এখন Ruler আলাদা আলাদাভাবে প্রদান করা যেতে পারে। isRulerProvided ল্যাম্বডা দেখা যায়নি এবং কোনও ভ্যালু প্রদান করা যাবে কিনা সেই ব্যাপারে আশাবাদী হতে হবে। rulerProvider lambda লক্ষ্য করা হয় যাতে কোনও ভ্যালু পরিবর্তন হলে, এটি রুলারের ভ্যালু এবং রুলারের সব রিডারকে আপডেট করে। (Ie9089)
  • পরীক্ষামূলক Style API-তে, কাস্টম স্টাইল স্কোপ থাকতে পারে এমন কাস্টম স্টাইলের ধরন তৈরি করার জন্য সহায়তা যোগ করা হয়েছে। এটি স্টাইলের মাধ্যমে সেট করা যায় এমন প্রপার্টিকে সাবসেট করার (যেমন, গ্রাফিক্স লেয়ার বা টেক্সট প্রপার্টি সম্পূর্ণভাবে সরিয়ে দেওয়া) পাশাপাশি অন্যান্য স্টাইল থেকে আলাদাভাবে স্কোপকে এক্সটেন্ড করার (যেমন, কোনও MediaPlayer কম্পোজ করার উপযুক্ত আইটেমে শুধুমাত্র playing { } সিনট্যাক্স কাজ করে) অনুমতি দেয়। এই পরিবর্তনের ফলে বাইনারি ও সোর্স কোড আর মানানসই থাকে না। সোর্স কম্প্যাটিবিলিটি ভেঙে যাওয়ার মূল কারণ হল, StyleScope-এর মধ্যে থাকা হেল্পার ফাংশন এখন এক্সটেনশন ফাংশন হিসেবে কাজ করে (যেমন, fun contentProperty(all: Dp) এখন একটি এক্সটেনশন ফাংশন)। প্রয়োজনীয় এক্সটেনশন ফাংশন ইমপোর্ট করা অথবা androidx.compose.foundation.styles থেকে সব চিহ্ন ইমপোর্ট করা, এই পদ্ধতিগুলি সঠিকভাবে কম্পাইল করার জন্য এই মেথড কল করা কোড পাওয়ার জন্য যথেষ্ট। (I1ef27, b/493676648)
  • পয়েন্টার আইডির জন্য ডিফল্ট আর্গুমেন্ট সহ updatePointerBy() যোগ করে। (I99f30, b/502001776)
  • DeferredTargetAnimation আর পরীক্ষামূলক নয়, অপ্ট-ইন সরিয়ে দিন।" androidx-main-এ
  • সমস্যার সমাধান কন্ট্রোল করতে isClearNestedScrollCoroutineScopeFixEnabled ফ্ল্যাগ যোগ করা হয়েছে। (Ibd394, b/505343254)
  • DeferredTargetAnimation আর পরীক্ষামূলক নয়, অপ্ট-ইন সরিয়ে দিন। (I1e4ae, b/500030165)
  • ui-tooling-এ ট্রিগার কাজ করার জন্য নতুন enum (I6e198, b/478807872)
  • ComposeViewContext রেফারেন্স ভিউ অ্যাটাচ না করেই তৈরি করা যাবে। setContent() কল করার আগে রেফারেন্স ভিউ অ্যাটাচ করতে হবে। (Id0952)

সমস্যার সমাধান

  • একই লেআউটের জন্য একাধিক সেভ কল হলে focusRestorer সঠিকভাবে ফোকাস ফিরিয়ে আনতে না পারার সমস্যা সমাধান করে (I10277, b/505371994)
  • আগে পারফর্ম্যান্স উন্নত করার ফলে, অ্যাটাচ করা নেই এমন ComposeViews পরিমাপ করা যায়নি। এই পরিবর্তনের ফলে পারফর্ম্যান্স সংক্রান্ত সমস্যা আর না করেই এটি এখন করা যাবে। (I9b2c5, b/508650647)
  • ComposeViewContext-এ পরিবর্তন করার পরে কম্পোজিশন আবার তৈরি করা হয় যাতে ComposeViewContext-এ দ্রুত অ্যাক্সেস পাওয়া যায়। (I3b3a8, b/487364963)
  • Android-এ পেইন্ট ও শেডারে sRGB নয় এমন কালার সেট করার জন্য Compose-কে অনুমতি দিন। এর ফলে, Compose কালার স্পেসকে প্ল্যাটফর্মের সমতুল্য কালার স্পেসের সাথে সঠিকভাবে ম্যাপ করার মাধ্যমে ওয়াইড কালার গ্যামাট বজায় রাখা যাবে। প্ল্যাটফর্ম রেন্ডারিং অপারেশনের জন্য কাজ করে না (যেমন, CIE XYZ, CIE Lab, OkLab) অথবা বর্তমান API লেভেলে উপলভ্য নয় এমন কালার স্পেস নিরাপদে Srgb কালার স্পেসে ফলব্যাক করবে। (I3efb5, b/388511109)

এক্সটার্নাল কন্ট্রিবিউশন

  • androidx.compose.ui.platform.NativeClipboard typealias-এর ব্যবহার বন্ধ করা হয়েছে, এর পরিবর্তে সরাসরি android.content.ClipboardManager ব্যবহার করুন (Ibc611)
  • Clipboard.nativeClipboard প্রপার্টির পরিবর্তে Clipboard.nativeClipboardManager এক্সটেনশন ব্যবহার করুন, যাতে typealias-এর মাধ্যমে commonMain সোর্সসেটে প্ল্যাটফর্মের ধরন প্রকাশ না করতে হয় (Ibc611)

ভার্সন 1.12.0-alpha02

৬ মে, ২০২৬

androidx.compose.ui:ui-*:1.12.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.12.0-alpha02-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • MeshGradient মডিফায়ার চালু করা হয়েছে। (Ia9a08, b/455752719)
  • বিল্ট-ইন অটোফিল ডিবাগ লগিং কলব্যাক সরিয়ে দেয়। AutofillManager.AutofillCallback থেকে লগ-ইন করেও একই কার্যকারিতা পাওয়া যেতে পারে। (I631c7, b/502279690)
  • ডাউনলোড করা যায় এমন ফন্টের জন্য ভেরিয়েশন সেটিংস কাজ করে (Ic25c7, b/496278020)
  • mediaQuery ও derivedMediaQuery আপডেট করে Boolean-এর পরিবর্তে জেনেরিক টাইপ রিটার্ন করা হয়েছে, এর ফলে অ্যাডাপ্টিভ UI তৈরি করার সময় আরও নমনীয় ব্যবহার করা যাবে। (I93830, b/498698350)

ভার্সন 1.12.0-alpha01

২২ এপ্রিল, ২০২৬

androidx.compose.ui:ui-*:1.12.0-alpha01 রিলিজ করা হয়েছে। 1.12.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ফিচার ফ্ল্যাগ ComposeUiFlags.isIndirectPointerNavigationGestureDetectorEnabled (I82be3, b/455601135) সরিয়ে দেয়
  • mediaQuery একটি ইনলাইন ফাংশন তৈরি করা হয়েছে (Ie9457, b/498698350)
  • ComposeViewContext পরীক্ষামূলক পর্যায় থেকে বেরিয়ে এসেছে এবং ExperimentalComposeViewContextApi অ্যানোটেশন সরিয়ে দেওয়া হয়েছে (I32eca)
  • ComposeView.disableWindowInsetsRulers() এখন আর এক্সপেরিমেন্টাল নয় (Ia81a5)
  • কম্পোজ UI-তে বর্তমানে কোনও কাজ বাকি আছে কিনা তা প্যাসিভভাবে চেক করার অনুমতি দিতে hasPendingWork() API যোগ করা হয়েছে, এর ফলে অপেক্ষা করার প্রয়োজন হয় না বা ক্লক অ্যাডভান্স করা হয় না। অ্যানিমেশন বা অন্যান্য ব্যাকগ্রাউন্ড কাজ কখন শেষ হয়েছে তা নির্ধারণ করার জন্য ম্যানুয়াল ক্লক টেস্টের ক্ষেত্রে এটি কাজে লাগে। (Ic54e3)
  • AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled ফিচার ফ্ল্যাগ সরানো হয়েছে (I7fd25, b/491111451)
  • ফিচার ফ্ল্যাগ সরানো হয়েছে AndroidComposeUiFlags.isSharedFontEnabled (I2cebe, b/479898293)
  • Android-এ কাজ করে এমন কীবোর্ড বিকল্পের সেট সম্পূর্ণ করতে অতিরিক্ত KeyboardType বিকল্প যোগ করে, যার মধ্যে তারিখ, সময়, তারিখ ও সময়, সই করা দশমিক সংখ্যা এবং আরও অনেক কিছু অন্তর্ভুক্ত। (I3713e, b/202353328)
  • AndroidComposeUiFlags.isSharedHapticsEnabled ফ্ল্যাগ সরানো হয়েছে (I6a1d4, b/479895628)
  • AndroidComposeUiFlags.isSharedClipboardManagerEnabled ফ্ল্যাগ সরানো হয়েছে (I41e3c, b/479895130)
  • AndroidComposeUiFlags.isSharedViewConfigurationEnabled ফ্ল্যাগ সরানো হয়েছে (I6d3aa, b/479890645)
  • ফিচার ফ্ল্যাগ AndroidComposeUiFlags.isSharedDrawingEnabled সরানো হয়েছে। (I27912, b/479849019)
  • ফিচার ফ্ল্যাগ AndroidComposeUiFlags.isSharedAccessibilityManagerEnabled সরিয়ে দেওয়া হয়েছে (I6b726, b/479845566)
  • AndroidComposeUiFlags.isSharedWindowInfoEnabled ফ্ল্যাগ সরিয়ে দিন (Ife9a9, b/479837249)
  • AndroidComposeUiFlags.isSharedComposeViewContextEnabled ফ্ল্যাগ সরিয়ে দিন। (Ic522a, b/479834257)
  • ডাউনলোড করা যায় এমন ভেরিয়েবল ফন্ট কাস্টমাইজ করতে ভেরিয়েশন সেটিংস যোগ করা (Ifdc93, b/223262013)
  • ডাউনলোড করা যায় এমন ভেরিয়েবল ফন্ট কাস্টমাইজ করতে ভেরিয়েশন সেটিংস যোগ করা (I390af, b/223262013)
  • ফ্ল্যাগ সরানো isTraversableDelegatesFixEnabled (Ia7dfe, b/485962494)
  • ComposeTestRule ও ComposeUiTest-এ runWhenIdle ও এর সাসপেন্ড করা ভ্যারিয়েন্ট awaitAndRunWhenIdle চালু করা হয়েছে যাতে টেস্ট পারফর্ম্যান্স ও স্টেট স্টেবিলিটি উন্নত করা যায়। এইসব API একবার UI সিঙ্ক্রোনাইজ করে, তারপর প্রতিটি অপারেশনের জন্য বারবার সিঙ্ক্রোনাইজ করার ওভারহেড ছাড়াই কোডের একটি ব্লক এক্সিকিউট করে। এর ফলে, বিশেষত অ্যানিমেশন টেস্টিংয়ের মতো অনেক প্রপার্টি স্যাম্পেল করা টেস্টের ক্ষেত্রে, টেস্ট অনেক দ্রুত ও কম ফ্ল্যাকিভাবে এক্সিকিউট করা যায়। (Iabf66, b/490270394)
  • LayerOutsets থেকে GraphicsLayer ও Modifier.graphicsLayer যোগ করে যা পরিমাপ করা সাইজের বাইরে লেয়ারের ভিজ্যুয়াল বাউন্ড বাড়াতে ব্যবহার করা যেতে পারে। কোনও লেয়ারকে অফস্ক্রিন বাফারে প্রমোট করা হলে, এর মাধ্যমে clipToBounds আচরণ এড়ানো যায়। (Ic1189)
  • ডিফল্ট হিসেবে অটোফিল ইনপুট ইভেন্ট লগ করা বন্ধ করা হয়েছে। ComposeView.setAutofillDebugEnabled-এ কল করে এখন সেগুলি চালু করা হয়েছে। (I5b430, b/487947860)
  • Android ফ্রেমওয়ার্কের (AndroidComposeUiFlags.isFrameworkVelocityTrackerEnabled-এর মাধ্যমে কনফিগার করা যায়) দেওয়া ইমপ্লিমেন্টেশন ব্যবহার করার জন্য VelocityTracker পরিবর্তন করা হয়েছে। (Ibc7e2, b/359962905)
  • AndroidComposeUiFlags.isForceChildLayoutAfterMeasurementEnabled true হলে, লেআউট পাসের সময় পরিমাপ করার পরে চাইল্ড ভিউতে সবসময় লেআউট কল করা হবে। কম্পোজ করার সময়, পরিমাপের পরে সবসময় চাইল্ড লেআউট করা হয় না, কিন্তু ভিউয়ের ক্ষেত্রে সঠিক স্টেট ম্যানেজমেন্টের জন্য এটি প্রয়োজন। (Ib4fe9, b/430974758)
  • LayoutInfo-এ isVirtual যোগ করা হচ্ছে (I3e5cd, b/494243978)
  • isGraphicsLayerShapeSemanticsEnabled ফ্ল্যাগ সংক্রান্ত সমস্যা সমাধান করা হয়েছে। (I44be0, b/455600081)
  • কোডবেসে ফন্ট সার্টিফিকেট যোগ করার ম্যানুয়াল ধাপ ছাড়াই ডাউনলোড করা যায় এমন ফন্ট ব্যবহার করার জন্য নতুন Font API যোগ করা হয়েছে। (I30b86, b/479454159)
  • নির্দিষ্ট Android ভিউতে Compose সিমান্টিক সার্চের স্কোপ সীমাবদ্ধ করতে onRootWithViewInteraction যোগ করা হয়েছে। এর ফলে প্রোডাকশন কোডে অনন্য টেস্ট ট্যাগ না রেখেই RecyclerViews-এর মতো হাইব্রিড UI পরীক্ষা করা সহজ হয়ে যায়। (Ic02c4, b/175226753)

সমস্যার সমাধান

  • captureToImage() API এখন আপনাকে একটি বিটম্যাপে পপ-আপ বা ডায়ালগ সহ এর অ্যাঙ্কর ক্যাপচার করতে দেয়। (I9b83a, b/443137545)
  • Compose compileSdk থেকে API 37-এ আপডেট করা হয়েছে। এর অর্থ হল, Compose ব্যবহার করার সময় ন্যূনতম AGP ভার্সন 9.2.0 প্রয়োজন। (Id45cd, b/413674743)
  • ContentDataType.None সেটিং এখন কম্পোজ থেকে অটোফিল ইভেন্ট পাঠানো আটকায়। এর ফলে অটোফিল পরিষেবা অনুরোধ করার সাথে সম্পর্কিত ইনিশিয়ালাইজেশন খরচ এড়ানো যাবে। (I8fbda, b/487947860)

ভার্সন 1.11

ভার্সন 1.11.4

১ জুলাই, ২০২৬

androidx.compose.ui:ui-*:1.11.4 রিলিজ করা হয়েছে। 1.11.4 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.11.3

১৭ জুন, ২০২৬

androidx.compose.ui:ui-*:1.11.3 রিলিজ করা হয়েছে। ভার্সন 1.11.3-এ এইসব কমিট রয়েছে।

ভার্সন 1.11.2

১৯ মে, ২০২৬

androidx.compose.ui:ui-*:1.11.2 রিলিজ করা হয়েছে। 1.11.2 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.11.1

৬ মে, ২০২৬

androidx.compose.ui:ui-*:1.11.1 রিলিজ করা হয়েছে। 1.11.1 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.11.0

২২ এপ্রিল, ২০২৬

androidx.compose.ui:ui-*:1.11.0 রিলিজ করা হয়েছে। 1.11.0 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.11.0-rc01

৮ এপ্রিল, ২০২৬

androidx.compose.ui:ui-*:1.11.0-rc01 রিলিজ করা হয়েছে। 1.11.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.11.0-beta02

২৫ মার্চ, ২০২৬

androidx.compose.ui:ui-*:1.11.0-beta02 রিলিজ করা হয়েছে। 1.11.0-beta02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • কনসিস্টেন্সি বজায় রাখতে PreviewWrapper API-এর নাম পরিবর্তন করুন (I62659, b/490085948)
  • ComposeViewContext ভিউ হায়ারার্কির সাথে অ্যাটাচ না হয়েই ComposeView-কে কম্পোজ করতে দেয়। ComposeView অ্যাটাচ না করেই কম্পোজ করা শুরু করতে AbstractComposeView.createComposition(composeViewContext) ব্যবহার করুন। (I46e6f)
  • panEnd ও scaleEnd-এর জন্য ট্র্যাকপ্যাড টেস্ট API-তে delayMillis যোগ করা হয়েছে (If80fe)

সমস্যার সমাধান

  • Clipboard এবং ClipboardManager এখন প্রথম মেথড কলের (If0016, b/487947860) মাধ্যমে সিস্টেম পরিষেবার জন্য অনুরোধ করে
  • যেখানে ফোকাস নোড ও গ্রুপ আবার ব্যবহার করা হচ্ছে, সেখানে লেজি কন্টেনারের মধ্যে ফোকাস সঠিকভাবে রিস্টোর করা হবে (I18d36, b/481564275)
  • clippingEnabled = false সহ পপ-আপ এখন এজ-টু-এজ (I206408, b/327017902) দেখানোর জন্য সম্পূর্ণ উইন্ডো বাউন্ড সঠিকভাবে ব্যবহার করে

ভার্সন 1.11.0-beta01

১১ মার্চ, ২০২৬

androidx.compose.ui:ui-*:1.11.0-beta01 রিলিজ করা হয়েছে। 1.11.0-beta01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Jetpack Compose ডায়ালগে কাস্টম windowToken-এর জন্য সহায়তা যোগ করা হয়েছে (Ic7728)
  • Jetpack Compose পপ-আপে কাস্টম windowToken ও windowType-এর জন্য সহায়তা যোগ করা হয়েছে। (I0a04f)
  • PreviewWrapper ইন্টারফেস ও অ্যানোটেশন প্রদানকারী সম্পর্কে জানুন। এর ফলে ডেভেলপাররা কাস্টম আচরণ সহ তাদের প্রিভিউ নির্বিঘ্নে র‍্যাপ করতে পারবেন। (I29f54, b/484306729)
  • AndroidComposeUiFlags.isSharedFontEnabled-এর মান 'ট্রু' হলে, FontLoader ও FontFamilyResolver-এর মতো ফন্ট-সম্পর্কিত অবজেক্ট ইনস্ট্যান্স ComposeViewContext-এর মধ্যে ComposeView ইনস্ট্যান্স জুড়ে শেয়ার করা যেতে পারে। (I403e8)
  • Compose সিম্যান্টিক প্রসেসর mainLooper-এর পরিবর্তে view.handler ব্যবহার করবে, এর ফলে নন-মেইন হ্যান্ডলার ব্যবহার করা ভিউ ক্র্যাশ করবে না। (I671c3, b/486235925)
  • isSkipNonImportantSemanticsNodesHitTestEnabled ফ্ল্যাগ যোগ করা হয়েছে যা সিম্যান্টিক্স হিট টেস্টিংয়ের জন্য বাগ ফিক্সকে রক্ষা করে, এটি TalkBack-এর টাচ-টু-এক্সপ্লোরকে প্রভাবিত করে। (I2933f, b/481011169, b/454377558, b/461360154)
  • Android পরিষেবা থেকে Jetpack Compose ডায়ালগ দেখানোর সুবিধা যোগ করা হয়েছে। DialogProperties-এ নতুন windowType প্যারামিটারের মাধ্যমে কাস্টম উইন্ডো টাইপ প্রদান করে, ডেভেলপাররা এখন ওভারলে উইন্ডোতে ডায়ালগ দেখাতে পারবেন। (I7c504, b/478214962)
  • স্কেল ও প্যান ভ্যালু রিট্রিভ করার জন্য PointerInputChange ও HistoricalChange প্রপার্টির নাম পরিবর্তন করে। (I989a8, b/481333653)
  • ট্র্যাকপ্যাড জেসচারের জন্য বিভিন্ন কার্ভ ও ইনপুট সিমুলেট করতে, ট্র্যাকপ্যাড টেস্টিং API-এর জন্য আরও ফাংশনালিটি যোগ করে। (I290fb, b/473603145, b/479213358)
  • নতুন PointerEventType.Pan-কে PointerEventType.PanStart, PointerEventType.PanMove ও PointerEventType.PanEnd-এ ভাগ করে। একইভাবে, PointerEventType.Scale-কে PointerEventType.ScaleStart, PointerEventType.ScaleChange ও PointerEventType.ScaleEnd-এ ভাগ করা হয়েছে। এই স্প্লিট, প্ল্যাটফর্ম-ইন্টারপ্রেটেড প্যান ও স্কেল জেসচারের শুরু ও শেষ সম্পর্কে অতিরিক্ত তথ্য পাস করার অনুমতি দেয়, যা পরে Compose-এ পয়েন্টার ইনপুট হ্যান্ডলারকে এই তথ্য ব্যবহার করে ইভেন্ট যথাযথভাবে শনাক্ত করতে এবং বিশেষ করে প্যান বা স্কেল কখন শেষ হয়েছে তা জানতে দেয়। (I4daf6, b/479285849, b/481333653)
  • AndroidComposeUiFlags.isSharedHapticsEnabled true হলে, ComposeViewContext-এ শেয়ার করা হ্যাপটিক কন্ট্রোলার ইনস্ট্যান্স থাকে। (Icd79a)
  • উইন্ডোর ডাইমেনশন, উইন্ডোর পজিশন এবং অন্যান্য ডিভাইস ও এনভায়রনমেন্টের ক্ষমতার উপর ভিত্তি করে ডিক্ল্যারেটিভ অ্যাডাপ্টিভ UI ডেভেলপমেন্ট চালু করতে পরীক্ষামূলক mediaQuery,derivedMediaQuery এবং UiMediaScope API (@ExperimentalMediaQueryApi হিসেবে চিহ্নিত) চালু করা হয়েছে। (I2d21e, b/479800750)

সমস্যার সমাধান

  • Shape প্যারামিটার ডায়নামিক পরিবর্তন করা হলে, ব্লক-স্কোপ করা Modifier.dropShadow এবং Modifier.innerShadow আবার ড্র না করার সমস্যা সমাধান করা হয়েছে। (Ida262, b/486202623)
  • LTR টেক্সট সহ RTL লেআউট বা RTL টেক্সট সহ LTR লেআউটে ইনলাইন কন্টেন্ট ভুল জায়গায় প্লেস করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I09789)
  • ফ্র্যাগমেন্ট ট্রানজিশনে ComposeView ব্যবহার করা হলে, ব্যতিক্রম তৈরি হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ia425f, b/484100557)

এক্সটার্নাল কন্ট্রিবিউশন

  • টেক্সট রিপ্লেসমেন্ট সংক্রান্ত সাজেশন উপলভ্য থাকলে, ট্রান্সলিটারেশন ইনপুট কোন কোন আলাদা আলাদা স্টেটে থাকতে পারে তা শনাক্ত করতে সাহায্য করার জন্য একটি InputTextSuggestionState প্রপার্টি যোগ করুন। এছাড়াও, বর্তমান অনুবাদ করা টেক্সট কম্পোজিশন রেঞ্জের রেঞ্জ ট্র্যাক করার জন্য TextCompositionRange যোগ করা হয়েছে; শূন্য মান ইঙ্গিত করে যে কোনও কম্পোজিশন নেই। (I7a67f, b/476472318)

ভার্সন 1.11.0-alpha06

২৫ ফেব্রুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.11.0-alpha06 রিলিজ করা হয়েছে। 1.11.0-alpha06 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ComposeUiFlags.areWindowInsetsRulersEnabled ফ্ল্যাগের পরিবর্তে ComposeView.disableWindowInsetsRulers() API ব্যবহার করা হচ্ছে। (Idcdb4, b/455590696)
  • পরীক্ষামূলক Android-অনলি ফিচার ফ্ল্যাগ isAccessibilityShowOnScreenNestedScrollingEnabled (I1c13a)-এ সরানো হয়েছে
  • উপরের দিকে হাঁটার জন্য সহায়তা যোগ করুন (I1c13a)
  • স্ক্রিন রিডার ও একই ধরনের অ্যাক্সেসিবিলিটি পরিষেবার (I71df9, b/434782764) মাধ্যমে আরও ভালো ব্যবহারকারীর অভিজ্ঞতা পেতে, স্ক্রল করা যায় এমন কন্টেনারে আংশিকভাবে দৃশ্যমান মার্জিং নোডের চাইল্ড হিসেবে অফ-স্ক্রিন সিম্যান্টিক নোড সম্পর্কে অভিযোগ জানান
  • AndroidComposeUiFlags.isSharedClipboardManagerEnabled true হলে, ক্লিপবোর্ড সম্পর্কিত ইনস্ট্যান্স ComposeViews জুড়ে শেয়ার করা যেতে পারে ComposeViewContext ব্যবহার করে (I65e2c)
  • ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled সরানো হয়েছে (I6e14a, b/455601894)

ভার্সন 1.11.0-alpha05

১১ ফেব্রুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.11.0-alpha05 রিলিজ করা হয়েছে। 1.11.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • AndroidComposeUiFlags.isSharedWindowInfoEnabled WindowInfo তথ্য ComposeViewContext-এ সরিয়ে দেয়। ফ্ল্যাগ বন্ধ করে দিলে WindowInfo AndroidComposeView (I3b364) দ্বারা নিয়ন্ত্রিত হয়
  • ComposeView-এর মধ্যে থাকা সাধারণ স্ট্রাকচার শেয়ার করা ComposeViewContext-এ সরানো হবে। এটি হল প্রথম পরিবর্তন যা CoroutineContext থেকে ComposeViewContext-এ নিয়ে যায়। AndroidComposeUiFlags.isSharedComposeViewContextEnabled true হলে, ভ্যালু অটোমেটিক শেয়ার করা হয়। ভুল হলে, সেগুলি শেয়ার করা হয় না। (I9364d, b/461566955)
  • ট্র্যাকপ্যাড জেসচার ও ট্র্যাকপ্যাড ইনপুট ইভেন্ট থেকে মাউসে কনভার্সনের সুবিধা যোগ করে। এই পরিবর্তনের ফলে, ট্যাবলেট বা ল্যাপটপের মতো কার্সর কন্ট্রোল করা ট্র্যাকপ্যাড পয়েন্টার ইভেন্টকে সাধারণত মাউস পয়েন্টার হিসেবে রিপোর্ট করা হবে, যা পয়েন্টার স্লোপ, স্ক্রল করা ও হোভার করার ক্ষেত্রে আচরণ উন্নত করে। এছাড়াও, প্যান ও স্কেল জেস্চার সম্পর্কে অতিরিক্ত তথ্য সহ রিপোর্ট করা হবে যা পয়েন্টার ইভেন্ট পরিবর্তনগুলিতে উপলভ্য, এর সাথে একটি নতুন PointerEventType.Pan ও PointerEventType.Scale থাকবে যা ইঙ্গিত করে যে এই মানগুলি সেট করা হবে (Id071a, b/315527861, b/459831570)

সমস্যার সমাধান

  • টগল করা যায় এমন প্রপার্টিতে পরিবর্তন করার জন্য CONTENT_CHANGE_TYPE_CHECKED পাঠান। (I6ac64, b/476894689, b/474538004, b/475754416)

এক্সটার্নাল কন্ট্রিবিউশন

  • androidx.compose.ui.graphics.NativePaint typealias-এর ব্যবহার বন্ধ করা হয়েছে, এর পরিবর্তে সরাসরি android.graphics.Paint ব্যবহার করুন (I6303c, b/477394763)
  • typealias-এর মাধ্যমে commonMain সোর্সসেটে প্ল্যাটফর্মের ধরন প্রকাশ করা এড়াতে Paint.asFrameworkPaint() এক্সটেনশনের পরিবর্তে Paint.nativePaint এক্সটেনশন ব্যবহার করুন (I6303c, b/477394763)
  • NumPad মুভমেন্ট কী (I1ff12)-এর জন্য সহায়তা যোগ করুন

ভার্সন 1.11.0-alpha04

২৮ জানুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.11.0-alpha04 রিলিজ করা হয়েছে। 1.11.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • runCurrent() ব্যবহার করা যায় তা নিশ্চিত করতে এবং শেয়ার করা শিডিউলার ইনস্ট্যান্স অ্যাক্সেস করা যায় তা নিশ্চিত করতে TestCoroutineScheduler এক্সপোজ করা হয়েছে। (Iea662, b/254115946)
  • অ্যাক্সেসিবিলিটি থেকে পাওয়া android.R.id.accessibilityActionShowOnScreen-এর উত্তরে নেস্টেড স্ক্রল করার জন্য ওয়াক-আপ সাপোর্ট যোগ করুন। (Ib2723, b/431148846)

সমস্যার সমাধান

  • কাস্টম Android RGB কালার স্পেসের কনভার্সন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। কাস্টম কম্পোজ ও Android RGB কালার স্পেসের মধ্যে কাস্টম গ্রেস্কেল ট্রান্সফর্ম ভুলভাবে কনভার্ট করা হয়েছে।(ebd45,b/377021410)

ভার্সন 1.11.0-alpha03

১৪ জানুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.11.0-alpha03 রিলিজ করা হয়েছে। 1.11.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ComposeUiTestFlags.isStandardTestDispatcherSupportEnabled ফ্ল্যাগ সরিয়ে দেওয়া হয়েছে। v2 run*ComposeUiTest এবং create*ComposeRule API এখন ডিফল্ট হিসেবে StandardTestDispatcher ব্যবহার করে। UnconfinedTestDispatcher ব্যবহার চালিয়ে যেতে, আপনি অবলুপ্ত API ভেরিয়েন্ট ব্যবহার করতে পারেন; তবে, আমরা কোরাউটিন এক্সিকিউশনের উপর আরও ভাল কন্ট্রোল পেতে v2 API-তে মাইগ্রেট করার জন্য অত্যন্ত সাজেস্ট করি। (Iecc9c, b/455601592)
  • androidx.compose.ui.test.junit4.v2.create*ComposeRule API চালু করা হয়েছে। এইসব নতুন API ডিফল্ট হিসেবে StandardTestDispatcher ব্যবহার করে যাতে প্রোডাকশন আচরণ আরও ভালভাবে সিমুলেট করা যায়। এর ফলে কোরাউটিনকে অবিলম্বে এক্সিকিউট না করে তা সারিতে রাখা হয়। আরও তথ্যের জন্য মাইগ্রেশন সংক্রান্ত নির্দেশিকা দেখুন। (I1870e, b/254115946)
  • androidx.compose.ui.test.v2.run*ComposeUiTest API চালু করা হয়েছে। এইসব নতুন API ডিফল্ট হিসেবে StandardTestDispatcher ব্যবহার করে যাতে প্রোডাকশন আচরণ আরও ভালভাবে সিমুলেট করা যায়। এর ফলে কোরাউটিনকে অবিলম্বে এক্সিকিউট না করে তা সারিতে রাখা হয়। আরও তথ্যের জন্য মাইগ্রেশন সংক্রান্ত নির্দেশিকা দেখুন। (I4f782, b/254115946)
  • ComposeView-এর মধ্যে সাধারণ স্ট্রাকচার এখন শেয়ার করা যাবে। ComposeUiFlags.isSharedComposeViewContextEnabled true হলে, ভ্যালু অটোমেটিক শেয়ার করা হয়। ভুল হলে, সেগুলি শেয়ার করা হয় না। (I0d1b4, b/463540495, b/460468959, b/461503366, b/463641813)

সমস্যার সমাধান

  • ComposeView থেকে সব কন্টেন্ট সরিয়ে দিলেও আঁকা কন্টেন্ট সরে যায় না, এই সমস্যার সমাধান করা হয়েছে। (I8b382, b/299503084)
  • LookaheadScope-এর মাধ্যমে অ্যানিমেট করা হলে পজ করা যায় এমন কম্পোজিশন ক্র্যাশ হওয়ার সমস্যা সমাধান করা। (I7e649, b/469669851)
  • অটোফিল পরিষেবায় খুব বড় স্ট্রিং ট্রান্সমিট করলে ক্র্যাশ হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এটি আটকাতে, পাঠানোর আগে টেক্সট এখন অটোমেটিক কেটে বৈধ দৈর্ঘ্যে ছোট করে দেওয়া হয়।
  • নির্দিষ্ট কিছু শর্তে হোভার থেকে বেরিয়ে আসার সময় ক্লিক হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে (a3d5a0f)
  • পরীক্ষার জন্য স্টাইলাস হোভার ইভেন্ট ডিসপ্যাচ করা সংক্রান্ত সমস্যা সমাধান করে এবং নতুন স্টাইলাস পরীক্ষার জন্য মাউস পরীক্ষা প্রস্তুত করে। (9ca9bc9)
  • পয়েন্টার ইনপুটের মাধ্যমে UI এলিমেন্ট সরিয়ে দেওয়া/যোগ করার সুবিধা যোগ করে। (d0742b0, b/BUD_ID)
  • Jetpack Compose Popup-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে অ্যাঙ্কর বাউন্ডের অ্যাবসলিউট কোঅর্ডিনেট PopupPositionProvider-এ পাস করা হচ্ছিল, এর ফলে পপ-আপ ভুল জায়গায় প্লেস করা হচ্ছিল। পপ-আপ পজিশনিংয়ের গণনায় এখন সঠিক রিলেটিভ কোঅর্ডিনেট ব্যবহার করা হয়।(1f7edf,b/469940907)

ভার্সন 1.11.0-alpha02

১৭ ডিসেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.11.0-alpha02 রিলিজ করা হয়েছে। 1.11.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • MultiModalInjectionScope API এখন স্টেবল। এর মধ্যে performKeyInput ও performRotaryScrollInput এবং তাদের অন্তর্নিহিত কী ও রোটারি API অন্তর্ভুক্ত। পরীক্ষামূলক অ্যানোটেশন সরিয়ে দেওয়া হয়েছে। (Ie8bbc, b/261561237)
  • ট্র্যাকপ্যাড টেস্টিং API যোগ করে। এগুলি মাউস টেস্টিং API-এর মতো এবং ট্যাবলেট বা ল্যাপটপ ট্র্যাকপ্যাডের আচরণের মতো ইভেন্ট ইনজেক্ট করে। প্রাথমিক এন্ট্রি পয়েন্ট হল SemanticsNodeInteraction.performTrackpadInput ও MultiModalInjectionScope.trackpad (I2ce67), b/432326139.

সমস্যার সমাধান

  • মাউস হুইল স্ক্রল ইনপুট ইন্টারঅপারেবিলিটি সংক্রান্ত সমস্যা সমাধান করে। এটি শুধুমাত্র Compose-এ ব্যবহার করা হলে তবেই ব্যবহার করা হয়, Compose-এ ডিসপ্যাচ করা হলে নয়। (I5e0c4),

ভার্সন 1.11.0-alpha01

৩ ডিসেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.11.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.11.0-alpha01-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • isSemanticAutofillEnabled UI ফ্ল্যাগ সরিয়ে দেয় কারণ ডিফল্ট হিসেবে সিমান্টিক অটোফিল চালু করা হয়েছে। (I849cf, b/455587954)
  • ট্রাভার্স করার উপযুক্ত পদ্ধতি কীভাবে প্রাসঙ্গিক নোড খুঁজে পায়findNearestAncestor তা পরিবর্তন করা হয়েছে। এখন একই ধরনের (NodeKind) ডেলিগেট ট্রাভার্স করার সময় দেখা যাবে। এই পরিবর্তনটি isTraversableDelegatesFixEnabled ফ্ল্যাগ দ্বারা সুরক্ষিত। (Ia3165, b/280804097)
  • ANI#isTextEntryKey-এর জন্য TextEntryKey ম্যাপিং যোগ করুন (Ifde7b, b/399540654)
  • Modifier.onFirstVisible() আর ব্যবহার করা হয় না কারণ এর আচরণ বিভ্রান্তিকর এবং নামের সাথে দাবি করা চুক্তি সবসময় মেনে চলে না। যেমন, এটি LazyColumn আইটেমে যোগ করা হলে, স্ক্রল করার পরে এই আইটেমটি যতবার দৃশ্যমান হবে ততবার এই কলব্যাক কল করা হবে। এই নামের মডিফায়ারের ব্যবহারকারীরা এটি আশা করেননি। এর পরিবর্তে Modifier.onVisibilityChanged() ব্যবহার করার সাজেশন দেওয়া হয় এবং নির্দিষ্ট ব্যবহারের ক্ষেত্রে প্রয়োজনীয়তা অনুযায়ী লেআউট আগে থেকেই দেখা যাচ্ছিল কিনা তা ম্যানুয়ালি ট্র্যাক করুন। (Ia7095, b/447601783)
  • MeasuredSizeAwareModifierNode চালু করা হয়েছে, কলব্যাক onRemeasured() প্রয়োজন হলে এটি দরকার হয়। অন্য কলব্যাক প্রয়োজন না হলে, আরও সাধারণ LayoutAwareModifierNode ব্যবহার না করে সরাসরি এই ইন্টারফেস ব্যবহার করুন। (If6fb0)

ভার্সন 1.10

ভার্সন 1.10.6

২৫ মার্চ, ২০২৬

androidx.compose.ui:ui-*:1.10.6 রিলিজ করা হয়েছে। 1.10.6 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.10.5

১১ মার্চ, ২০২৬

androidx.compose.ui:ui-*:1.10.5 রিলিজ করা হয়েছে। 1.10.5 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.10.4

২৫ ফেব্রুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.10.4 রিলিজ করা হয়েছে। ভার্সন 1.10.4-এ এইসব কমিট আছে।

ভার্সন 1.10.3

১১ ফেব্রুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.10.3 রিলিজ করা হয়েছে। 1.10.3 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.10.2

২৮ জানুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.10.2 রিলিজ করা হয়েছে। 1.10.2 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.10.1

১৪ জানুয়ারি, ২০২৬

androidx.compose.ui:ui-*:1.10.1 রিলিজ করা হয়েছে। ভার্সন 1.10.1-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • LookaheadScope (I7e649, b/469669851) দিয়ে অ্যানিমেট করা হলে পজ করা যায় এমন কম্পোজিশনের সাথে ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা
  • Jetpack Compose Popup-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে অ্যাঙ্কর বাউন্ডের অ্যাবসলিউট কোঅর্ডিনেট PopupPositionProvider-এ পাস করা হচ্ছিল, এর ফলে পপ-আপ ভুল জায়গায় প্লেস করা হচ্ছিল। পপ-আপ পজিশনিংয়ের গণনায় এখন সঠিক রিলেটিভ কোঅর্ডিনেট ব্যবহার করা হয়।(1f7edf,b/469940907)

ভার্সন 1.10.0

৩ ডিসেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.10.0 রিলিজ করা হয়েছে। 1.10.0 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.10.0-rc01

১৯ নভেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.10.0-rc01 রিলিজ করা হয়েছে। 1.10.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • minDurationMs শূন্য না হলে, visibilityChanged কলব্যাককে ভুল মান সহ সঠিকভাবে পাঠান। (2ac08b8, b/456384555)
  • নোড প্রাথমিকভাবে দেখা না গেলে onVisibilityChanged কলব্যাক কল করবেন না। (3969e8d, b/447364998)

ভার্সন 1.10.0-beta02

৫ নভেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.10.0-beta02 রিলিজ করা হয়েছে। 1.10.0-beta02 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.10.0-beta01

২২ অক্টোবর, ২০২৫

androidx.compose.ui:ui-*:1.10.0-beta01 রিলিজ করা হয়েছে। 1.10.0-beta01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ফোকাস পরিবর্তন ডিসপ্যাচ করার জন্য অপ্টিমাইজেশন যোগ করে। isOptimizedFocusEventDispatchEnabled = false (I919fb, b/449228515) বিকল্পের সাহায্যে এটি বন্ধ করা যেতে পারে
  • পয়েন্টার ইনপুট API-এর সাথে ম্যাচ করার জন্য পরোক্ষ টাচ API-কে পরোক্ষ পয়েন্টার API নাম ব্যবহার করার জন্য আপডেট করে। (I238ce, b/451607214)
  • TextDirection, TextAlign, Hyphens, FontSynthesis valueOf ফাংশন এখন কোনও অজানা ভ্যালু পেলে IllegalArgumentException দেখায়। (I07c67)
  • র‍্যাপার ফাংশনের পরিবর্তে ডিফল্ট ভ্যালু পাস করতে CompositionDataTree.makeTree আপডেট করুন। (Id64a6, b/445229688)
  • createComposeRule, createAndroidComposeRule ও createEmptyComposeRule টেস্ট রুল API যা effectContext প্যারামিটার গ্রহণ করে তা স্থিতিশীল এবং প্যারামিটার ডিফল্ট হিসেবে EmptyCoroutineContext সেট করা থাকে। (If400c, b/450540702)
  • UnplacedStateAwareModifierNode-এর নাম পরিবর্তন করে UnplacedAwareModifierNode রাখা হয়েছে (I6a551, b/449719932)
  • কন্টেন্ট ক্যাপচার অপ্টিমাইজেশন আগের অবস্থায় ফিরিয়ে আনা (Ic000b, b/442364065)
  • ComposeUiFlags.isRectManagerOffsetUsageFromLayoutCoordinatesEnabled ফিচার ফ্ল্যাগ যোগ করা হয়েছে। এটি পারফর্ম্যান্স অপ্টিমাইজেশন চালু করেছে যেখানে LayoutCoordinates.positionInRoot()-এর মতো কোঅর্ডিনেট অনুরোধগুলি RectManager-এ আগে থেকেই থাকা ক্যাশে করা অফসেট ব্যবহার করছে, প্রতিটি কলের জন্য সম্পূর্ণ ট্রি ট্রাভার্স করার পরিবর্তে। (Ieaadc)

সমস্যার সমাধান

  • PlaceholderSpan এখন সাইজ করার জন্য সঠিকভাবে নন-লিনিয়ার ফন্ট স্কেলিং ব্যবহার করে (Id2ead, b/324462728)
  • প্ল্যাটফর্ম লেভেলে কাজ করে এমন হ্যাপ্টিক ফিডব্যাক কনস্ট্যান্ট পারফর্ম করতে ViewCompat ব্যবহার করুন, এটি নতুন কনস্ট্যান্টের জন্য ফলব্যাক সাপোর্টের উপর নির্ভর করে। (Ib5a00)

ভার্সন 1.10.0-alpha05

৮ অক্টোবর, ২০২৫

androidx.compose.ui:ui-*:1.10.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.10.0-alpha05-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • নেস্টেড পপ-আপ স্ক্রিনের উপরে ভুলভাবে পজিশন করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে; সেগুলি এখন সঠিকভাবে তাদের মূল পপ-আপে অ্যাঙ্কর করা হয়েছে। (Id4603, b/191279752)
  • হায়ারার্কিতে অন্যান্য ভিউয়ের সাথে ফোকাস র‍্যাপিং সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I95223, b/446028624)
  • Kotlin 2.2.20 (I9855d, b/447110005) দ্বারা জেনারেট করা ল্যাম্বডায় ইনলাইন প্যারামিটার সহ ফিল্ডে ইনস্পেক্টর থেকে অনুপস্থিত সমস্যা সমাধান করে
  • UI ও ফাউন্ডেশন মডিউলের মধ্যে অটোফিল রিসোর্সের নাম শ্যাডো করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে (I5da5a)

এক্সটার্নাল কন্ট্রিবিউশন

  • UiModes অবজেক্টের নাম পরিবর্তন করে AndroidUiModes করা হয়েছে যাতে বোঝা যায় যে এর কনস্ট্যান্ট Android API থেকে নেওয়া হয়েছে। (Ia0a77)

ভার্সন 1.10.0-alpha04

২৪ সেপ্টেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.10.0-alpha04 রিলিজ করা হয়েছে। 1.10.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • CoroutineContext প্যারামিটার গ্রহণ করে এমন কম্পোজ টেস্টের নিয়ম সংক্রান্ত ভেরিয়েন্টকে স্টেবল ভার্সনে প্রোমোট করা হয়েছে। পরীক্ষামূলক অ্যানোটেশন সরিয়ে দেওয়া হয়েছে এবং এই API ব্যবহার করার জন্য ডেভেলপারদের আর অপ্ট-ইন করতে হবে না। (I74e6e)
  • ComposeUiFlags.isRectTrackingEnabled সরানো হয়েছে। এই লজিক সবসময় চালু থাকে না। (Id78df)
  • Updater#set-এর ইনলাইন ওভারলোড বাতিল করা হয়েছে কারণ এটি প্রদত্ত ভ্যালুকে অনেকবার বক্সিং করছিল (Id679e)
  • onAutofillText সিম্যান্টিক প্রপার্টিকে বন্ধ করা হয়েছে হিসেবে চিহ্নিত করুন। (I6f81c)
  • UnplacedStateAwareModifierNode চালু করা হয়েছে। আগে প্লেস করা লেআউট আর প্লেস করা না হলে এটি একটি কলব্যাক প্রদান করে। (I8fdd8, b/309776096)
  • RetainObserver.onRetained-এর ডকুমেন্টেশন সংশোধন করা হয়েছে এবং RetainObserver.onUnused যোগ করা হয়েছে, যা RememberObserver.onAbandoned-এর মতো। (Ia6fc5)
  • onVisibilityChangedNode() যোগ করা হয়েছে, যা Modifier.Node তৈরি করছে, যা Modifier.onVisibilityChanged()-এর মাধ্যমে ডেলিগেশন ব্যবহার করে, যা আপনার কাস্টম Modifier.Node-এ এই ফাংশনালিটি আরও উন্নত করতে দেয়। (I70d84, b/443001320)

সমস্যার সমাধান

  • একাধিক লাইন বিশিষ্ট এলিপসাইজ করা টেক্সটের শেষ লাইনে প্লেসহোল্ডার এলিপসাইজ করা অঞ্চলের আগে থাকা সত্ত্বেও ইনলাইন কন্টেন্ট রেন্ডার না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I76aaf, b/441829208)

ভার্সন 1.10.0-alpha03

১০ সেপ্টেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.10.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.10.0-alpha03-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • DelegatableNode.invalidateLayoutForSubtree-এর নাম পরিবর্তন করে DelegatableNode.invalidateMeasurementForSubtree করা হয়েছে। (I94257, b/430106107)
  • অপ্রয়োজনীয় isInHiddenAccessibilitySubtree ম্যাচ করার সুবিধা সরিয়ে দেয়। (I4476c, b/443792965)
  • গ্রুপ কী ভিত্তিক কম্পোজ স্ট্যাক ট্রেস চালু করে যা সব মিনিফাই করা অ্যাপের জন্য ডিফল্ট হিসেবে চালু থাকে। এইসব ট্রেসের জন্য প্রোগার্ড ম্যাপিং, Kotlin 2.3.0 থেকে শুরু করে Compose compiler Gradle প্লাগ-ইন দ্বারা তৈরি করা হবে। (Ifbcb5)
  • Modifier.skipToLookaheadSize এখন ডিফল্ট হিসেবে চালু থাকা ল্যাম্বডা ব্যবহার করে যা শুধুমাত্র শেয়ার করা ট্রানজিশন অ্যাক্টিভ থাকলেই সাইজ স্কিপ করার সুবিধা চালু করে, এটি Modifier.skipToLookaheadPosition-এর মতোই কাজ করে। (Ibe0f5, b/432485585)
  • ComposeUiFlags.isOutOfFrameDeactivationEnabled সরিয়ে দেওয়া হয়েছে এবং এই কার্যকারিতা এখন সবসময় চালু থাকে। (I421ed)
  • FillableData ইনস্ট্যান্স তৈরি করার জন্য ফ্যাক্টরি ফাংশন কম্প্যানিয়ন অবজেক্টে সরান। FillableData(value)-এর পরিবর্তে, নতুন ফ্যাক্টরি পদ্ধতি ব্যবহার করুন: FillableData.createFrom(value)। (I2e200, b/441719650)
  • ফোকাস সার্চের জন্য বাউন্ড লেআউটের বাইরে পারফর্ম করতে BeyondBoundsLayoutModifierNode একটি নতুন মডিফায়ার নোড যোগ করা হয়েছে। (I39be1, b/416133658)
  • FocusTargetModifierNode.requestFocus() নিজে ফোকাস করার উপযুক্ত না হলে, সেটির কোনও একটি চাইল্ডে ফোকাস পাঠায়। এটি এখন FocusRequester.requestFocus() এবং FocusRequesterModifierNode.requestFocus()-এর সাথে সামঞ্জস্যপূর্ণ। এই আচরণ আপনার প্রয়োজন না হলে, আপনার অ্যাপে ComposeUiFlags.isRequestFocusOnNonFocusableFocusTargetEnabled ফ্ল্যাগকে false হিসেবে সেট করুন। (Icca5c, b/436863604)
  • WindowInfo-এ DP-ভিত্তিক উইন্ডো সাইজ প্রদান করুন (I9322b, b/424442112)
  • ফ্ল্যাগ সরানো হয়েছে isNestedScrollDispatcherNodeFixEnabled। (If451a)
  • FillableData API-তে অটোফিলে তারিখের ভ্যালু যোগ করার সুবিধা। val dateMillisValue: Long যোগ করা হয়েছে যাতে তারিখ সংক্রান্ত তথ্য পাওয়া যায় এবং তারিখ-ভিত্তিক FillableData ইনস্ট্যান্স তৈরি করার জন্য সংশ্লিষ্ট FillableData(dateMillisValue: Long) কনস্ট্রাক্টর যোগ করা হয়েছে। (Id072a)

এক্সটার্নাল কন্ট্রিবিউশন

  • UiModes অবজেক্টটি এমন কনস্ট্যান্ট ঘোষণা করার জন্য চালু করা হয়েছে যা UiMode অ্যানোটেশনের (I03cb8) জন্য ব্যবহার করা হয়

ভার্সন 1.10.0-alpha02

২৭ আগস্ট, ২০২৫

androidx.compose.ui:ui-*:1.10.0-alpha02 রিলিজ করা হয়েছে। 1.10.0-alpha02 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • FillableData-কে আপডেট করে টগল ও তালিকার মতো টেক্সট নয় এমন কম্পোনেন্টকে কাজ করার উপযোগী করে তুলুন। এর মধ্যে FillableData-এর মধ্যে থাকা বুলিয়ান ও পূর্ণসংখ্যা এবং FillableData-এর বুলিয়ান ও তালিকার ইনস্ট্যান্স তৈরি করার জন্য ফ্যাক্টরি কনস্ট্রাক্টর অন্তর্ভুক্ত। এগুলি প্ল্যাটফর্মের AutofillValue-এ ট্রান্সলেট করা হয়। এছাড়াও, প্রাসঙ্গিক সিম্যান্টিক প্রপার্টি ও অ্যাকশন যোগ করা হয়। (Ia8105, Icc5cf)
  • টাচ মোড ছাড়া অন্য মোডে, ভিউ সিস্টেম স্ক্রিনে থাকা ফোকাস করা যায় এমন আইটেমগুলির মধ্যে কোনও একটিতে প্রাথমিক/ডিফল্ট ফোকাস অ্যাসাইন করে। এই ফিচারটি 'কম্পোজ' উইন্ডোতে যোগ করা হয়েছে এবং ComposeUiFlags.isInitialFocusOnFocusableAvailable চালু করে এটি চালু করা যাবে। (Ib9178)
  • ফ্ল্যাগ সরানো হয়েছে isPointerInteropFilterDispatchingFixEnabled। (Iaa589)
  • ফ্ল্যাগ সরানো হয়েছে isNestedScrollInteropPostFlingFixEnabled। (I2a756)
  • isHiddenFromAccessibility() ও isInHiddenAccessibilitySubtree() সিম্যান্টিক ম্যাচিং যোগ করুন। (I9f5a1)
  • আন্ডারলায়িং শিডিউলারের মাধ্যমে বাকি থাকা সব টাস্ক চালানোর জন্য runCurrent() থেকে MainTestClock পর্যন্ত যোগ করা হয়েছে। এটি StandardTestDispatcher-এ পরীক্ষা চালানোর জন্য, যেখানে টাস্কগুলি শিডিউলারের সাথে যোগ করা হয়, তবে সেগুলি অবিলম্বে এক্সিকিউট করা হয় না, কারণ সেগুলিতে ০ms বিলম্ব থাকে। StandardTestDispatcher ব্যবহার করার জন্য একটি টেস্ট সেট-আপ করা যেতে পারে, এর জন্য ComposeTestRule তৈরি করে সেটিতে StandardTestDispatcher পাস করতে হবে। সাধারণত, UnconfinedTestDispatcher-এ টেস্ট চালানো হয়, সেক্ষেত্রে runCurrent()-কে কখনও কল করতে হয় না।
  • StandardTestDispatcher-এ টেস্ট চালানোর জন্য সহায়তা যোগ করা হয়েছে। ঐতিহাসিকভাবে, টেস্ট ফ্রেমওয়ার্ক UnconfinedTestDispatcher ব্যবহার করে সেট-আপ করা হয়েছে (এবং এখনও হচ্ছে), যা প্রোডাকশন এনভায়র্নমেন্টের থেকে সামান্য আলাদা। আপনি এখন নিজের StandardTestDispatcher তৈরি করে এবং ComposeTestRule তৈরি করার সময় (অথবা runComposeUiTest কল করার সময়) effectContext-এ যোগ করে এই সেট-আপ পরিবর্তন করতে পারবেন। (I334d0, b/254115946)
  • SlotTree থেকে নোডের ট্রি তৈরি করার জন্য কোড আপডেট করুন। (I997d3)

সমস্যার সমাধান

  • Compose UI এখন Android-এ লাইফসাইকেল-অ্যাওয়ার RetainScopes ইনস্টল করে। কনফিগারেশনে পরিবর্তন করা হলেও ডিফল্ট বিহেভিয়ার এখন retain-এর ভ্যালু বজায় রাখবে। (Id4a09, b/177562901)

এক্সটার্নাল কন্ট্রিবিউশন

  • VelocityTracker-এর জন্য প্ল্যাটফর্ম-নির্দিষ্ট আচরণ ব্যবহার করে ট্র্যাক করা পয়েন্টার ইভেন্টের উপর ভিত্তি করে পয়েন্টারের ভেলোসিটি গণনা করার ক্ষমতা যোগ করে। (I621e8)

ভার্সন 1.10.0-alpha01

১৩ আগস্ট, ২০২৫

androidx.compose.ui:ui-*:1.10.0-alpha01 রিলিজ করা হয়েছে। 1.10.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ComposeView-এ মাউস বা টাচপ্যাড দিয়ে পয়েন্টার ডাউন করলে, ফোকাস করা নোডের সীমানার মধ্যে পয়েন্টার ডাউন না হলে, এখন অটোমেটিক ফোকাস সরে যাবে। এর ফলে "ফোকাস সরাতে ট্যাপ করুন" UX পাওয়া যায় যা পয়েন্টার ইনপুট ডিভাইস ব্যবহার করার সময় বর্তমান আচরণের থেকে বেশি প্রত্যাশিত। নতুন AbstractComposeView.isClearFocusOnPointerDownEnabled API-এর মাধ্যমে এই আচরণ থেকে বেরিয়ে আসা যাবে। (I6322b, b/282963174)
  • টেক্সট ছাড়াও বিভিন্ন ধরনের অটোফিল কম্পোনেন্টকে সাপোর্ট করার জন্য FillableData ইন্টারফেস চালু করা হয়েছে। (If9bd2)
  • শেয়ার করা এলিমেন্ট ডাইনামিকালি চালু ও বন্ধ করার অনুমতি দিতে নতুন API, যা আগে থেকেই কোনও শেয়ার করা এলিমেন্ট ট্রানজিশন চলছে কিনা তা বিবেচনা করার অনুমতিও দেয়। ট্রানজিশনের সময় টার্গেট শেয়ার করা এলিমেন্ট ডিসপোজ করা হলে, বিকল্প টার্গেট বাউন্ড সেট-আপ করার জন্য নতুন API। LookaheadScope-এর LayoutCoordinates পাওয়ার জন্য নতুন API. (I18dd4, b/409819304, b/395670637)
  • নেস্টেড স্ক্রল ইন্টারওপে সঠিক পূর্ণসংখ্যা ডিসপ্যাচ করার এক্সপেরিমেন্ট কন্ট্রোল করতে flag isNestedScrollInteropIntegerPropagationEnabled যোগ করুন। (If8316)
  • প্রদত্ত rect-এর সাথে ওভারল্যাপ করা চাইল্ডে ফোকাস সরাতে requestFocusForChildInRootBounds() থেকে DelegatableNode যোগ করা হয়েছে। (I001ef)
  • সরানো ফ্ল্যাগ isOnScrollChangedCallbackEnabled, isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled, isFlingContinuationAtBoundsEnabled, isAutomaticNestedPrefetchEnabled, DragGesturePickUpEnabled, isPointerInteropFilterDispatchingFixEnabled, isNestedScrollInteropPostFlingFixEnabled, isNestedScrollDispatcherNodeFixEnabled (I36c18)
  • ফেরানো ভ্যালু ব্যবহার করা নিশ্চিত করতে SemanticsNode ফাইন্ডার ও সিলেক্টর ফাংশনে @CheckResult অ্যানোটেশন যোগ করা হয়েছে। (I6f86e, b/201652748)
  • কন্টেন্ট ক্যাপচার প্রসেসের পারফর্ম্যান্স উন্নত করা (I3c7c0)
  • CompositionLocal চালু করা হয়েছে যা অটোফিলের সফলভাবে পূরণ করা হাইলাইটের ব্রাশ পরিবর্তন করতে ব্যবহার করা যেতে পারে। (I52329)
  • নতুন ইন্টারপোলেটেবল ইন্টারফেস চালু করা হয়েছে যা বিভিন্ন ধরনের ডেটার মধ্যে অটোমেটিক ইন্টারপোলেশন করতে দেয়। এটি ধরে নেয় যে এক ধরনের ডেটা অন্য ধরনের ডেটায় কীভাবে কনভার্ট করতে হয় তা জানে। এই ইন্টারফেসটি ব্রাশ ও শেপের মতো বিভিন্ন কম্পোজ ধরনের ক্ষেত্রে ব্যবহার করা হয়, তবে এটি এক্সটার্নালিও ব্যবহার করা যেতে পারে। (I58eab)
  • এখন স্ক্রল করার উপযুক্ত আইটেম ২ ডাইমেনশনাল মাউস হুইল স্ক্রল ইভেন্ট আরও ভালোভাবে সাপোর্ট করে। MouseInjectionScope-এ ব্যবহারের ক্ষেত্রে পরীক্ষা করতে সাহায্য করার জন্য একটি নতুন টেস্ট API এসেছে। এছাড়াও, আমরা MouseInjectionScope-এ স্ক্রল পদ্ধতির জন্য একটি নতুন ওভারলোড এবং isMouseWheel1DAxisLockingEnabled (I136df) নামের নতুন আচরণ নিয়ন্ত্রণ করার জন্য একটি ফ্ল্যাগ চালু করেছি
  • কীবোর্ডের ধরন ও অবস্থা, নেভিগেশনের ধরন ও অবস্থা, টাচস্ক্রিনের অবস্থা এবং UI মোডের ধরন (I282f0) সম্পর্কে তথ্য যোগ করুন DeviceConfigurationOverrides
  • Tight নামের নতুন LineHeightStyle.Mode যোগ করা হয়েছে। এই মোডটি ছোট লাইন হাইট প্রয়োগ করতে সাহায্য করে, এমনকি যখন এটি সম্ভবত বড় গ্লিফ কেটে দিতে পারে। (Id3849)
  • BaselineShift-এর এখন একটি অনির্দিষ্ট ভ্যালু আছে যা বক্সিং প্রতিরোধ করে। BaselineShift, Hyphens, LineBreak, TextAlign ও TextDirection-এর এখন isSpecified হেল্পার ফাংশন আছে। Hyphens, TextAlign, TextDecoration ও TextDirection-এর এখন valueOf() ও ভ্যালু মেথড আছে যা কার্যকরভাবে সিরিয়ালাইজেশন/ডিসিয়ারিয়ালাইজেশন চালু করে। (I8d44c)
  • প্রিভিউ প্যারামিটার ইনস্ট্যান্সের জন্য কাস্টম ডিসপ্লে নাম যোগ করার অনুমতি দিতে একটি নতুন getDisplayName মেথড ইন্টারফেস যোগ করা হয়েছে। (I19bdf, b/241699422)
  • Dp ভ্যালুকে যখন কম-বেশি চিহ্ন ব্যবহার করে অনির্দিষ্ট ভ্যালুর সাথে তুলনা করা হয়, তখন এটি সবসময় false রিটার্ন করে। Dp.compareTo(Unspecified) ব্যবহার করলে সবসময় ০ রিটার্ন করে। ComposeUiUnitFlags.isDpCompareToChanged ফ্ল্যাগটি false হিসেবে সেট করলে, Dp.compareTo() আগের আচরণে ফিরে যাবে, যেখানে Unspecified-এর সাথে less-than ও greater-than তুলনা করলে সবসময় false রিটার্ন করে না এবং compareTo()-এর সাথে Unspecified-এর আচরণ 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-এ প্ল্যাটফর্ম-নির্দিষ্ট স্টেট এনকোডিং এখন সবসময় চালু থাকে। এটি টেস্টের আচরণকে আসল অ্যাপ্লিকেশন স্টেট রিস্টোরেশনের সাথে অ্যালাইন করে, যেমন Android-এ পার্সেলাইজেশন। (I38211, b/408154192, b/382294247)
  • ফোকাসের অনুরোধ করার সময় মাঝে মাঝে ক্র্যাশ হওয়ার সমস্যা সমাধান করে। (57b31a11, b/431111149)

ভার্সন 1.9

ভার্সন ১.৯.৫

১৯ নভেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.9.5 রিলিজ করা হয়েছে। ভার্সন 1.9.5-এ এইসব কমিট রয়েছে।

ভার্সন 1.9.4

২২ অক্টোবর, ২০২৫

androidx.compose.ui:ui-*:1.9.4 রিলিজ করা হয়েছে। ভার্সন 1.9.4-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • একাধিক লাইন বিশিষ্ট এলিপ্সাইজ করা টেক্সটের শেষ লাইনে ইনলাইন টেক্সট কন্টেন্ট থাকলে, সেটি এলিপ্সাইজ করা অংশে না থাকা সত্ত্বেও অদৃশ্য হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I76aaf, b/441829208)
  • debounceMillis শূন্য না হলে onLayoutRectChanged মডিফায়ার কলব্যাক সবসময় কল না করার সমস্যা সমাধান করা হয়েছে। (72aba47, b/445324854)

ভার্সন 1.9.3

৮ অক্টোবর, ২০২৫

androidx.compose.ui:ui-*:1.9.3 রিলিজ করা হয়েছে। 1.9.3 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • যেসব লেআউট সরানো হচ্ছে সেগুলিতে ১৭০টির বেশি ডিসেন্ডেন্ট থাকলে, onVisibilityChanged/onFirstVisible/onLayoutRectChanged মডিফায়ার কলব্যাক পায় না, এই সমস্যার সমাধান করা হয়েছে। (4f2fdd, b/445356774)

ভার্সন 1.9.2

২৪ সেপ্টেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.9.2 রিলিজ করা হয়েছে। ভার্সন 1.9.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Modifier.onVisibilityChanged() এখন কোনও নোড আলাদা করা বা আবার ব্যবহার করা হলে সঠিকভাবে ফায়ার করে। (Ic5ce20)
  • Modifier.onVisibilityChanged() এবং onLayoutRectChanged() এখন বাচ্চাদের প্লেস করার জন্য placeWithLayer() ব্যবহার করে প্যারেন্ট লেআউট সঠিকভাবে ম্যানেজ করে। (Ia05ac9)
  • Modifier.onVisibilityChanged() ও onLayoutRectChanged()-এর জন্য, লেয়ার/লেয়ার মডিফায়ার সরানো বা লেয়ার প্রপার্টি আপডেট করার মতো কর্নার কেসে যথাযথভাবে বিজ্ঞপ্তি পাঠাও। (Ia05ac)

ভার্সন 1.9.1

১০ সেপ্টেম্বর, ২০২৫

androidx.compose.ui:ui-*:1.9.1 রিলিজ করা হয়েছে। ভার্সন 1.9.1-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • একটি রঙের ভেক্টর ড্রয়েবল ব্যবহার করার সময় রঙের বাগ সমাধান করে এবং fillColor সম্পূর্ণ অস্বচ্ছ বা সম্পূর্ণ স্বচ্ছ হয় না। (I3b041, b/328677973)

ভার্সন 1.9.0

১৩ আগস্ট, ২০২৫

androidx.compose.ui:ui-*:1.9.0 রিলিজ করা হয়েছে। 1.9.0 ভার্সনে এইসব কমিট আছে।

1.8.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • 1.9.0 ভার্সনে হওয়া গুরুত্বপূর্ণ পরিবর্তন এই ব্লগপোস্টে উল্লেখ করা আছে
  • Compose-এর সাথে শিপ করা লিন্ট চেকের জন্য এখন ন্যূনতম AGP ভার্সন 8.8.2 প্রয়োজন। আপনি AGP আপগ্রেড করতে না পারলে, তার পরিবর্তে আপনার gradle.properties-এ android.experimental.lint.version=8.8.2 (বা এর পরের যেকোনও ভার্সন) ব্যবহার করে Lint-কে আলাদাভাবে আপগ্রেড করতে পারবেন। IDE-এর মধ্যে Compose লিন্ট চেক রান করাতে, Android Studio Ladybug বা এর পরের যেকোনও ভার্সন প্রয়োজন।
  • ব্রেকিং পরিবর্তন: graphicsLayer মডিফায়ার নোড এখন SemanticsModifierNode প্রয়োগ করে। এর ফলে সিম্যান্টিক ট্রি-তে নতুন SemanticsNodes যোগ হতে পারে এবং এর ফলে সিম্যান্টিক ট্রি স্ট্রাকচার সম্পর্কে অনুমান করা টেস্টে টেস্ট ব্যর্থ হতে পারে। যেমন, onChild, onParent, onSibling ও অন্যান্য একই ধরনের পদ্ধতি ব্যবহার করে অ্যাসারশন তৈরি করা টেস্ট, বর্তমান ও টার্গেট নোডের মধ্যে নতুন নোড যোগ করা হলে, ব্যর্থ হতে পারে। এইসব ব্যর্থতা সমাধানের সবচেয়ে ভাল উপায় হল, testTag সরাসরি টার্গেট নোডে যোগ করা। আরেকটি উপায় হল, onNode(hasAnyAncestor(hasText("ancestor")) and hasText("target"))-এর মতো আরও বেশি ম্যাচ করা যায় এমন ম্যাচিং ব্যবহার করা। (I638b5)

ভার্সন 1.9.0-rc01

৩০ জুলাই, ২০২৫

androidx.compose.ui:ui-*:1.9.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.9.0-rc01-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • painterResource-এর মাধ্যমে লোড করা আইকন, থিম-নির্দিষ্ট রঙের সাথে সিস্টেম থিমের পরিবর্তন অনুযায়ী আপডেট না হওয়া সংক্রান্ত সমস্যার সমাধান করে। (I85ea0, b/424416571)
  • অপ্টিমাইজ করার সময় গুরুত্বপূর্ণ গ্রাফিক পদ্ধতির নাম পরিবর্তন করা হলে API 21(Lollipop) ও 28(Pie)-তে হওয়া সমস্যা সমাধান করে। (Iebf99, b/425120571, b/420462749)
  • নতুন যোগ করা onLayoutRectChanged মডিফায়ার যাতে প্রথমে কল ব্যাক করা হয় তা নিশ্চিত করুন। (l9aa91), (lb348a)
  • ভুলভাবে বাতিল করা অফসেট ক্যাশের জন্য সমাধান, যার ফলে ভুল কোঅর্ডিনেট (ibd4cd), (lddc57) সহ onLayoutRectChanged মডিফায়ার কল করা হয়
  • onLayoutRectChanged মডিফায়ার (lddc57, b/426750475) দ্বারা ভুল কোঅর্ডিনেট পাওয়া রোটেট/স্কিউড লেআউটের জন্য সমাধান

এক্সটার্নাল কন্ট্রিবিউশন

  • স্ক্রল করলে LazyList-এর মধ্যে থাকা dragAndDropSource আইটেম অদৃশ্য হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। ধন্যবাদ ভিক্টর রেন্ডিনা! (dc3bcd3, b/425894792)

ভার্সন 1.9.0-beta03

১৬ জুলাই, ২০২৫

androidx.compose.ui:ui-*:1.9.0-beta03 রিলিজ করা হয়েছে। 1.9.0-beta03 ভার্সনে এইসব কমিট আছে।

সমস্যার সমাধান

  • অফসেটের সাথে ইউনিফর্মভাবে অস্পষ্ট করা ভিতরের শেডোর সঠিকভাবে না নড়াচড়া করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

ভার্সন 1.9.0-beta02

২ জুলাই, ২০২৫

androidx.compose.ui:ui-*:1.9.0-beta02 রিলিজ করা হয়েছে। 1.9.0-beta02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • ক্লাসের সাথে ম্যাচ করাতে কম্প্যানিয়ন অবজেক্টকে পরীক্ষামূলক হিসেবে পরিবর্তন করে। (I8452a)
  • isTrackFocusEnabled পরীক্ষামূলক ফ্ল্যাগ (I003fd) সরানো হয়েছে

সমস্যার সমাধান

  • WindowInsets ComposeView-এর কন্টেন্টকে লঙ্ঘন না করলে, WindowInsetsRulers ভ্যালু প্রদান করা হয় না। (I71221)

ভার্সন 1.9.0-beta01

১৮ জুন, ২০২৫

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)

API-তে পরিবর্তন

  • 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)
  • InsetsRulers পরিবর্তন করে WindowInsetsRulers নামের সাধারণ কোডে রাখা হয়েছে। API-কে আরও সহজ করা হয়েছে যাতে সব ইনসেট WindowInsetsRulers হয়। AnimationProperties ক্লাসে নন-রুলার অ্যানিমেশন প্রপার্টি এক্সট্র্যাক্ট করা হয়েছে। একাধিক WindowInsetsRulers মার্জ করতে WindowInsetsRulers.innermostOf() ব্যবহার করা যেতে পারে। (I2f0c6, b/415012444)
  • Compose কম্পাইলারের যোগ করা সোর্স সংক্রান্ত তথ্য পার্স করার জন্য টুলিং API যোগ করা হয়েছে। (Iceaf9, b/408492167)

সমস্যার সমাধান

  • ফিচারটি সম্পূর্ণ যাচাই করা হয়ে যাওয়ার পরে isGetFocusedRectReturnEmptyEnabled-এর জন্য ফ্ল্যাগ সরিয়ে দেওয়া হয়েছে। (Ife722)
  • performScrollToNode-এ একটি সমস্যার সমাধান করা হয়েছে, যা কিছু ক্ষেত্রে টার্গেট নোডে পৌঁছাচ্ছিল না। এই সমাধান প্রয়োগ করার পরে, এইসব ক্ষেত্রে এটি সবসময় টার্গেট নোডে পৌঁছাবে। এই পরিবর্তনের একটি পার্শ্বপ্রতিক্রিয়া হল যে অ্যাকশনের শেষে স্ক্রল পজিশন এখন আলাদা হতে পারে, যা স্ক্রিনশট পরীক্ষা এবং সেইসব পরীক্ষাগুলিকে প্রভাবিত করে যেগুলি স্ক্রল পজিশন সম্পর্কে অনুমান করে। (I2c8a1)

ভার্সন 1.9.0-alpha04

৪ জুন, ২০২৫

androidx.compose.ui:ui-*:1.9.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha04-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • কাস্টমাইজ করা যায় এমন শেডোর জন্য মডিফায়ার API যোগ করা হয়েছে। (I2058d, b/160665122)
  • SemanticsModifierNode.isImportantForBounds প্রপার্টি যোগ করুন যা নির্ধারণ করে যে বাউন্ড গণনা করার সময় নোডটি বিবেচনা করা উচিত কিনা। প্রপার্টিটি ডিফল্ট হিসেবে 'ট্রু' থাকে এবং বাউন্ডের জন্য নোড বিবেচনা করা উচিত নয় তা বোঝাতে 'ফলস' হিসেবে সেট করা যেতে পারে। (I7ebec)
  • SemanticsPropertyKey Android-নির্দিষ্ট সিম্যান্টিক প্রপার্টি ঘোষণা করার জন্য একটি ফ্যাক্টরি ফাংশন যোগ করুন যা AccessibilityNodeInfo.getExtras-এর মাধ্যমে অ্যাক্সেসিবিলিটি এক্সট্রা হিসেবে উপলভ্য করা হয়। (I2ed51)
  • ComposeUiFlags.isRemoveFocusedViewFixEnabled-এর ব্যবহার সরিয়ে দেওয়া হয়েছে এবং ফ্ল্যাগটি বন্ধ করে দেওয়া হয়েছে। (I50328)
  • কাস্টমাইজ করা যায় এমন নতুন শ্যাডো ফ্রেমওয়ার্ক চালু করা। এর মধ্যে DropShadowPainter ও InnerShadowPainter এবং DropShadow/InnerShadow নির্ভরতা অন্তর্ভুক্ত। শেয়ার করা শ্যাডো ইনফ্রাস্ট্রাকচার এমনভাবে শেয়ার করা হয় যাতে একই জেনারেট করা শ্যাডো একাধিক কলসাইটে শেয়ার করা যায় এবং শ্যাডোকে n-বার আবার জেনারেট করতে না হয়। (I24f7a, b/160665122)
  • CompositeShader ও CompositeShaderBrush যোগ করা হয়েছে যা দুটি শেডারের মধ্যে কম্পোজিট ফলাফল তৈরি করে। এছাড়াও, শেডারের জন্য ট্রান্সফর্মেশন ম্যাট্রিক্স সেট করতে ShaderBrush#transform যোগ করুন। (I2621a, b/160665122)

সমস্যার সমাধান

  • NestedScrollInteropConnection-এ একটি সমস্যার সমাধান করা হয়েছে যেখানে ভিউয়ের সাপেক্ষে ফ্লিং পদ্ধতি ভুল ক্রমে দেখানো হচ্ছিল। (I56ad4)
  • আগে, যেসব ডায়ালগ ফুল স্ক্রিন ড্র করত, সেগুলি ডিসপ্লে কাট-আউট অঞ্চলের মধ্যে ড্র করত না। এই সমস্যার সমাধান করা হয়েছে যাতে decorFitsSystemWindows = false ও usePlatformDefaultWidth = false সহ ডায়ালগ ডিসপ্লে কাট-আউট অঞ্চল নিতে পারে। (I9e975)
  • Compose অ্যাপ ব্যাকগ্রাউন্ডে থাকাকালীন চালু করার পরে TalkBack-এর সবুজ ফোকাস ইন্ডিকেটর ড্র না করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ifd12a)

ভার্সন 1.9.0-alpha03

২০ মে, ২০২৫

androidx.compose.ui:ui-*:1.9.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha03-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled ফ্ল্যাগটি এমনভাবে কাজ করে যে ComposeView-এ ফোকাস করার মতো কিছু না থাকলে, এটি rect-কে Empty ভ্যালু হিসেবে সেট করে। এটি ফোকাস সার্চকে ফোকাস করার জন্য ভিউ বেছে নিতে বাধা দেয়। এটি বিশেষত সেইসব ক্ষেত্রে গুরুত্বপূর্ণ যেখানে IME-তে 'পরবর্তী' বিকল্প থাকে এবং এটি 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 ও কম্প্যানিয়ন API চালু করা হয়েছে। এছাড়াও, সাধারণ স্ক্রল এক্সটেনশন ফাংশন চালু করা হয়েছে। (Ic61c8, b/214410040)
  • Compose 64-বিট কালার ভ্যালু সরাসরি Android ColorLongs-এর সাথে তুলনা করা যায় না কারণ কিছু কালার স্পেসের জন্য কালার স্পেস আইডি ক্রমবহির্ভূত। Android কালার স্পেসে কনভার্ট করতে এবং তা থেকে কনভার্ট করার জন্য, দুটি নতুন API যোগ করা হয়েছে: toColorLong() এবং fromColorLong(). (I36899)
  • কম বাউন্ড ফ্লিং ভেলোসিটি কন্ট্রোল করার অনুমতি দিতে ViewConfiguration.minimumFlingVelocity যোগ করা হয়েছে। (I11aab)

ভার্সন 1.9.0-alpha02

৭ মে, ২০২৫

androidx.compose.ui:ui-*:1.9.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha02-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • dialogContentTitle থেকে DialogProperties পর্যন্ত যোগ করুন, যা কন্টেন্ট উইন্ডোর শীর্ষক সেট করে। bf9d670

সমস্যার সমাধান

  • ইন্টার্নাল টেস্ট ঠিক করার সময় উইন্ডো ইনসেট রুলার সাময়িকভাবে বন্ধ করা হয়েছে। 8d1402
  • DragGestureNode-এ VelocityTracker-এ কীভাবে পয়েন্টার ইনপুট পরিবর্তন যোগ করা হয় তা ঠিক করা হয়েছে, এটি নতুন ফ্ল্যাগ isAdjustPointerInputChangeOffsetForVelocityTrackerEnabled দিয়ে কন্ট্রোল করা যায়।254ddb

ভার্সন 1.9.0-alpha01

২৩ এপ্রিল, ২০২৫

androidx.compose.ui:ui-*:1.9.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.9.0-alpha01-এ এইসব কমিট রয়েছে।

আচরণে পরিবর্তন

  • Compose-এর সাথে শিপ করা লিন্ট চেকের জন্য এখন ন্যূনতম AGP ভার্সন 8.8.2 প্রয়োজন। আপনি AGP আপগ্রেড করতে না পারলে, তার পরিবর্তে আপনার gradle.properties-এ android.experimental.lint.version=8.8.2 (বা এর পরের যেকোনও ভার্সন) ব্যবহার করে Lint-কে আলাদাভাবে আপগ্রেড করতে পারবেন। IDE-এর মধ্যে Compose লিন্ট চেক রান করাতে, Android Studio Ladybug বা এর পরের যেকোনও ভার্সন প্রয়োজন।

API-তে পরিবর্তন

  • হিট পাথ ট্র্যাকারের (ডিবাগ) জন্য ট্রেস স্টেটমেন্ট চালু করতে ফ্ল্যাগ সরিয়ে দেয়। (I1b2a1)
  • InnerRectRulers ও OuterRectRules-কে পদ্ধতি হিসেবে পরিবর্তন করা হয়েছে। RectRulers পাবলিক API থেকে নাম প্যারামিটার সরিয়ে দেওয়া হয়েছে। DerivedRulers এখন ভার্টিক্যাল ও হরাইজন্টাল রুলারের জন্য কনস্ট্রাক্টর বিকল্প। ইনস্ট্যান্স তৈরি করার জন্য MergedHorizontalRulers ও MergedVerticalRulers পদ্ধতিকে minOf ও maxOf পদ্ধতি দিয়ে প্রতিস্থাপন করা হয়েছে। (Iee89f, b/408192133)
  • androidx.savedstate.compose.LocalSavedStateRegistryOwner-এর পরিবর্তে androidx.compose.ui.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 ব্যবহার করুন। রিপ্লেসমেন্ট API একই হ্যাশকে আরও বেশি বিট দিয়ে এনকোড করে, যা কম্পোজিশন হায়ারার্কিতে দুটি র‍্যান্ডম অসংশ্লিষ্ট গ্রুপের একই হ্যাশ কী থাকার সম্ভাবনাকে অনেক কমিয়ে দেয়। (I4cb6a, b/177562901)
  • Kotlin 2.0-এর সাথে রিলিজ করা প্রোজেক্ট ব্যবহার করার জন্য KGP 2.0.0 বা এর পরের যেকোনও ভার্সন প্রয়োজন (Idb6b5)
  • কম্পোজিশনের মধ্যে এটি যাতে মনে রাখা হয় তা নিশ্চিত করতে FocusRequester-এর জন্য লিন্ট চেক সাপোর্ট যোগ করা হয়েছে (I6bf91)
  • Added the ability to set preferred frame rate or frame rate category on the Composable should be rendered at (Ie5201)
  • Android-এ নেটিভ MotionEvent এক্সপোজ করুন। (I17286)
  • getChecked() + setChecked(int) যোগ করুন, isChecked + setChecked(boolean) সরিয়ে দিন (Iaac9d)
  • graphicsLayer মডিফায়ারে এখন blendMode ও colorFilter (Iab0e6) ব্যবহার করা যায়
  • কোয়েরি রিসোর্সের জন্য LocalResources কম্পোজিশন লোকাল যোগ করা হয়েছে। কনফিগারেশনে পরিবর্তন হলে LocalResources.current আবার কম্পোজ করবে, তাই stringResource()-এর মতো API-তে কল করলে আপডেট করা ভ্যালু রিটার্ন করবে। (I50c13, b/274786917)
  • ইনডাইরেক্ট টাচ ইভেন্ট (Icff57) হ্যান্ডেল করার জন্য কম্পোজ করার উপযুক্ত আইটেমের জন্য এক্সপেরিমেন্টাল API এক্সপোজ করা
  • এই রিলিজে আপনার কম্পোজ করা যায় এমন কন্টেন্টের লেআউট ও ড্র করার সময় আনহ্যান্ডেলড ব্যতিক্রমের রিপোর্টিং উন্নত করা হয়েছে। আগে, এখানে কোনও আনকড ব্যতিক্রম হলে, টেস্ট রানার ক্র্যাশ হয়ে যেত এবং টেস্ট স্যুটটি অসম্পূর্ণ থেকে যেত। টেস্ট স্যুট শেষ না করেই এখন এই ব্যতিক্রমগুলি আরও সহজে রিপোর্ট করা যাবে। (I9928b, b/314128080)
  • পরীক্ষামূলক GlobalAssertions API বাতিল করা হয়েছে। এর উদ্দেশ্য ছিল অ্যাক্সেসিবিলিটি চেক চালানো, সেই উদ্দেশ্যে enableAccessibilityChecks() পরিবর্তে এটি দেখুন। (I50aa5)
  • SemanticsNodeInteraction.performTextInputSelection আর পরীক্ষামূলক নয় এবং এখন এটি অতিরিক্ত relativeToOriginal প্যারামিটার ব্যবহার করে যা আপনাকে মূল অপরিবর্তিত টেক্সট বা পরিবর্তিত টেক্সটে বেছে নেওয়া অংশ প্রয়োগ করতে দেয়। (I3a905, b/261561038, b/277018945)
  • AnnotatedString-এর মাধ্যমে কাস্টম বুলেট তালিকা তৈরি করার জন্য API চালু করা হয়েছে (I1d066, b/383269496, b/139326648)
  • runWithMeasurementDisabled-এর পরিবর্তে runWithTimingDisabled-কে বাতিল করুন, যা আচরণকে আরও স্পষ্টভাবে বর্ণনা করে - সমস্ত মেট্রিক পজ করা আছে। এছাড়াও, MicrobenchmarkScope সুপারক্লাস এক্সপোজ করুন, কারণ runWithMeasurementDisabled ফাংশনটি ইনলাইন হওয়ার কারণে ওপেন অ্যাক্সেস হিসেবে আবার ঘোষণা করা সম্ভব নয়। (I9e23b, b/389149423, b/149979716)
  • নতুন ডিভাইস যোগ করতে ui-tooling Devices API আপডেট করা হয়েছে। (Ia2ac1)
  • ডেভেলপারকে বড় উইন্ডো (Ia1976) বিবেচনা করতে সাহায্য করার জন্য প্রিভিউ স্ক্রিন সাইজের সংগ্রহে ট্যাবলেট পোর্ট্রেট যোগ করুন
  • নির্দিষ্ট সময়ে ভ্যালু সহ ট্রেস চিহ্নিত/লগ করার জন্য ট্রেস ভ্যালু API চালু করা। ট্রেস ভ্যালু Prefetto-তে নতুন লেন হিসেবে দেখা যায় যা ট্রেসের টাইমলাইনের মাধ্যমে দেখা যায়। Android-এ Trace.setCounter ব্যবহার করে এগুলি প্রয়োগ করা হয়। (Idcf48)

সমস্যার সমাধান

  • একই অ্যাপ্লাইয়ে মনে রাখা/ভুলে যাওয়া ডিসপ্যাচ করা এড়াতে পজেবল কম্পোজিশনে মনে রাখা অবজ়ার্ভার ডিসপ্যাচ করার সমস্যা সমাধান করুন (I570b2, b/404645679, b/407931790)
  • decorFitsSystemWindows false হলে (I7922f, b/246909281) android:dialogTheme এখন ডায়ালগ প্রপার্টি কন্ট্রোল করার জন্য সেট করা যেতে পারে
  • ডায়লগের বাইরে কোনও মোশন ইভেন্ট ধরা পড়লে ডায়লগ বাতিল হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ia78fd)
  • Compose লিন্ট চেকের জন্য এখন কমান্ড লাইন থেকে ন্যূনতম AGP ভার্সন 8.8.2 এবং IDE সহায়তার জন্য অন্তত Android Studio Ladybug প্রয়োজন। আপনি AGP-র পুরনো ভার্সন ব্যবহার করলে, AGP-তে কোনও প্রভাব না ফেলেই Lint ভার্সন আপগ্রেড করতে, gradle.properties-এ android.experimental.lint.version=8.8.2 সেট করতে পারবেন। (I6f2a8)
  • আউটপুট ট্রান্সফর্মেশন প্রয়োগ করার আগে textfield-এর ভ্যালু ক্যাপচার করে এমন একটি নতুন সিম্যান্টিক্স প্রপার্টি InputText যোগ করা হয়েছে। (Iae46a, b/395911609, b/176949051)
  • enableAccessibilityChecks() API সরিয়ে দেওয়া হয়েছে যা Android-এর জন্য অ্যাক্সেসিবিলিটি চেক চালু করে। এটি আলাদা প্যাকেজে আছে যা compose:ui:ui-test-accessibility যদি আপনি TestRule ব্যবহার না করেন এবং TestRule-এ কল করার সময় compose:ui:ui-test-junit4-accessibility (I3c318, b/391560768)
  • LaunchedEffect ও rememberCoroutineScope-এ কম্পোজ স্ট্যাক ট্রেসের জন্য সহায়তা যোগ করা হয়েছে (I705c0, b/354163858)

এক্সটার্নাল কন্ট্রিবিউশন

  • সাসপেন্ড ব্লক গ্রহণ করার জন্য পরীক্ষামূলক runComposeUiTest ফাংশন পরিবর্তন করা। এছাড়াও, বাইনারি মানানসই হওয়ার জন্য একটি অপ্রচলিত ফাংশন runComposeUiTest যোগ করা হয়েছে (I3b88c, b/361577328)

ভার্সন ১.৮

ভার্সন 1.8.3

১৮ জুন, ২০২৫

androidx.compose.ui:ui-*:1.8.3 রিলিজ করা হয়েছে। ভার্সন 1.8.3-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ফিচারটি সম্পূর্ণ যাচাই করা হয়ে যাওয়ার পরে isGetFocusedRectReturnEmptyEnabled-এর জন্য ফ্ল্যাগ সরিয়ে দেওয়া হয়েছে। (Ife722)
  • ComposeUiFlags.isGetFocusedRectReturnEmptyEnabled ফ্ল্যাগটি এমনভাবে কাজ করে যে ComposeView-এ ফোকাস করার মতো কিছু না থাকলে, এটি rect-কে Empty ভ্যালু হিসেবে সেট করে। এটি ফোকাস সার্চকে ফোকাস করার জন্য ভিউ বেছে নিতে বাধা দেয়। এটি বিশেষত সেইসব ক্ষেত্রে গুরুত্বপূর্ণ যেখানে IME-তে 'পরবর্তী' বিকল্প থাকে এবং এটি ComposeView-এ ফোকাস করার চেষ্টা করতে পারে requestFocus() এবং ব্যর্থ হয়। (Ibd0e2, b/369256395)

ভার্সন 1.8.2

২০ মে, ২০২৫

androidx.compose.ui:ui-*:1.8.2 রিলিজ করা হয়েছে। ভার্সন 1.8.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ডায়ালগে অ্যাক্টিভ ইভেন্ট স্ট্রিম চলাকালীন ডায়ালগ সরিয়ে দেওয়া হলে NPE সংক্রান্ত সমস্যার সমাধান করা হয় (6a7e7f)
  • ড্র-অনলি আপডেট হলে, থ্রটল করা টাইমলাইন অনুযায়ী onLayoutRectChange আপডেট না হওয়া সংক্রান্ত সমস্যার সমাধান করুন। (03b82d)

ভার্সন 1.8.1

৭ মে, ২০২৫

androidx.compose.ui:ui-*:1.8.1 রিলিজ করা হয়েছে। ভার্সন 1.8.1-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • onLayoutRectChanged ও LazyLayout d791b11 সংক্রান্ত কিছু সমস্যার সমাধান করা
  • প্রিকম্পোজ করা আইটেমের জন্য আবার মাপ নেওয়ার অনুরোধ এড়িয়ে যান। এই বাগটি লেজি লেআউটের স্ক্রল করার পারফর্ম্যান্সকে প্রভাবিত করেছে কারণ কিছু ক্ষেত্রে প্রিফেচিং দক্ষতার সাথে কাজ করছিল না, ফ্রেমের মধ্যে পরিমাপ করা হচ্ছিল। 742087a

ভার্সন 1.8.0

২৩ এপ্রিল, ২০২৫

androidx.compose.ui:ui-*:1.8.0 রিলিজ করা হয়েছে। 1.8.0 ভার্সনে এইসব কমিট রয়েছে।

1.7.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • Compose 1.8-এ নতুন যোগ করা সিমান্টিক অটোফিলের সুবিধা আছে। আপনি যে UI এবং Foundation ভার্সন ব্যবহার করছেন সেটি যেন 1.8 বা তার পরের যেকোনও ভার্সন হয়, কারণ টেক্সট কম্পোনেন্টের জন্য অটোফিল ফিচারের জন্য দুটি মডিউলের লেটেস্ট ভার্সন প্রয়োজন। API ব্যবহার ও উদাহরণ সম্পর্কে আরও জানতে, এখানে গিয়ে অটোফিল ডকুমেন্টেশন দেখুন।
  • Compose 1.8-এ হ্যাপ্টিক ফিডব্যাকের অতিরিক্ত ধরন কাজ করে: Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. এটি LocalHapticFeedback-এর মাধ্যমে অ্যাক্সেস করা যায় এবং Android-এ, Vibrator API থেকে হ্যাপটিক ফিডব্যাক কাজ করে বলে জানালে, এটি ডিফল্ট হিসেবে উপলভ্য থাকে।
  • একাধিক Focus API এখন স্টেবল, এর মধ্যে Modifier.focusRestorer() এবং onEnter এবং onExit FocusProperties (I6e667) অন্তর্ভুক্ত। requestFocus-এ কল করার সময় আপনি এখন FocusDirection উল্লেখ করতে পারবেন। নির্দিষ্ট দিকে ফোকাস করার অনুমতি দিতে আমরা focusRequester এবং FocusTargetModifierNode দু'টিতেই একটি requestFocus(FocusDirection) API যোগ করেছি। (I5d9ec][https://android-review.googlesource.com/#/q/I5d9eca3a2cd283c1b84ad6b77d929ef9a49ce4cc], b/245755256)

ভার্সন 1.8.0-rc03

৯ এপ্রিল, ২০২৫

androidx.compose.ui:ui-*:1.8.0-rc03 রিলিজ করা হয়েছে। 1.8.0-rc03 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

ভার্সন 1.8.0-rc02

২৬ মার্চ, ২০২৫

androidx.compose.ui:ui-*:1.8.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.8.0-rc02-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Compose হায়ারার্কিতে এম্বেড করা ফোকাসড ভিউ, lazylist থেকে সরিয়ে দিলে, রিয়েন্ট্রি কম্পোজিশন হওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। (765562)

ভার্সন 1.8.0-rc01

১২ মার্চ, ২০২৫

androidx.compose.ui:ui-*:1.8.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.8.0-rc01-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • সফ্ট কীবোর্ড চালু থাকা অবস্থায় ফোকাস করা AndroidView সরিয়ে দিলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। (Ic725a)
  • নতুন ফোকাস স্টেট ম্যানেজমেন্ট প্রয়োগে কিছু সমস্যার সমাধান করা হয়েছে। (b/395895685)
  • LaunchedEffect ব্যবহার করে টেক্সট ফিল্ডে ফোকাস করার অনুরোধ করলে, অটোফিল ব্লক করা সংক্রান্ত সমস্যার সমাধান করে। (b/392539099)

ভার্সন 1.8.0-beta03

২৬ ফেব্রুয়ারি, ২০২৫

androidx.compose.ui:ui-*:1.8.0-beta03 রিলিজ করা হয়েছে। 1.8.0-beta03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • enableAccessibilityChecks() API সরানো হয়েছে যা Android-এর জন্য অ্যাক্সেসিবিলিটি চেক চালু করে। এগুলি আলাদা প্যাকেজে আছে যা compose:ui:ui-test-accessibility আপনি TestRule ব্যবহার না করলে এবং compose:ui:ui-test-junit4-accessibility TestRule-এ কল করলে (I547ef, b/391560768)
  • আউটপুট ট্রান্সফর্মেশন প্রয়োগ করার আগে টেক্সটফিল্ডের ভ্যালু ক্যাপচার করে এমন একটি নতুন সিম্যান্টিক্স প্রপার্টি InputText যোগ করা হয়েছে। (Iae46a)

সমস্যার সমাধান

  • ইনপুট টেক্সটের পরিবর্তে আউটপুট ট্রান্সফর্ম করা টেক্সট সেভ করার কারণে অটোফিল পরিষেবাতে হওয়া সমস্যার সমাধান করা হয়েছে। (Iae46a, b/395911609, b/176949051)

ভার্সন 1.8.0-beta02

১২ ফেব্রুয়ারি, ২০২৫

androidx.compose.ui:ui-*:1.8.0-beta02 রিলিজ করা হয়েছে। 1.8.0-beta02 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • Configuration#screenWidth/heightDp-এ কল করা থেকে সতর্ক করতে একটি লিন্ট চেক যোগ করা হয়েছে - বর্তমান উইন্ডোর সাইজ পুনরুদ্ধার করতে LocalWindowInfo.current.containerSize ব্যবহার করা যেতে পারে।

ভার্সন 1.8.0-beta01

২৯ জানুয়ারি, ২০২৫

androidx.compose.ui:ui-*:1.8.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.8.0-beta01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ContextualFlowRow ও ContextualFlowColumn বন্ধ করা হয়েছে হিসেবে চিহ্নিত করা হয়েছে। এই পরীক্ষামূলক কম্পোনেন্টটি 1.7 ভার্সনে চালু করা হয়েছিল এবং এখনও স্থিতিশীল হয়নি এবং এর প্রয়োগকে অবাঞ্ছিত বলে মনে করা হয়েছে। ভবিষ্যতে, এই কম্পোনেন্টটি যে সমস্যার সমাধান করার জন্য তৈরি করা হয়েছে, সেই সমস্যার সমাধানকারী কম্পোনেন্ট প্রদান করা হতে পারে।
    • FlowRow ও FlowColumn-এ 1.7-এ চালু করা এক্সপেরিমেন্টাল ওভারলোড আছে যার মধ্যে overflow প্যারামিটার অন্তর্ভুক্ত। এই প্যারামিটারের ব্যবহার বাতিল করা হয়েছে এবং এর পরিবর্তে এই প্যারামিটার ছাড়া ওভারলোড ব্যবহার করা যেতে পারে। এইসব ওভারলোডের জন্য ডিফল্ট "ওভারফ্লো" আচরণ হবে "ক্লিপ", কারণ এটি শুরু থেকেই এমন ছিল।
    • ContextualFlowRow-এর অনেক ব্যবহারিক ক্ষেত্রে FlowRow ব্যবহার করা যেতে পারে, তবে আমরা স্বীকার করি যে এটি সম্পূর্ণভাবে সত্য নয়। ContextualFlowRow সম্পূর্ণভাবে ব্যবহারকারীর স্পেসে প্রয়োগ করা যায় এবং চাইলে এর প্রয়োগ কপি করে অ্যাডাপ্ট করা যায়। ভবিষ্যতে, আমরা আশা করি যে এইসব ব্যবহারের ক্ষেত্রে অন্যভাবে সমাধান করতে পারব। (Ibafec)
  • SemanticsNodeInteraction.semanticsId() সরানো হয়েছে৷ পরিবর্তে SemanticsNodeInteraction.fetchSemanticsNode().id ব্যবহার করুন। (Ie397a)
  • পুরনো অটোফিল API আর ব্যবহার করা যাবে না। এর পরিবর্তে নতুন সিম্যান্টিক্স ভিত্তিক API ব্যবহার করুন। (I943ff)
  • requestAutofill API-কে অটোফিল ম্যানেজারের বাইরে রাখার জন্য আবার লেখা। (Id1929)

সমস্যার সমাধান

  • ফোকাস সংক্রান্ত সমস্যার সমাধান করা হয়েছে যেখানে requestFocus()-এর সাথে previouslyFocusedRect প্যারামিটার (ফোকাস ডিরেকশনের সাথে সম্পর্কিত) থাকলে ComposeView এড়িয়ে যাওয়া হত। (Ifdc2f, b/388590015)
  • GraphicsLayer.record { this@ContentDrawScope.drawContent() } ব্যবহার করার সময় মাঝে মধ্যে হওয়া NPE সংক্রান্ত সমস্যা সমাধান করা হয়েছে। আপনি drawContent() এইভাবে রেকর্ড করলে, DrawScope-এর মধ্যে GraphicsLayer#record এক্সটেনশন ফাংশন ব্যবহার করতে ভুলবেন না এবং GraphicsLayer-এর মেম্বার ফাংশন ব্যবহার করবেন না। (I75fc0, b/389046242)
  • অ্যানিমেশনের সময় কখনও কখনও ভুল অনুবাদ হওয়া এলিপসিস সহ টেক্সট লেআউট ঠিক করা, আরও তথ্যের জন্য b/389707025 দেখুন (Ie55b1, b/389707025)

ভার্সন 1.8.0-alpha08

১৫ জানুয়ারি, ২০২৫

androidx.compose.ui:ui-*:1.8.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.8.0-alpha08-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • 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

১১ ডিসেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 1.8.0-alpha07-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • টুলের জন্য LayoutNode থেকে মালিককে এক্সপোজ করা হয়েছে। (I26f7f)
  • LocalAutofillHighlightColor কম্পোজিশনে কালার টাইপ ব্যবহার করা হয়েছে। (I0e05b)
  • পুরনো হয়ে যাওয়া UrlAnnotation এবং এর পদ্ধতিগুলি পরীক্ষামূলক হিসেবে চিহ্নিত করে রাখুন। (Ic0021)

সমস্যার সমাধান

  • BasicText বা টেক্সট কম্পোজ করার মতো (be7605, b/374115892) ফিচারের মধ্যে LinkAnnotation ব্যবহার করার সময় IndexOutOfBoundsException ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে
  • কাস্টম শেপ দিয়ে পূরণ করা টেক্সট ফিল্ডে ইন্ডিকেটর লাইন ক্লিপ না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I4f87f, b/380704151)
  • দীর্ঘ স্ক্রিনশটে ব্যাকগ্রাউন্ড না থাকা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I4d57a)
  • এই লাইব্রেরি এখন JSpecify nullness annotations ব্যবহার করে, যা হল টাইপ-ইউজ। 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

১৩ নভেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha06 রিলিজ করা হয়েছে। 1.8.0-alpha06 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • stylusHoverIcon মডিফায়ার যোগ করে। (Iff20a, b/331289114)
  • অটোফিল ম্যানেজারকে ইন্টারফেস হিসেবে পরিবর্তন করে। (I84914, b/376080755)
  • নির্দিষ্ট দিকে ফোকাস করার অনুমতি দিতে focusRequester ও FocusTargetModifierNode দু'টিতেই requestFocus(FocusDirection) যোগ করে। (I5d9ec, b/245755256)
  • FocusProperties.enter ও FocusProperties.exit-এর পরিবর্তে onEnter ও onExit ব্যবহার করা হয়েছে, এর জন্য FocusDirection প্যারামিটারের পরিবর্তে রিসিভার স্কোপ ব্যবহার করা হয়েছে। (I6e667)
  • টেক্সট টুলবারে অটোফিল সংক্রান্ত সুবিধা যোগ করা হয়েছে। (Ie6a4c)
  • Modifier.focusRestorer() (I99c03)-এ API পরিবর্তন:
    • প্যারামিটারের নাম পরিবর্তন করে 'fallback' করা হয়েছে
    • parameter এখন FocusRequester এবং lambda নয়
    • প্যারামিটার এখন নন-NULL, ডিফল্ট ভ্যালু হিসেবে Default আছে
  • অটোফিল ম্যানেজার ইন্টারফেস থেকে @Experimental অ্যানোটেশন সরানো। এই ফিচারটি এখনও WIP-তে আছে এবং এই রিলিজের জন্য টার্গেট করা হয়েছে, তবে আমরা @Expemiental API (Id8398) চালু করতে চাই না
  • LocalHapticFeedback এখন Vibrator API ইঙ্গিত করলে যে হ্যাপটিক কাজ করে, তখন একটি ডিফল্ট HapticFeedback প্রয়োগ করে। HapticFeedbackType-এ নিম্নলিখিতগুলি যোগ করা হয়েছে - Confirm, ContextClick, GestureEnd, GestureThresholdActivate, Reject, SegmentFrequentTick, SegmentTick, ToggleOn, ToggleOff, VirtualKey. Wear Compose-এর 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

৩০ অক্টোবর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha05 রিলিজ করা হয়েছে। 1.8.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

এই রিলিজে ফিচার ফ্ল্যাগের পিছনে অটোফিল এক্সপোজ করা হয়েছে। আমরা পারফর্ম্যান্স উন্নত করার জন্য কাজ করছি এবং API সম্পর্কে প্রাথমিক মতামত পেলে আমাদের সুবিধা হবে। মতামতের ভিত্তিতে স্থিতিশীল হওয়ার আগে API-তে পরিবর্তন করা হতে পারে।

  • অটোফিল চালু করতে, onCreate-এ ComposeUiFlags.isSemanticAutofillEnabled-কে true হিসেবে সেট করুন এবং লেটেস্ট কম্পোজ স্ন্যাপশট ব্যবহার করুন।
  • অটোফিলের এই ভার্সন, শক্তিশালী পাসওয়ার্ড সাজেস্ট করার মাধ্যমে এবং নেভিগেশনের মাধ্যমে ম্যানুয়ালি ক্রেডেনশিয়াল সেভ করাকে সাপোর্ট করে। এছাড়াও, কোনও অটোফিল করা যায় এমন ফিল্ডে ফোকাস করা হলে বা টেক্সট কম্পোনেন্টে টেক্সট টুলবারের মাধ্যমে অটোফিল ট্রিগার করা হলে, এটি পূরণ করতে সাহায্য করে। অটোফিল সম্পূর্ণ হয়ে গেলে, তা বোঝাতে কম্পোনেন্টটি হাইলাইট করা হবে।

API-তে পরিবর্তন

  • expect/actual স্ট্রাকচার মেনে চলতে অটোফিল ইন্টারফেস পরিবর্তন করুন। (I22dce)
  • CompositionLocal যোগ করা হয়েছে যা অটোফিলের সফলভাবে পূরণ করা হাইলাইটের হিউ পরিবর্তন করতে ব্যবহার করা যেতে পারে। (I32092)
  • Modifier.onRectChanged API যোগ করা হয়েছে, এটি এমন একটি API যা LayoutNode-এর রুট/উইন্ডো/স্ক্রিন-সম্পর্কিত পজিশন ও সাইজে সাবস্ক্রাইব করার অনুমতি দেয়। API, আগে থেকে থাকা onGloballyPositioned মডিফায়ার যেসব ব্যবহারের ক্ষেত্রে কাজ করে, সেইসব ক্ষেত্রে কাজ করে, তবে এটি অনেক কম ওভারহেড সহ কাজ করে এবং API-তে এমন সুবিধা আছে যার মাধ্যমে ব্যবহারকারীর ব্যবহারের ক্ষেত্রে যা প্রয়োজন সেই অনুযায়ী কলব্যাক ডিবাউন্স ও থ্রটল করা যায়। (Id28c7, b/372765423, b/372757007, b/372994338)
  • commit() এবং cancel() API অন্তর্ভুক্ত করার জন্য অটোফিল ম্যানেজারকে প্রসারিত করে যা ব্যবহারকারীদের নতুন করে লেখা ক্রেডেনশিয়াল সেভ করতে সাহায্য করে। (I2da00)
  • ব্যবহারকারীর অটোফিল জার্নি ফাইন-টিউন করার জন্য ব্যবহার করা যেতে পারে এমন নতুন AutofillManager ইন্টারফেস এবং অটোফিলের এই নতুন ভার্সন চালু করার জন্য isSemanticAutofillEnabled ফ্ল্যাগ নিয়ে আসে। (I9d484)
  • Modifier.onRectChanged API যোগ করা হয়েছে, এটি এমন একটি API যা কোনও LayoutNode-এর রুট/উইন্ডো/স্ক্রিন-সম্পর্কিত পজিশন ও সাইজে সাবস্ক্রাইব করার অনুমতি দেয়। API, আগে থেকে থাকা onGloballyPositioned মডিফায়ার যেসব ব্যবহারের ক্ষেত্রে কাজ করে, সেইসব ক্ষেত্রে কাজ করে, তবে এটি অনেক কম ওভারহেড সহ কাজ করে এবং 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-কে false হিসেবে সেট করতে বাধ্য করে না। (Ibc94, b/364492593)
  • উইন্ডোর মধ্যে লেয়ার সরানো হলে (যেমন, ডায়ালগ ও মূল কন্টেন্ট) ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে (I675ba, b/330955281)

ভার্সন 1.8.0-alpha04

১৬ অক্টোবর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.8.0-alpha04-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • DelegatableNode#onDensityChange ও DelegatableNode#onLayoutDirectionChange কলব্যাক যোগ করে, এগুলি পরিবর্তন হলে নোড স্টেট আপডেট করার অনুমতি দেয় (I04f3e, 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 সম্পূর্ণ ওভারল্যাপ করা প্যারাগ্রাফের অনুমতি দেয়, যেগুলি একসাথে মার্জ করা হবে এবং নেস্ট করা প্যারাগ্রাফের ক্ষেত্রে বাইরের প্যারাগ্রাফটি ভেতরের প্যারাগ্রাফের সীমানায় স্প্লিট করা হবে এবং ভেতরের প্যারাগ্রাফের স্টাইলটি বাইরের প্যারাগ্রাফের স্টাইলের সাথে মার্জ করা হবে (Ic9554)
  • শূন্য দৈর্ঘ্যের LinkAnnotation সহ AnnotatedString-এ ক্র্যাশ হওয়া সংক্রান্ত সমস্যার সমাধান করুন। (89aac6)

ভার্সন 1.8.0-alpha03

২ অক্টোবর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha03 রিলিজ করা হয়েছে। 1.8.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Kotlin ভার্সন 1.9-এ আপডেট করা হয়েছে (I1a14c)
  • a11y পরিষেবার জন্য পেজারে তালিকার আচরণ এমুলেট করতে, ক্যারোজেল নামে একটি নতুন সিম্যান্টিক রোল চালু করা হয়েছে। (Id354b, b/354109776, b/239672673)
  • invisibleToUser()-এর নাম পরিবর্তন করে hideFromAccessibility করুন। এর ফাংশন একই থাকে। আরও বিবরণের জন্য ডকুমেন্টেশন দেখুন। (Ib43a3)

সমস্যার সমাধান

  • SensitiveContent মডিফায়ারের (Ib0442) জন্য ডকুমেন্ট আপডেট করা হচ্ছে
  • কিছু Android ভার্সনে এলিভেশন শ্যাডোর সাথে নির্দিষ্ট কিছু সাধারণ আউটলাইন ক্লিপ উপেক্ষা করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে
  • নির্দিষ্ট Android ভার্সনে জেনেরিক আউটলাইন ক্লিপ নির্দিষ্ট করা থাকলে খালি ক্লিপ প্রয়োগ করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
  • এক্সটার্নাল ভিউতে IME অ্যাক্টিভ থাকলে এবং ComposeView-এ ফোকাস এন্টার করার জন্য 'পরবর্তী' অ্যাকশন ব্যবহার করা হলে, ব্যতিক্রম সংক্রান্ত সমস্যার সমাধান করা হয়েছে। clearFocus()-এর আচরণ API < 28-এ ভিউয়ের আচরণের সাথে সামঞ্জস্যপূর্ণ, যেখানে clearFocus()-এর কারণে ডিফল্ট ভিউ ফোকাস করা হতে পারে।
  • LazyList-এ আলাদা লেআউট পাসের জন্য সাবকম্পোজিশনের ম্যানেজমেন্ট আলাদা করার মাধ্যমে বিচ্ছিন্ন নোডে প্লেসমেন্ট হওয়ার সমস্যা সমাধান করা হয়েছে।
  • TextField থেকে EditText বা অন্য কোনও ভিউ ভিত্তিক এডিটরে ফোকাস পরিবর্তন করার সময় সফ্টওয়্যার কীবোর্ড ফ্লিকার করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
  • নেস্টেড স্ক্রল নোড এখন আলাদা হয়ে যাওয়ার পরে সঠিকভাবে onPostFling ইভেন্ট ডিসপ্যাচ করবে।
  • সামগ্রিক পারফর্ম্যান্সের উন্নতি

ভার্সন 1.8.0-alpha02

১৮ সেপ্টেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha02 রিলিজ করা হয়েছে। 1.8.0-alpha02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • TextOverflow.StartEllipsis ও TextOverflow.MiddleEllipsis এখন উপলভ্য, যা সিঙ্গেল লাইন টেক্সটের লাইনের শুরুতে বা মাঝে উপবৃত্ত বসাতে দেয়। (I38913, b/185418980)

সমস্যার সমাধান

  • Fix Dalog dismissOnClickoutside (39a3d, b/364508685)
  • ডায়ালগ কন্টেন্টের শ্যাডো ক্লিপ করবেন না (e8e2f, b/363027803)
  • Compose ও View-এর মধ্যে ফোকাস সার্চ সরানোর সময় হওয়া ভুল আচরণ সংক্রান্ত সমস্যার সমাধান করা (58377, b/350534714)

এক্সটার্নাল কন্ট্রিবিউশন

  • AlignmentLines Map এখন VerticalAlignmentLine বা HorizontalAlignmentLine কনক্রিট ধরনের ডেটা গ্রহণ করে। (I02912)
  • নতুন সাধারণ ByteArray.decodeToImageBitmap(): ImageBitmap পদ্ধতি। (I83c21)

ভার্সন 1.8.0-alpha01

৪ সেপ্টেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.8.0-alpha01 রিলিজ করা হয়েছে। 1.8.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.7

ভার্সন 1.7.8

১২ ফেব্রুয়ারি, ২০২৫

androidx.compose.ui:ui-*:1.7.8 রিলিজ করা হয়েছে। ভার্সন 1.7.8-এ এইসব কমিট রয়েছে।

ভার্সন 1.7.7

২৯ জানুয়ারি, ২০২৫

androidx.compose.ui:ui-*:1.7.7 রিলিজ করা হয়েছে। ভার্সন 1.7.7-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Text composable-এ LinkAnnotation সহ AnnotatedString পাস করার সময় IndexOutOfBoundsException সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ic96d2)
  • AnnotatedString-এ LinkAnnotation ব্যবহার করা হলে, কিছু বিরল ক্ষেত্রে টেস্টে টাইম-আউট সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I04a03)

ভার্সন 1.7.6

১১ ডিসেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.7.6 রিলিজ করা হয়েছে। ভার্সন 1.7.6-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ফোকাস সিস্টেমে যখন পেন্ডিং ইনভ্যালিডেশন থাকত, তখন আমরা কোনও গুরুত্বপূর্ণ ইভেন্ট দেখতে পেলে আগে একটি সমস্যা দেখাতাম। আমরা এখন এর পরিবর্তে একটি সমস্যা লগ করি (I7ea0, b/346370327)।
  • SemanticsPropertyReceiver.invisibleToUser() থেকে পরীক্ষামূলক অ্যানোটেশন সরানো হয়েছে। SemanticsPropertyReceiver.hideFromAccessibility()-এর সাথে পরিবর্তন করার জন্য এটি 1.8-এ বন্ধ করা হবে। (I448f0, b/376479686)
  • নির্দিষ্ট কিছু পুরনো Sony ডিভাইসে POBox জাপানি কীবোর্ড ব্যবহার করার সময় TextField সঠিকভাবে কাজ করতে না পারার সমস্যার সমাধান করা হয়েছে। (I94e0e, b/373743376)
  • অ্যাক্সেসিবিলিটি সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে যেখানে TalkBack, BasicText-এর inlineContent ঘোষণা করেনি। (I67bcb, b/376479686)

ভার্সন 1.7.5

৩০ অক্টোবর, ২০২৪

androidx.compose.ui:ui-*:1.7.5 রিলিজ করা হয়েছে। ভার্সন 1.7.5-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • কাস্টম আউটলাইনের সাথে এলিভেশন ও ক্লিপিং সঠিকভাবে রেন্ডার না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে।
  • জিরো-উইথ LinkAnnotation-এর কারণে টেক্সট ক্র্যাশ হওয়ার সমস্যা সমাধান করে। (Ic1e2e)
  • ক্লিক করা যায় এমন টেক্সট কম্পোজ করার উপযুক্ত হিসেবে তৈরি করা হলে, Talkback-এ বোতামের ঘোষণা সংক্রান্ত সমস্যার সমাধান করে। (I1f588)

ভার্সন 1.7.4

১৬ অক্টোবর, ২০২৪

androidx.compose.ui:ui-*:1.7.4 রিলিজ করা হয়েছে। ভার্সন 1.7.4-এ এইসব কমিট রয়েছে।

ভার্সন 1.7.3

২ অক্টোবর, ২০২৪

androidx.compose.ui:ui-*:1.7.3 রিলিজ করা হয়েছে। ভার্সন 1.7.3-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • নির্দিষ্ট Android ভার্সনে, সাধারণ আউটলাইন ক্লিপ নির্দিষ্ট করলে ক্লিপের সীমানা খালি থাকার সমস্যা সমাধান করা হয়েছে।
  • এক্সটার্নাল ভিউতে IME অ্যাক্টিভ থাকলে এবং ComposeView-এ ফোকাস এন্টার করার জন্য 'পরবর্তী' অ্যাকশন ব্যবহার করা হলে, ব্যতিক্রম সংক্রান্ত সমস্যার সমাধান করা হয়েছে। clearFocus()-এর আচরণ API < 28-এ ভিউয়ের আচরণের সাথে সামঞ্জস্যপূর্ণ, যেখানে clearFocus()-এর কারণে ডিফল্ট ভিউ ফোকাস করা হতে পারে।
  • লুকঅহেড বাতিল করার জন্য ভুল placeOrder ব্যবহার করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এর ফলে, লুকঅহেড প্লেসমেন্ট এড়িয়ে যাওয়া সংক্রান্ত এজ কেস সমাধান করা হয়েছে।

ভার্সন 1.7.2

১৮ সেপ্টেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.7.2 রিলিজ করা হয়েছে। ভার্সন 1.7.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • অ্যাক্সেসিবিলিটি নোড সংক্রান্ত তথ্য ও সিম্যান্টিক ইভেন্টের পারফর্ম্যান্স উন্নত করা হয়েছে। এর জন্য ভার্বোজ ট্রেসিং সরিয়ে দেওয়া হয়েছে। (I89156, b/362530618)
  • অত্যন্ত বড় পরিমাপের সাইজ (da5db, b/347036173) পাস করা হলে ComposeView আর ক্র্যাশ করবে না
  • অ্যাক্সেসিবিলিটি স্ক্রিনরিডার সংক্রান্ত একটি সমস্যার সমাধান করা হয়েছে যেখানে বোতামে LiveRegion ঘোষণা করা হয়নি। (f66fa7, b/348590026)

ভার্সন 1.7.1

১০ সেপ্টেম্বর, ২০২৪

  • Android আর্টিফ্যাক্টে কোনও পরিবর্তন করা হয়নি। -desktop আর্টিফ্যাক্ট সরিয়ে দেওয়া হয়েছে এবং -jvmStubs ও -linuxx64Stubs আর্টিফ্যাক্ট যোগ করা হয়েছে। এইসব টার্গেটের কোনওটিই ব্যবহার করার জন্য নয়, Jetbrains Compose-এর প্রচেষ্টায় সাহায্য করার জন্য এগুলি প্লেসহোল্ডার হিসেবে ব্যবহার করা হয়।

ভার্সন 1.7.0

৪ সেপ্টেম্বর, ২০২৪

androidx.compose.ui:ui-*:1.7.0 রিলিজ করা হয়েছে।

1.6.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

1.7.0 ভার্সনে হওয়া গুরুত্বপূর্ণ পরিবর্তনগুলি এই ব্লগপোস্টে উল্লেখ করা হয়েছে।

ভার্সন 1.7.0-rc01

২১ আগস্ট, ২০২৪

androidx.compose.ui:ui-*:1.7.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-rc01-এ এইসব কমিট রয়েছে।

উল্লেখযোগ্য পরিবর্তন

  • ui:ui মডিউল এখন foundation:foundation-এর ন্যূনতম ভার্সন 1.7.0-rc01 বা তার পরের যেকোনও ভার্সন হতে হবে। NestedScrollSource পরিবর্তন যা 1.7.0-alpha01 চলাকালীন আগে ঘটেছিল, সেই সংক্রান্ত UI এবং ফাউন্ডেশনের মধ্যে আচরণগত অসামঞ্জস্যের সমাধান করার জন্য এটি প্রয়োগ করা হয়।

ভার্সন 1.7.0-beta07

৭ আগস্ট, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta07 রিলিজ করা হয়েছে। 1.7.0-beta07 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • টেক্সট ইনপুট সংক্রান্ত SemanticsNodeInteraction ফাংশন performTextReplacement, performTextInput ও performTextClearance এখন শুধু রিড-অনলি TextFields-এ কল করা হলে অ্যাসার্শন এরর দেখাবে। (I4ae8f)

ভার্সন 1.7.0-beta06

২৪ জুলাই, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta06 রিলিজ করা হয়েছে। 1.7.0-beta06 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.7.0-beta05

১০ জুলাই, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta05 রিলিজ করা হয়েছে। ভার্সন 1.7.0-beta05-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • একটি সমস্যার সমাধান করা হয়েছে যেখানে সফ্টওয়্যার কীবোর্ড পরিবর্তন করলে, ফোকাস না হারানো এবং ফিরে না পাওয়া পর্যন্ত TextField নতুন কীবোর্ড থেকে ইনপুট গ্রহণ করত না।
  • SurfaceView কন্টেন্ট রেন্ডার করার সময় লেয়ার কন্টেন্ট সেভ করার চেষ্টা করলে অপ্রত্যাশিত পার্শ্বপ্রতিক্রিয়া হওয়ার সমস্যা সমাধান করা হয়েছে।

ভার্সন 1.7.0-beta04

২৬ জুন, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta04 রিলিজ করা হয়েছে। 1.7.0-beta04 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • খুব বড় টেক্সট লাইন (যেমন, ১০ হাজার অক্ষর) পরিমাপ করার সময় ক্র্যাশ হওয়া এড়ানো (8157ab)
  • GraphicsLayer API-এর জন্য সফ্টওয়্যার রেন্ডারিং সংক্রান্ত সহায়তা বন্ধ করুন। (35ddd8)
  • লেয়ার পারসিস্টেন্স লজিকে ক্র্যাশ সংক্রান্ত সমস্যার সমাধান। (70b13e)
  • লেয়ার অবজেক্টের অপ্টিমাইজেশন আবার আগের অবস্থায় ফিরিয়ে আনা হয়েছে, কারণ এর ফলে রেন্ডারিং সংক্রান্ত সমস্যা হচ্ছিল। (70b13e)

ভার্সন 1.7.0-beta03

১২ জুন, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta03 রিলিজ করা হয়েছে। 1.7.0-beta03 ভার্সনে এইসব কমিট আছে।

ভার্সন 1.7.0-beta02

২৯ মে, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta02 রিলিজ করা হয়েছে। ভার্সন 1.7.0-beta02-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • SemanticsProperties.Editable-এর নাম পরিবর্তন করে IsEditable করা হয়েছে এবং SemanticsPropertyReceiver.editable-এর মান পরিবর্তন করে isEditable করা হয়েছে। প্রপার্টি এখন একটি বুলিয়ান এবং সবসময় টেক্সট ফিল্ডের মাধ্যমে নির্দিষ্ট করা হয়। (I8acd8)
  • অ্যাক্সেসিবিলিটি বেঞ্চমার্ক প্যারামিটারের নাম পরিবর্তন করুন। (I3d440)
  • লিঙ্ক স্টাইল করার জন্য আপডেট করা API: TextLinkStyles এখন LinkAnnotation কনস্ট্রাক্টর ও AnnotatedString.fromHtml পদ্ধতির (I90b2b) অংশ। এছাড়াও, মেটেরিয়াল (I5477b) থেকে TextDefaults সরিয়ে দেওয়া হয়েছে

সমস্যার সমাধান

  • এর উদ্দেশ্য আরও ভালোভাবে বোঝাতে LayoutCoordinates.introducesFrameOfReference-এর নাম পরিবর্তন করে LayoutCoordinates.introducesMotionFrameOfReference করা হয়েছে। সেই ফ্ল্যাগের উপর ভিত্তি করে কোঅর্ডিনেট গণনা করার জন্য সম্পর্কিত ফাংশনের নাম পরিবর্তন করা হয়েছে। (I3a330)

ভার্সন 1.7.0-beta01

১৪ মে, ২০২৪

androidx.compose.ui:ui-*:1.7.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-beta01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • performCustomAccessibilityActionLabelled-এর নাম পরিবর্তন করে performCustomAccessibilityActionWithLabel এবং performCustomAccessibilityActionWhere-এর নাম পরিবর্তন করে performCustomAccessibilityActionWithLabelMatching করা হয়েছে। (I5387f)
  • AnnotatedString.hasEqualsAnnotations এখন hasEqualAnnotations (I685c0)
  • টেক্সটে Material থিমের লিঙ্ক পাওয়ার জন্য API আপডেট করা হয়েছে। বিশেষ করে, থিমযুক্ত LinkAnnotations তৈরি করতে এবং থিমযুক্ত লিঙ্ক সহ HTML পার্স করার জন্য TextDefaults থেকে পদ্ধতিগুলি সরিয়ে দেওয়া হয়েছে। এর পরিবর্তে, একটি TextLinkStyles ক্লাস যোগ করা হয়েছে যা টেক্সট কম্পোজ করার যোগ্য আইটেমের প্যারামিটার হিসেবে লিঙ্ককে স্টাইল করার অনুমতি দেয়। (I31b93)

সমস্যার সমাধান

  • ইভেন্ট চলাকালীন ডায়নামিক পদ্ধতিতে পয়েন্টার ইনপুট মডিফায়ার যোগ করার সময় অতিরিক্ত ব্যবহারিক ক্ষেত্র সংক্রান্ত সমস্যার সমাধান করে 63e1504

ভার্সন 1.7.0-alpha08

১ মে, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha08 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha08-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পরিবর্তনযোগ্য শেপ প্রয়োগ করার সুবিধা যোগ করে। Shape#createOutline এখন গ্রাফিক লেয়ারের মধ্যে দেখা যায়, তাই এর মধ্যে থাকা স্টেট ভ্যালু পড়লে, স্টেট পরিবর্তন হওয়ার সময় তা বাতিল হয়ে যাবে, এর ফলে আরও ভাল পারফর্ম্যান্সের শেপ অ্যানিমেশন পাওয়া যাবে। (Id1629, b/326070216)
  • isPositionedByParentWithDirectManipulation-এর নাম পরিবর্তন করে introducesFrameOfReference করা হয়েছে। মনে রাখবেন, এখন এর বিপরীত প্রভাব রয়েছে, অর্থাৎ ডিফল্ট হিসেবে, বেশিরভাগ LayoutCoordinates রেফারেন্স ফ্রেম যোগ করে এবং শুধুমাত্র ডাইরেক্ট ম্যানিপুলেশনের অধীনে রাখলে প্রপার্টিটি মিথ্যা হবে। শুধুমাত্র সেইসব পজিশন কোয়েরি করতে যা রেফারেন্সের ফ্রেমকে ইন্ট্রোডিউস করে, positionInLocalFrameOfReference(...) ব্যবহার করুন। অথবা LookaheadScope থেকে positionInLocalLookaheadFrameOfReference। (Ifc5f7)
  • LookaheadScope API স্থিতিশীল করা হয়েছে (I21507)
  • API কাউন্সিল ফিডব্যাক অনুযায়ী getScrollViewportLength-এর জন্য অ্যাকশন ল্যাম্বডা পরিবর্তন করো। (Ibc74a)
  • int-এর পরিবর্তে ফ্লোট প্যারামিটার ব্যবহার করার জন্য আপডেট করা GraphicsLayer আউটলাইন API। ফ্লোট-ভিত্তিক অফসেট এবং সাইজ ইনলাইন ক্লাসে (I2fb03, b/333863462) আগে থেকেই বিদ্যমান অনির্দিষ্ট কনস্ট্যান্টের জন্য UnsetOffset/UnsetSize IntSize সেন্টিনেল ভ্যালু সরিয়ে দেওয়া হয়েছে
  • পরীক্ষার সময় মাউস ইনপুট ইনজেক্ট করার সময়, MouseInjectionScope.click(), MouseInjectionScope.doubleClick(), MouseInjectionScope.tripleClick(), MouseInjectionScope.longClick() এখন button: MouseButton প্যারামিটার গ্রহণ করে যাতে সেগুলি আরও বেশি করে সর্বজনীনভাবে প্রযোজ্য হয়। সব পদ্ধতির জন্য ডিফল্ট ভ্যালু হল MouseButton.Primary। (I31a23, b/190493367, b/261439695)
  • LinkInteractionListener-এর মধ্যে onClicked-এর নাম পরিবর্তন করে onClick করা হয়েছে। (Iaa35c)
  • TextInclusionStrategy.isInside-এর নাম পরিবর্তন করে isIncluded করুন। Paragraph/MultiParagraph#getRangeForRect() রিটার্ন টাইপকে নন-নাল করুন। (I51f26)

সমস্যার সমাধান

  • reverseScrolling=true-এর সাহায্যে স্ক্রল করা যায় এমন কন্টেনারের জন্য লম্বা স্ক্রিনশট ক্যাপচার করার সমস্যা সমাধান করা হয়েছে। (I7c59c)

এক্সটার্নাল কন্ট্রিবিউশন

  • নেস্টেড LazyLists-এ (যেমন, নেস্টেড LazyRows রেন্ডার করে এমন LazyColumn) আইটেম প্রিফেচ করার জন্য সহায়তা যোগ করা হয়েছে। এই পরিবর্তনের ফলে এইসব LazyLists-এর জন্য স্ক্রল করার সময় ফ্রেম ড্রপ কমে যাবে বলে আশা করা যায়। ইমপ্লিমেন্টেশনের ডিফল্ট হল প্রথম ২টি নেস্টেড আইটেম প্রিফেচ করা, তবে এই আচরণ নতুন LazyLayoutPrefetchStrategy(nestedPrefetchItemCount) ও LazyListPrefetchStrategy#onNestedPrefetch API-এর মাধ্যমে কন্ট্রোল করা যেতে পারে। (I51952)

ভার্সন 1.7.0-alpha07

১৭ এপ্রিল, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha07 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha07-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ClickableText বন্ধ করে দেওয়া হয়েছে হিসেবে চিহ্নিত করা হয়েছে। টেক্সটে লিঙ্ক যোগ করতে, আপনার লিঙ্কের সাথে সম্পর্কিত LinkAnnotation সহ একটি AnnotatedString তৈরি করুন এবং এই AnnotatedString-কে Text composable-এ পাস করুন। (I34d4b, b/323346994)
  • হাতের লেখা জেসচারের জন্য ViewConfiguration.HandwritingGestureLineMargin চালু করুন। BasicTextField-এর জন্য JoinOrSplit জেস্চার কাজ করে (Ie6e13, b/325660505)
  • FocusProperties.enter ও FocusProperties.exit আর পরীক্ষামূলক নয়। FocusDirection.Enter ও FocusDirection.Exit আর পরীক্ষামূলক নয়। FocusRequester.Cancel আর এক্সপেরিমেন্টাল নয় (I461a1, b/261564106)
  • Layout কোঅর্ডিনেট কোয়েরি করার সময়, আপনি এখন excludeDirectManipulationOffset আর্গুমেন্ট ব্যবহার করে, Placeable.PlacementScope.withDirectManipulationPlacement ব্যবহার করে চাইল্ড লেআউট প্লেস করা প্যারেন্ট লেআউট দ্বারা সেট করা অফসেট বাদ দিতে পারেন। একইভাবে, কোনও লেআউট যদি তার চাইল্ডের পজিশন ঘন ঘন পরিবর্তন করে, তাহলে সেটি এখন withDirectManipulationPlacement ব্যবহার করে সেগুলি প্লেস করতে পারে (যেমন, ডিফল্ট হিসেবে প্রয়োগ করা স্ক্রল)। এর ফলে approachLayout ভিত্তিক অ্যানিমেশন আরও স্বজ্ঞাত হয়ে ওঠে, কারণ এখন অ্যানিমেট করার জন্য কোন অফসেট ব্যবহার করতে হবে এবং কোন অফসেট সরাসরি প্রয়োগ করতে হবে তা আলাদা করে বোঝা যায়। (I60ec7)
  • 'বড় স্ক্রিনশট' ফিচারের ফ্ল্যাগ সরিয়ে দেওয়া হয়েছে। (I28648, b/329128246)
  • LazyColumn এখন দীর্ঘ স্ক্রিনশটে স্টিকি হেডার সঠিকভাবে রেন্ডার করবে। (I8d239, b/329296635)
  • NestedScroll সোর্স ড্র্যাগ ও ফ্লিংকে UserInput ও SideEffect দিয়ে প্রতিস্থাপন করা হচ্ছে, যাতে এই সোর্সগুলির বর্ধিত সংজ্ঞা অন্তর্ভুক্ত করা যায়, যার মধ্যে এখন অ্যানিমেশন (সাইড এফেক্ট) এবং মাউস হুইল ও কীবোর্ড (UserInput) অন্তর্ভুক্ত। (I40579)
  • ApproachLayoutModifierNode ও Modifier.approachLayout এখন স্থিতিশীল, নতুন isMeasurementApproachInProgress() ও isPlacementApproachInProgress() যথাক্রমে পুরনো isMeasurementApproachComplete() ও isPlacementApproachComplete()-এর পরিবর্তে ব্যবহার করা যাবে।
  • পুরনো হয়ে যাওয়া intermediateLayout মডিফায়ার সরিয়ে দেওয়া হয়েছে। (I3e91c)
  • RenderNode ও Picture-এর মতো Displaylist ব্যাকড API-এর begin/endRecording পদ্ধতির মতো রেকর্ড করতে GraphicsLayer#buildLayer-এর নাম পরিবর্তন করুন।
  • rememberObserver-এর সুবিধা নিতে rememberGraphicsLayer আপডেট করা হয়েছে। (I312c1, b/288494724, b/330758155)
  • UrlAnnotation বন্ধ করা হয়েছে, এর পরিবর্তে LinkAnnotation.Url ব্যবহার করুন। আপনি যদি মেটেরিয়াল থিমিং ব্যবহার করেন, তাহলে মেটেরিয়াল থিমিং প্রয়োগ করা অ্যানোটেশন তৈরি করতে TextDefaults অবজেক্ট ব্যবহার করুন (I8d180, b/323346545)
  • সাধারণ স্টাইলিং, হোভার ও ফোকাস করা ছাড়াও টেক্সট লিঙ্কে প্রেস করা স্টাইলিং বিকল্প যোগ করা হয়েছে (I5f864, b/139312671)
  • String.parseAsHtml-এর নাম পরিবর্তন করে AnnotatedString.Companion.fromHtml করা হয়েছে। (I43dcd)
  • parseAsHtml পদ্ধতিতে স্টাইলিং আর্গুমেন্ট (linkStyle, focusedLinkStyle, hoveredLinkStyle) এবং লিঙ্ক ইন্টার‍্যাকশন লিসনার যোগ করা হয়েছে। <a> ট্যাগ সহ HTML-ট্যাগ করা স্ট্রিং পার্স করার সময়, এই পদ্ধতিটি এই ধরনের প্রতিটি ট্যাগের জন্য একটি LinkAnnotation.Url তৈরি করবে এবং প্রতিটি অ্যানোটেশনে স্টাইলিং অবজেক্ট ও লিঙ্ক ইন্টার‍্যাকশন লিসনার পাস করবে। (I7c977)
  • LinkAnnotation এখন স্টেট-ভিত্তিক স্টাইলিং আর্গুমেন্ট ও একটি LinkInteractionListener নেয়। হাইপারলিঙ্ক পেতে AnnotatedString-এ এই অ্যানোটেশন যোগ করুন। focusedState এবং/অথবা hoveredState পাস করার মাধ্যমে, লিঙ্ক ফোকাস করা এবং/অথবা হোভার করা হলে আপনি ভিজ্যুয়াল configuration নির্ধারণ করতে পারবেন। (I81ce4, b/139312671)
  • ImeOptions.hintLocales আর নাল হতে পারবে না। আপনি খালি লোকেল তালিকা পাস করতে চাইলে, LocaleList.Empty ব্যবহার করুন। (Ic5bc4)

সমস্যার সমাধান

  • খারাপ/ভুল ঐতিহাসিক ইনপুট ইভেন্ট ডেটা সাবলীলভাবে ম্যানেজ করে (ভুল অফসেট ডেটা উপেক্ষা করে)।
  • অ্যাক্টিভ পয়েন্টার ইনপুট ইভেন্ট স্ট্রিম চলাকালীন (যেমন, হোভার এন্টার ও হোভার এক্সিট [মাউস/স্টাইলাস]-এর মধ্যে) অন্য পয়েন্টার ইনপুট মডিফায়ারের আগে ডায়নামিক পয়েন্টার ইনপুট মডিফায়ার যোগ করা হলে অপ্রত্যাশিত পয়েন্টার ইভেন্ট সংক্রান্ত সমস্যার সমাধান করে।

ভার্সন 1.7.0-alpha06

৩ এপ্রিল, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha06-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • স্টাইল করা স্ট্রিংয়ের জন্য parseAsHtml পদ্ধতি যোগ করা হয়েছে: এটি HTML ট্যাগ দিয়ে চিহ্নিত করা স্ট্রিংকে AnnotatedString-এ কনভার্ট করতে দেয়। মনে রাখবেন, সব ট্যাগ কাজ করে না, যেমন, আপনি এখনও বুলেট তালিকা দেখাতে পারবেন না। (I84d3d, I30626, b/139326648)
  • অফিসিয়াল Android API (ScrollCaptureCallback) ব্যবহার করে কম্পোজ স্ক্রল কন্টেনারে বড় স্ক্রিনশট নেওয়ার জন্য পরীক্ষামূলক সহায়তা প্রয়োগ করা হয়েছে। এই ফিচারটি পরীক্ষামূলক এবং বর্তমানে সব ক্ষেত্রে সঠিকভাবে কাজ নাও করতে পারে। সেই কারণে, এটি বর্তমানে ডিফল্ট হিসেবে বন্ধ করা আছে। চালু করতে, ComposeFeatureFlag_LongScreenshotsEnabled ফ্ল্যাগকে 'সত্য' হিসেবে সেট করুন। (I2b055, b/329296471)

API-তে পরিবর্তন

  • fun ClipEntry.getMetadata() পরিবর্তন করে val ClipEntry.clipMetadata করা হয়েছে। (I50155)
  • ClipboardManager.getClipMetadata ও ClipboardManager.hasClip ফাংশন সরিয়ে দেওয়া হয়েছে। বর্তমান ক্লিপ এন্ট্রির মেটাডেটা পড়তে clipEntry.getMetadata() ব্যবহার করুন। এছাড়াও, ক্লিপবোর্ডে কোনও বর্তমান ক্লিপ আছে কিনা তা বোঝার জন্য ClipboardManager.getClip-এর ফলাফল নাল বা নয় কিনা তা চেক করুন। (I50498)
  • এখন আপনি placeable.placeWithLayer() ফাংশনে GraphicsLayer অবজেক্ট পাস করতে পারবেন (I1b22f)
  • ClipboardManager.setClip এখন ক্লিপবোর্ড খালি করার জন্য নাল ভ্যালু গ্রহণ করে। (I7d2e9)
  • বিল্ড টুলের মধ্যে ইমপ্লিমেন্টেশন বিবরণ হিসেবে ব্যবহৃত ভিউ লুকানোর জন্য রিসোর্স আইডি যোগ করা হয়েছে (I99531)
  • GraphicsLayer-এ বিটম্যাপের কন্টেন্ট রেন্ডার করার জন্য GraphicsLayer#toImageBitmap সাসপেন্ড করার পদ্ধতি যোগ করা হয়েছে। এটি API লেভেল 22+ (অন্তর্ভুক্ত) ভার্সনে হার্ডওয়্যার অ্যাক্সিলারেটেড রেন্ডারিং অপারেশন যা সমস্ত Android ডিভাইসের ৯৯%-এরও বেশি ডিভাইসে কাজ করে। Android API লেভেল ২১-এ এটি সফ্টওয়্যার রেন্ডারিংয়ে ফল ব্যাক করে। (I9e114)
  • Android RectF থেকে ComposeRect-এ কনভার্ট করার জন্য সহায়ক পদ্ধতি (I39925, b/325660505)
  • সব KeyboardOptions প্যারামিটারের ডিফল্ট মান এখন অনির্দিষ্ট। KeyboardOptions.merge পদ্ধতি যোগ করা হয়েছে।
  • KeyboardOptions.autoCorrect-এর নাম পরিবর্তন করে autoCorrectEnabled করা হয়েছে এবং এটিকে নাল করা যায়, যেখানে নাল মানে কোনও ভ্যালু নির্দিষ্ট করা হয়নি। (Ia8ba0, b/295951492)
  • সফ্টওয়্যার কীবোর্ড দ্বারা নেওয়া অ্যাকশন প্রসেস করার জন্য BasicTextField(state) এবং BasicSecureTextField এখন KeyboardActions-এর পরিবর্তে KeyboardActionHandler ব্যবহার করে। (I58dda)

ভার্সন 1.7.0-alpha05

২০ মার্চ, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha05-এ এইসব কমিট আছে।

নতুন ফিচার

  • ডিসপ্লে লিস্টে ড্রয়িং কমান্ড রেকর্ড করার জন্য নতুন GraphicsLayer API এবং ডিসপ্লে লিস্টের রেন্ডারিংয়ের উপর প্রভাব ফেলে এমন অতিরিক্ত প্রপার্টি যোগ করা হয়েছে। এটি একটি আইসোলেশন বাউন্ডারি প্রদান করে যা একটি জটিল দৃশ্যকে ছোট ছোট অংশে ভাগ করে এবং সম্পূর্ণ দৃশ্যটি আবার তৈরি না করেই প্রতিটি অংশকে আলাদাভাবে আপডেট করা যেতে পারে। GraphicsLayer-এ করা ট্রান্সফর্মেশন ডিসপ্লে তালিকা আবার রেকর্ড না করেই করা যেতে পারে। Modifier.graphicsLayer-এর বিপরীতে, GraphicsLayer কম্পোজ করার উপযুক্ত কন্টেন্ট অন্য কোথাও রেন্ডার করার অনুমতি দেয় এবং অ্যানিমেটেড ব্যবহারের ক্ষেত্রে এটি উপযোগী যেখানে কন্টেন্টকে বিভিন্ন দৃশ্যে রেন্ডার করার প্রয়োজন হয়।

API-তে পরিবর্তন

  • GraphicsLayer.draw(Canvas) আর পাবলিক এপিআই নেই। লেয়ার আঁকার জন্য এর পরিবর্তে DrawScope.drawLayer(GraphicsLayer) এক্সটেনশন ফাংশন ব্যবহার করুন। (I7a7c0)
  • restrictedConstraints()-কে দুটি পদ্ধতিতে ভাগ করুন: fitPrioritizingWidth() এবং fitPrioritizingHeight() (I6d7fd)
  • Android L ব্যবহারের জন্য HardwareCanvas স্টাব যোগ করা হয়েছে (I1c3b5, b/288494724)
  • Compose ফ্রেমওয়ার্ক আপডেট করে GraphicsContext কম্পোজিশন লোকালকে এক্সপোজ করুন এবং এর সাথে সাথে DelegateableNode ও drawWithCache মডিফায়ার ইমপ্লিমেন্টেশন আপডেট করে GraphicsContext-এর অ্যাক্সেস এক্সপোজ করুন। এর ফলে স্কোপ করা অ্যাক্সেস পাওয়া যাবে এবং মডিফায়ার সরিয়ে দিলে GraphicsLayer ইনস্ট্যান্স অটোমেটিক ক্লিন-আপ হয়ে যাবে। (I64a2f, b/288494724)
  • InterceptPlatformTextInput চালু করা হয়েছে, এর সাহায্যে লো-লেভেল IME-সম্পর্কিত টেস্ট ও অন্যান্য লো-লেভেল IME ব্যবহারের ক্ষেত্র লেখা যায়। PlatformTextInputTestOverride বন্ধ করে দেওয়া হয়েছে। (I862ed, b/322680547)
  • GraphicsLayer.setOutline(Outline) এক্সটেনশন ফাংশন যোগ করা হয়েছে। (Ib81f4)
  • GraphicsLayer ইনস্ট্যান্স (Ib98d6, b/288494724) তৈরি করার জন্য ফ্যাক্টরি তৈরি করতে GraphicsContext ফাংশন কনস্ট্রাক্টর যোগ করুন
  • ড্রয়িং কমান্ড ক্যাপচার করার ক্ষেত্রে ডেভেলপার-সংজ্ঞায়িত নমনীয়তা প্রদান করতে GraphicsLayer API এক্সপোজ করা হয়েছে যা অন্য কোথাও ড্র করার জন্য ব্যবহার করা যেতে পারে এবং চূড়ান্ত ফলাফলে বিভিন্ন ভিজ্যুয়াল এফেক্টও প্রয়োগ করা যেতে পারে। (I80245, b/288494724)
  • Paragraph#getRangeForRect-এর ব্যাপারে জানুন, এটি প্রদত্ত আয়তাকার এরিয়াতে কভার করা টেক্সটের রেঞ্জ রিটার্ন করে। (Iee516, b/325660505)
  • onLinkClicked আর্গুমেন্ট সহ BasicText-এর পরীক্ষামূলক ওভাররাইড সরিয়ে দেওয়া হয়েছে। ভবিষ্যতে হাইপারলিঙ্ক সহায়তার জন্য একটি বিকল্প API প্রকাশ করা হবে। (I107d5)

সমস্যার সমাধান

  • ঐচ্ছিক কম্পোজিটিং ভিজ্যুয়াল এফেক্ট ও ট্রান্সফর্ম সহ ড্রয়িং কমান্ড ক্যাপচার ও রিপ্লে করার সুবিধা দিতে GraphicsLayer expect/actual API সংজ্ঞা যোগ করা হয়েছে। GraphicsLayer ইনস্ট্যান্স তৈরি ও ম্যানেজ করা সহ গ্রাফিক্স সংক্রান্ত নির্ভরতা কন্টেন করার জন্য GraphicsContext ইন্টারফেস চালু করা। (I4a8d6, b/288494724)
  • 1D ফোকাস সার্চের সাথে ইন্টার-অপারেবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে, যেখানে ফোকাস অন্যান্য ভিউয়ের মধ্যে এম্বেড করা ComposeView-এর মধ্যে আটকে যেত। (I08fd4)

এক্সটার্নাল কন্ট্রিবিউশন

  • LocalLifecycleOwner-কে Compose UI থেকে lifecycle-runtime-compose-এ সরানো হয়েছে যাতে এর Compose-ভিত্তিক হেল্পার API, Compose UI-এর বাইরে ব্যবহার করা যায়। কন্ট্রিবিউট করার জন্য Jake Wharton-কে ধন্যবাদ। (I6c41b, b/328263448)
  • পক্ষপাতদুষ্ট অ্যালাইনমেন্টের সব সাবটাইপে পক্ষপাতদুষ্ট ফ্লোট প্রপার্টিকে ধারাবাহিকভাবে এক্সপোজ করুন। (I69f0f, b/328088992)

ভার্সন 1.7.0-alpha04

৬ মার্চ, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha04-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Android U-এর পরের ভার্সন থাকা ডিভাইসে BasicTextField2-এর জন্য স্টাইলাস হাতের লেখা ফিচার কাজ করে। (I002e4)
  • এই CL-এ আমরা GetScrollViewportLength সিম্যান্টিক অ্যাকশন যোগ করছি যাতে কম্পোজে স্ক্রল করা হচ্ছে এমন কম্পোনেন্ট সম্পর্কে তথ্য a11y সিস্টেমে পাইপ করা যায়। এই CL, Foundation Scrollable Lists-এ উল্লিখিত প্রপার্টির ব্যবহারও প্রয়োগ করে। (Ic5fa2)
  • FocusRequester.createRefs এখন স্থিতিশীল (I4d92c, b/261436820)
  • কম্পোজিশন লোকাল না পড়েই মডিফায়ার নোডকে বর্তমান Android View পেতে দেওয়ার জন্য DelegatableNode.requireView() যোগ করা হয়েছে। (I40768)
  • পাথের দিক পরিবর্তন করার জন্য নতুন API Path.reverse() (I36348)
  • TextFields-কে পছন্দসই ভাষা আগে থেকে সেট করার জন্য নির্দিষ্ট লোকেল সহ IME-কে ইঙ্গিত করার ক্ষমতা প্রদান করতে KeyboardOptions-এ hintLocales যোগ করা হয়েছে।
  • Locale থেকে platformLocale প্রপার্টি এক্সপোজ করুন যা অন্তর্নিহিত প্ল্যাটফর্ম অবজেক্ট রিটার্ন করে, যেমন java.util.Locale। (I921c6)

ভার্সন 1.7.0-alpha03

২১ ফেব্রুয়ারি, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha03 রিলিজ করা হয়েছে। 1.7.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • MaxLines ও ওভারফ্লো সহ ContextualFlowRow ও উন্নত FlowRow/Column চালু করা হচ্ছে। আমরা এক্সপেরিমেন্টাল FlowRow ও FlowColumn-এ উন্নতির ঘোষণা করতে পেরে আনন্দিত। এখন এতে maxLines ও ওভারফ্লো সাপোর্ট আছে। এছাড়াও, ContextualFlowRow ও ContextualFlowColumn প্রথমবার প্রকাশ করা হয়েছে। এই আপডেটটি পারফর্ম্যান্স অপ্টিমাল কম্পোনেন্ট প্রদান করার জন্য ডিজাইন করা হয়েছে, যেখানে ContextualFlow* হল ছোট maxLines কনফিগারেশন এবং ডায়নামিক +N আরও দেখুন বোতাম ব্যবহার করে আইটেমের একটি বড় সংখ্যার জন্য উপযুক্ত এবং FlowRow এবং FlowColumn হল আইটেমের একটি ছোট সংখ্যার জন্য উপযুক্ত, ১০০টির কম আইটেম। গুরুত্বপূর্ণ: FlowRow বা FlowColumn-এ আগে থেকে থাকা আচরণ বজায় রাখতে, যেখানে ক্রস অ্যাক্সিস ম্যাক্স ফিট করুক বা না করুক, সব আইটেম কম্পোজ করা হয়, সেখানে ইনিশিয়ালাইজেশনের সময় overflow-কে FlowRowOverflow.Visible বা FlowColumnOverflow.Visible হিসেবে সেট করুন। এইসব নতুন ফিচার কীভাবে কাজ করে তা জানতে ContextualFlowRowSample ও FlowRowSample দেখুন। (Ib9135, b/293577082)
  • maxTextLength সিম্যান্টিক্স প্রপার্টি যোগ করুন যা সর্বাধিক অনুমোদিত অক্ষরের সংখ্যা ফিল্টার করে এমন টেক্সট ফিল্ডে সেট করা উচিত। (I24d9f, b/170648072)
  • Modifier.inspectable র‍্যাপার বন্ধ করে দেওয়া হয়েছে। এই API আপনার মডিফায়ারের অপ্রয়োজনীয় ইনভ্যালিডেশন তৈরি করবে, তাই এখন এটি ব্যবহার না করাই ভাল। টুলিংয়ের কাছে মডিফায়ার প্রপার্টি এক্সপোজ করতে চাইলে, ডেভেলপারদের ModifierNodeElement-এ inspectableProperties() মেথড প্রয়োগ করার জন্য উৎসাহিত করা হয়। (Ib3236)
  • PopupProperties-এর জন্য নতুন কনস্ট্রাক্টর যা WindowManager.LayoutParams ফ্ল্যাগ সম্পূর্ণ নিয়ন্ত্রণ করতে দেয়। (Ibb33e, b/312485503)
  • DelegatableNode.requireLayoutCoordinates()-কে Modifier.Node-এর বর্তমান LayoutCoordinates পাওয়ার একটি উপায় হিসেবে চালু করা হয়েছে, এর জন্য onPlaced ওভাররাইড করার প্রয়োজন নেই এবং আপনি নিজেই কোনও প্রপার্টিতে কোঅর্ডিনেট স্টোর করতে পারবেন। (Ia8657)
  • DelegatableNode.currentLayoutCoordinates-কে Modifier.Node-এর বর্তমান LayoutCoordinates পাওয়ার একটি উপায় হিসেবে চালু করা হয়েছে, এর জন্য onPlaced ওভাররাইড করার প্রয়োজন নেই এবং আপনি নিজেই কোনও প্রপার্টিতে কোঅর্ডিনেট স্টোর করতে পারবেন। (Iaebaa)
  • androidx.compose.foundation.text2 প্যাকেজের অধীনে BasicTextField2 ও সম্পর্কিত API androidx.compose.foundation.text-এ সরানো হয়েছে। (I9f635)
  • এক্সপ্লিসিট মডিফায়ার নোডে কাস্টম অ্যাপ্রোচ লজিক তৈরি করার জন্য নতুন ApproachLayoutModifierNode API যোগ করা হয়েছে। এছাড়াও, ইনস্ট্যানশিয়েশনের সময় টার্গেট অজানা এমন অ্যানিমেশনের জন্য একটি নতুন পরীক্ষামূলক DeferredTargetAnimation API যোগ করা হয়েছে। (I60745)
  • পাথের দিকনির্দেশ কোয়েরি করতে এবং Path থেকে কনট্যুর এক্সট্র্যাক্ট করতে নতুন Path API. (I63d04)
  • Path-এ নির্দিষ্ট পয়েন্ট আছে কিনা তা চেক করতে PathHitTest ও Path.contains(Offset) যোগ করা হয়েছে। (I3b218)
  • TextLayoutResult এখন getLineBaseline(lineIndex) পদ্ধতি প্রকাশ করে। এটি আগে থেকেই থাকা কনভেনিয়েন্স প্রপার্টি firstBaseline ও lastBaseline ছাড়াও টেক্সটের যেকোনও লাইনের বেসলাইন পড়তে দেয়। (Ide4e8, b/237428541)
  • শুধুমাত্র দুটি AnnotatedStrings-এর অ্যানোটেশন তুলনা করার পদ্ধতি যোগ করা হয়েছে। (I32659)

সমস্যার সমাধান

  • SemanticsPropertyReceiver.performImeAction ও SemanticsActions.PerformImeAction-এর সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Id0528, b/322269946)

ভার্সন 1.7.0-alpha02

৭ ফেব্রুয়ারি, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha02-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • SemanticsPropertyReceiver.performImeAction-এর সাথে বাইনারি সামঞ্জস্য সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I65865, b/322269946)
  • usePlatformDefaultWidth প্যারামিটার গ্রহণ করে এমন PopupProperties কনস্ট্রাক্টর আর পরীক্ষামূলক নয়। (I8f8d2)
  • টাইম-আউট মেসেজে অন্তর্ভুক্ত করার জন্য কন্ডিশনের স্ট্রিং বিবরণ নেয় এমন ComposeTestRule.waitUntil-এর ওভারলোড যোগ করা হয়েছে। (I9413e)
  • একই মডিফায়ার চেনে যোগ করা সিম্যান্টিক প্রপার্টি সরানোর জন্য নতুন সিম্যান্টিক API unset()। নতুন সেম্যানটিক প্রপার্টি isOpaque. (I8c583, b/317966058, b/246056649)
  • PointerInputChange-এর পাবলিক API-তে কপি করার পদ্ধতি থেকে originalEventPosition সরানো হয়েছে। (I7bead)

সমস্যার সমাধান

  • বেছে নেওয়া হলে ট্যাব ও রেডিও বোতাম ছাড়া অন্য আইটেম ক্লিক করা যায় এমন অ্যাক্সেসিবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I2181c)
  • VelocityTracker-এ এখন ডিফল্ট হিসেবে পয়েন্ট যোগ করার সুবিধা চালু করার সমাধান থাকবে। কোনও সমস্যা হলে, VelocityTrackerAddPointsFix-এর মান false সেট করে, সমাধানটি এখনও বন্ধ করা যেতে পারে। (Ib3877, b/269487059)
  • TextStyle ও ParagraphStyle-এ বাইনারি ব্যাকওয়ার্ড ইনকমপ্যাটিবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I179f0, b/320819734)

এক্সটার্নাল কন্ট্রিবিউশন

  • প্ল্যাটফর্ম-নির্দিষ্ট প্যারামিটার ছাড়া নতুন DialogProperties কনস্ট্রাক্টর যোগ করা হয়েছে। (I45829)
  • প্ল্যাটফর্ম-নির্দিষ্ট প্যারামিটার ছাড়া নতুন PopupProperties কনস্ট্রাক্টর যোগ করা হয়েছে। (I9a038)

ভার্সন 1.7.0-alpha01

২৪ জানুয়ারি, ২০২৪

androidx.compose.ui:ui-*:1.7.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.7.0-alpha01-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • ছবি সহ যেকোনও কন্টেন্ট যাতে কাজ করে সেই জন্য ClipEntry ও ClipMetadata যোগ করে ClipboardManager-এর পরিধি বাড়ানো হয়েছে।
  • ui-test-এ DeviceConfigurationOverride API যোগ করে, যাতে উপলভ্য সাইজ, লোকেল, লেআউট ডিরেকশন, ফন্ট স্কেল বা থিমের মতো পরীক্ষা করা কন্টেন্টের আচরণ লোকালি ওভাররাইড করা যায়।

ভার্সন 1.6

ভার্সন 1.6.8

১২ জুন, ২০২৪

androidx.compose.ui:ui-*:1.6.8 রিলিজ করা হয়েছে। 1.6.8 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • সবচেয়ে ছোট টেবিলের থেকে ফন্ট স্কেল ছোট হলে ফন্ট স্কেলিংয়ে হওয়া অসঙ্গতি সমাধান করা হয়েছে। এই ক্ষেত্রে, আমরা এখন লিনিয়ার ১x স্কেল এবং সবচেয়ে কম সংজ্ঞায়িত টেবিলের মধ্যে ইন্টারপোলেট করি, যাতে স্কেল বাড়ার সাথে সাথে ফন্ট সাইজও একভাবে বাড়তে থাকে। (Icbae3)

ভার্সন 1.6.7

১ মে, ২০২৪

androidx.compose.ui:ui-*:1.6.7 রিলিজ করা হয়েছে। ভার্সন 1.6.7-এ এইসব কমিট রয়েছে।

ভার্সন 1.6.6

১৭ এপ্রিল, ২০২৪

androidx.compose.ui:ui-*:1.6.6 রিলিজ করা হয়েছে। ভার্সন 1.6.6-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • বিরল BasicTextField ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করে।

ভার্সন 1.6.5

৩ এপ্রিল, ২০২৪

androidx.compose.ui:ui-*:1.6.5 রিলিজ করা হয়েছে। ভার্সন 1.6.5-এ এইসব কমিট রয়েছে।

ভার্সন 1.6.4

২০ মার্চ, ২০২৪

androidx.compose.ui:ui-*:1.6.4 রিলিজ করা হয়েছে। ভার্সন 1.6.4-এ এইসব কমিট রয়েছে।

ভার্সন 1.6.3

৬ মার্চ, ২০২৪

androidx.compose.ui:ui-*:1.6.3 রিলিজ করা হয়েছে। ভার্সন 1.6.3-এ এইসব কমিট রয়েছে।

ভার্সন 1.6.2

২১ ফেব্রুয়ারি, ২০২৪

androidx.compose.ui:ui-*:1.6.2 রিলিজ করা হয়েছে। 1.6.2 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.6.1

৭ ফেব্রুয়ারি, ২০২৪ androidx.compose.ui:ui-*:1.6.1 রিলিজ করা হয়েছে। 1.6.1 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • SemanticsPropertyReceiver.performImeAction ও SemanticsActions.PerformImeAction-এর সাথে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (Ie0bb2, b/322269946)
  • লেআউট এখন পরিমাপ করার সময় সমস্যা দেখায়, যখন কোনও একটি অস্বাভাবিকভাবে বড় সাইজ রিটার্ন করে। Constraints.Infinity চেক না করেই সরাসরি সর্বাধিক সীমাবদ্ধতা ব্যবহার করলে সাধারণত এই ধরনের সমস্যা হয়। চেক করার ফলে, যে লেআউটে ভুল সাইজ আছে, সেটির পরিবর্তে, যে লেআউটে সেটি আছে, সেটির সমস্যা খুঁজে পেতে ডেভেলপারদের সাহায্য করবে। (I339a9)

ভার্সন 1.6.0

২৪ জানুয়ারি, ২০২৪

androidx.compose.ui:ui-*:1.6.0 রিলিজ করা হয়েছে। ভার্সন 1.6.0-এ এই কমিটগুলি রয়েছে।

ভার্সন 1.6.0-rc01

১০ জানুয়ারি, ২০২৪

androidx.compose.ui:ui-*:1.6.0-rc01 রিলিজ করা হয়েছে। 1.6.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • অতিরিক্ত রিকম্পোজিশন কমানোর মাধ্যমে পারফর্ম্যান্স উন্নত করতে অপ্টিমাইজ করা ভেক্টর গ্রাফিক্স প্রয়োগ।

ভার্সন 1.6.0-beta03

১৩ ডিসেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-beta03 রিলিজ করা হয়েছে। 1.6.0-beta03 ভার্সনে এইসব কমিট আছে।

নতুন ফিচার

  • নোড বিচ্ছিন্ন না করেই LayoutCoordinates বিচ্ছিন্ন করা এখন সম্ভব। কম্পোজ লেআউট ইন্সপেক্টর (If693) ব্যবহার করে এটি প্রতিরোধ করুন

সমস্যার সমাধান

  • PlatformImeOptions এখন ইন্টারফেসের পরিবর্তে একটি কনক্রিট ক্লাস। (If40a4)
  • রুট কম্পোজ করার সময় LocalSoftwareKeyboardController ও LocalTextInputService-এর নতুন ভ্যালু প্রদান করার ফলে অতিরিক্ত ডাউনস্ট্রিম রিকম্পোজিশন সংক্রান্ত সমস্যা সমাধান করা হয়েছে। (I42190, b/310510985)

ভার্সন 1.6.0-beta02

২৯ নভেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-beta02 রিলিজ করা হয়েছে। 1.6.0-beta02 ভার্সনে এই কমিটগুলি রয়েছে।

ভার্সন 1.6.0-beta01

১৫ নভেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-beta01 রিলিজ করা হয়েছে। 1.6.0-beta01 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • DragAndDropTarget মডিফায়ার এখন গ্রহণকারী DragAndDropTarget স্পষ্টভাবে নেয় এবং ড্র্যাগ অ্যান্ড ড্রপ সেশনে অপ্ট-ইন করার জন্য ল্যাম্বডা থাকে। DragAndDropModifierNode-এর জন্য এখন দুটি ফ্যাক্টরি ফাংশন আছে। একটি ট্রান্সফার গ্রহণ করার জন্য এবং একটি ডেটা ট্রান্সফার করার জন্য (I69481)
  • maximumFlingVelocity-কে Float হিসেবে দেখানোর জন্য আপডেট করা হয়েছে। maximumFlingVelocity ইউনিটি সম্পর্কে আরও স্পষ্ট ধারণা দিতে ডকুমেন্টেশন আপডেট করা হয়েছে। (I8adc7)
  • DragAndDropModifierNode ফ্যাক্টরিতে onDragAndDropStart-এর নাম পরিবর্তন করে acceptDragAndDropTransfer করা হয়েছে।ড্র্যাগ অ্যান্ড ড্রপ সেশন থেকে গ্রহণ করার জন্য dragAndDropTarget মডিফায়ারে acceptsDragAndDropTransfer যোগ করা হয়েছে। ড্র্যাগ অ্যান্ড ড্রপ সেশনে আগ্রহী হলে এই ল্যাম্বডা একটি উপযুক্ত DragAndDropTarget রিটার্ন করে। ড্র্যাগ ইভেন্ট প্রসেস করার জন্য অন্যান্য ল্যাম্বডা এর মাধ্যমে প্রতিস্থাপন করা হয়েছে। ড্র্যাগ অ্যান্ড ড্রপ সেশন (Iebf3a) থেকে গ্রহণ করার জন্য একটি DragAndDropTarget ফ্যাক্টরি ফাংশন যোগ করা হয়েছে
  • DragAndDropInfo সরিয়ে দেওয়া হয়েছে, DragAndDropModifierNode.drag এখন transferData, সাজসজ্জার সাইজ ও ড্র্যাগ ডেকোরেশন DrawScope ল্যাম্বডার প্যারামিটার নেয়

    DragAndDropTarget-এ একটিমাত্র অ্যাবস্ট্রাক্ট পদ্ধতির পরিবর্তে নির্দিষ্ট ড্র্যাগ অ্যান্ড ড্রপ ইভেন্টের জন্য পদ্ধতি আছে

    DragAndDropModifierNode-এর জন্য ফ্যাক্টরি ফাংশনে onDragAndDropEvent-এর নাম পরিবর্তন করে onDragAndDropStart করা হয়েছে যাতে এটি আরও ভালভাবে বোঝানো যায় যে DragAndDropTarget শুধুমাত্র প্রদত্ত ড্র্যাগ অ্যান্ড ড্রপ সেশনের জন্যই বৈধ

    DragAndDropEventType সরিয়ে দেওয়া হয়েছে (I645b1)

  • PlatformTextInputModifierNode.runTextInputSession-এর নাম পরিবর্তন করে establishTextInputSession করা হয়েছে। (I03cd0)

  • আরও সহজে বোঝার জন্য ট্রাভার্স করা যায় এমন নোড API-এর নাম উন্নত করে। (Ia4474)

  • TextSubstitution দিয়ে OriginalText পরিবর্তন করুন। (Ifa5a8)

  • PlatformTextInputModifierNode.textInputSession-এর নাম পরিবর্তন করে runTextInputSession করা হয়েছে। (Ie9c6b)

  • SubcomposeLayout-এর চিলড্রেন (এবং LazyColumn-এর মতো লেআউট যা এর উপর ভিত্তি করে তৈরি) যা ভবিষ্যতে আবার ব্যবহার করার জন্য রেখে দেওয়া হয়, সেগুলি ডিঅ্যাক্টিভেট করা হয়েছে বলে ধরে নেওয়া হয়। এই ধরনের নোড পরীক্ষা করার জন্য নতুন assertIsDeactivated() টেস্ট API চালু করা হয়েছে। বাকি টেস্ট API ডিফল্ট হিসেবে বন্ধ করা নোড ফিল্টার করে দেবে। (I2ef84, b/187188981)

  • FocusDirection.In ও FocusDirection.Out সরিয়ে দেওয়া হয়েছে, পরিবর্তে FocusDirection.Enter ও FocusDirection.Exit ব্যবহার করুন (I2f660)

  • Material SwipeToReveal API (কার্ড ও চিপের জন্য) এখন সেইসব স্লট তৈরি করার জন্য ডেটা ক্লাস ভিত্তিক ইনস্ট্যান্সের পরিবর্তে স্লট ভিত্তিক API (Compose-এর সাজেশন অনুযায়ী) ব্যবহার করে। এটি একটি ব্রেকিং পরিবর্তন, নতুন API কীভাবে ব্যবহার করতে হয় তার উদাহরণ দেখতে ডেমো ও স্যাম্পেল কোড দেখুন। (Ia8943)

  • FontStyle(int) কনস্ট্রাক্টর বন্ধ হয়ে গেছে, এর পরিবর্তে FontStyle.Normal বা FontStyle.Italic ব্যবহার করুন। (I66610)

  • FontScalable ইন্টারফেসের নাম পরিবর্তন করে FontScaling করা হয়েছে (Ie804a)

সমস্যার সমাধান

  • SoftwareKeyboardController.show() কোনও টেক্সট এডিটরে ফোকাস করা না থাকলে, সফ্টওয়্যার কীবোর্ড আর দেখাবে না। (I2165a, b/301477279)
  • একই Compose View-তে Down ইভেন্ট না পাওয়া কীয়ের জন্য হার্ডওয়্যার কী Up ইভেন্ট এখন উপেক্ষা করা হবে। (Ib37b4, b/305518328)
  • ArcLine-এ সুইপ গ্রেডিয়েন্টের জন্য রেন্ডারার সাপোর্ট যোগ করুন। (I4d5bb)
  • PageSize.Fixed-এর জন্য equals ও hashcode প্রয়োগ করুন। (Ie3ede, b/300134276)
  • Window Inset পরিবর্তনের সাথে বাইনারি কম্প্যাটিবিলিটি সংক্রান্ত সমস্যার সমাধান করা (Iee695)
  • Material3 চিপ/বোতামের জন্য মেটেরিয়াল কোড লেয়ার সরিয়ে দিন কারণ মাইক্রোবেঞ্চমার্ক দেখায় যে এটি ছাড়া পারফর্ম্যান্স আরও ভালো হয়। (I55555)
  • কম্পোজ টেস্টে effectContext হিসেবে পাস করা TestDispatcher এখন টেস্ট ও ফ্রেম ক্লক তৈরি করতে ব্যবহার করা হবে। (Ia7178)

ভার্সন 1.6.0-alpha08

১৮ অক্টোবর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha08 রিলিজ করা হয়েছে। 1.6.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Modifier.dragAndDrawSource-এর onDrawDragShadow lambda-র নাম পরিবর্তন করে drawDragDecoration করা হয়েছে এবং DragAndDropInfo-এর সাইজ প্যারামিটারের নাম পরিবর্তন করে dragDecorationSize করা হয়েছে। (Id0e30, b/303904810)
  • ম্যাচ করা নোড দেখা যাচ্ছে কিনা তা চেক করতে SemanticsNodeInteraction.isDisplayed() ও SemanticsNodeInteraction.isNotDisplayed() যোগ করুন, তবে সেটির উপর জোর দেবেন না। (I2c196, b/302100809)
  • null-এর পরিবর্তে ParagraphTextStyle-এর TextAlign, TextDirection, Hyphens ও LineBreak ফিল্ডের জন্য একটি বিশেষ Unspecified ভ্যালু যোগ করা হয়েছে। এইসব ক্লাস ইনলাইন ক্লাস হওয়ার কারণে, নাল মানকে Unspecified মান দিয়ে পরিবর্তন করার মাধ্যমে আমরা আদিম টাইপ বক্সিং এড়াতে পারি। TextStyle এবং প্যারাগ্রাফ স্টাইলে কনস্ট্রাক্টর, গেটার ও অন্যান্য পদ্ধতি আপডেট করা হয়েছে যাতে উল্লেখ করা প্যারামিটারগুলিকে নন-নাল টাইপ হিসেবে গ্রহণ করা যায়। (I4197e, b/299490814)
  • XML থেকে GoogleFont পড়ার জন্য GoogleFont ওভারলোড যোগ করুন। (If8f59)
  • LoremIpsum PreviewParameterProvider একটি ওপেন ক্লাস তৈরি করা হয়েছে। (I41bf5, b/266918816, b/300116360)

সমস্যার সমাধান

  • FontFamilyResolver এখন ক্যাশে ম্যানেজমেন্ট কোরাউটিনের জন্য Dispatchers.Main ব্যবহার করে। (Ie8dd9)
  • AndroidViewBinding এখন Fragment ইনস্ট্যান্স সিঙ্ক্রোনাসভাবে সরিয়ে দেয়, যা commitNow ব্যবহার করে (আগে ব্যবহৃত commit-এর পরিবর্তে) onRelease-এর অংশ হিসেবে আপনার লেআউটে FragmentContainerView অন্তর্ভুক্ত করার মাধ্যমে ইনফলেটেড হয়। এর ফলে, পরিবর্তন করার পরে কম্পোজিশন রিপ্লেস করার মাধ্যমে Live Edit-এর পদ্ধতি সংক্রান্ত সমস্যার সমাধান হয়। (I58fbf)

ভার্সন 1.6.0-alpha07

৪ অক্টোবর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha07 রিলিজ করা হয়েছে। 1.6.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • কাস্টম টেক্সট এডিটরের জন্য টেস্ট লেখার PlatformTextInputMethodTestOverride চালু করা হয়েছে। (Id159b)
  • ড্র্যাগ অ্যান্ড ড্রপ সেশন শুরু করার জন্য dragAndDropSource মডিফায়ার এবং ড্র্যাগ অ্যান্ড ড্রপ সেশন থেকে পাওয়ার জন্য dragAndDropTarget মডিফায়ার যোগ করে। (Ib7828, b/286038936)
  • অ্যালোকেশন এড়িয়ে যাওয়া ColorList ও ColorSet সংগ্রহ যোগ করা হয়েছে। (I744bd)
  • নন-লিনিয়ার ফন্ট স্কেলিং বন্ধ করতে DisableNonLinearFontScalingInCompose অস্থায়ী ফ্ল্যাগ যোগ করা হয়েছে। পরিষ্কার করার জন্য সময় প্রয়োজন হলে, আপনার পরীক্ষায় DisableNonLinearFontScalingInCompose = true সেট করুন। Compose 1.6.0-beta01 ভার্সনে এই ফ্ল্যাগ সরিয়ে দেওয়া হবে। (Ic9486)

সমস্যার সমাধান

  • অপ্টিমাইজ করা XML ভেক্টর ড্রয়েবল পার্সিং। (Ibb015)

ভার্সন 1.6.0-alpha06

২০ সেপ্টেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha06 রিলিজ করা হয়েছে। 1.6.0-alpha06 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • Material আইকনে অতিরিক্ত অপ্টিমাইজেশন। (I3e08d)
  • একই ধরনের নোড খুঁজে পেতে মডিফায়ার ট্রি উপরে/নিচে ট্রাভার্স করার ক্ষমতা যোগ করে। (I2d234)
  • focusRestorer() মডিফায়ারে onRestoreFailed() কলব্যাক যোগ করা হয়েছে (Ie1d43)
  • ColorInt, FloatRange, IntRange, Size ও আরও অনেক কিছু নির্দিষ্ট করতে বিভিন্ন গ্রাফিক্স API-তে androidx অ্যানোটেশন যোগ করা হয়েছে। (Id65c8, b/290950582)
  • PreviewScreenSizes সংজ্ঞায় showSystemUi=true যোগ করুন (Ib61d3)

আচরণে পরিবর্তন

  • আরও ভালভাবে পড়া ও অ্যাক্সেস করার জন্য Compose এখন নন-লিনিয়ার ফন্ট স্কেলিং ব্যবহার করে। সিস্টেম সেটিংসে ফন্ট স্কেল > ১০০% হলে, ছোট টেক্সটের সাইজ স্বাভাবিকভাবে বাড়বে, কিন্তু আগে থেকেই বড় টেক্সটের সাইজ সামান্যই বাড়বে। এছাড়াও, SP-তে নির্দিষ্ট করা লাইন হাইট অটোমেটিক অ্যাডজাস্ট হয়ে যায় যাতে তা ১০০% স্কেলে প্রত্যাশিত হাইটের সাথে সমানুপাতিক থাকে। আরও তথ্যের জন্য ফন্ট স্কেলিং পেশাদার পদ্ধতি দেখুন। (I11518)

ভার্সন 1.6.0-alpha05

৬ সেপ্টেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha05 রিলিজ করা হয়েছে। 1.6.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • AndroidComposeViewAccessibilityDelegateCompat-এ কন্টেন্ট ক্যাপচার করার সুবিধা চালু করুন। (Ib2969)
  • ScrollView ও RecyclerView-এর মতো ভিউ কম্পোনেন্টে ফ্লিং ভেলোসিটি ViewConfiguration.ScaledMaximumFlingVelocity-এ সীমাবদ্ধ থাকে। Compose-এ এখন maximumFlingVelocity-এর নিজস্ব ভার্সন আছে যা এখন Draggable-এ প্রযোজ্য। (Ibf974)
  • প্ল্যাটফর্ম ড্র্যাগ অ্যান্ড ড্রপ API-কে সাপোর্ট করার জন্য প্রাথমিক স্ক্যাফোল্ডিং যোগ করে। (If84ce)
  • RotaryScrollEvent-এ deviceId যোগ করুন (Iba3bf)
  • নতুন ডিভাইস (Ib25b4) অন্তর্ভুক্ত করতে ui-tooling Devices API আপডেট করা হয়েছে

ভার্সন 1.6.0-alpha04

২৩ আগস্ট, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha04 রিলিজ করা হয়েছে। 1.6.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ReusableComposition ডিঅ্যাক্টিভেট করার একটি পদ্ধতি যোগ করা হয়েছে, এর ফলে অবজার্ভেশন সরিয়ে দেওয়া হবে কিন্তু নোডগুলি একই জায়গায় থাকবে। setContent কল করে বন্ধ করা কম্পোজিশন আবার চালু করা যেতে পারে। (Ib7f31)
  • সাবকম্পোজিশনের লাইফসাইকেল ম্যানেজ করা ও সেগুলি আবার ব্যবহার করার জন্য ReusableComposition ইন্টারফেস যোগ করুন। (I812d1, b/252846775)
  • Modifier.focusGroup-কে স্টেবল API হিসেবে প্রোমোট করা হয়েছে। (I7ffa3)
  • ColorInt, FloatRange, IntRange, Size ও আরও অনেক কিছু নির্দিষ্ট করতে বিভিন্ন গ্রাফিক্স API-তে androidx অ্যানোটেশন যোগ করা হয়েছে। (I70487, b/290950582)
  • প্যারামিটার আরও ভালভাবে পরীক্ষা করার জন্য ColorFilter API আপডেট করা হয়েছে যাতে সাবক্লাস টাইপ নির্দিষ্ট করা যায়। (I5fe29)
  • UI প্রিভিউয়ের জন্য ব্যবহার করা যেতে পারে এমন সঠিক Wear ডিভাইস তালিকাভুক্ত করতে wear-tooling-preview লাইব্রেরি যোগ করা হয়েছে (Ib036e)
  • FontScalable ইন্টারফেস তৈরি করা হয়েছে যা ডেনসিটি ইন্টারফেসের ফন্ট স্কেলিং অংশ ম্যানেজ করে। (I2cf3f)

ভার্সন 1.6.0-alpha03

৯ আগস্ট, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha03 রিলিজ করা হয়েছে। 1.6.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • নতুন ধরনের প্রবেশ/প্রস্থান ট্রানজিশন যা প্রবেশ ও প্রস্থান অ্যানিমেশনের সময় অ্যানিমেটিং কন্টেনারের সাইজের উপর ভিত্তি করে কন্টেন্ট স্কেল করে। LookaheadScope কম্পোজ করার উপযুক্ত মজা ও ইন্টারফেস এখন স্টেবল। (Ifb2ce)
  • privateImeOptions কনফিগার করার জন্য সহায়তা যোগ করা হয়েছে (Idb772)

সমস্যার সমাধান

  • PopupPositionProvider.calculatePosition এখন গণনাতে রিড করা স্টেট পরিবর্তন করা হলে পপ-আপের পজিশন অটোমেটিক আপডেট করবে। (I676a1, b/292257547)
  • readOnly সঠিক হলে, কীবোর্ড দেখাচ্ছে এবং এডিট করা যাচ্ছে এমন টেক্সট ফিল্ড সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এছাড়াও, ফোকাস করা অবস্থায় readOnly-এর মান true থেকে false-এ পরিবর্তন করা হলে কীবোর্ড না দেখানোর সমস্যা সমাধান করা হয়েছে। (I34a19, b/246909589)
  • UI টেস্টিংয়ে গ্লোবাল অ্যাসারশনের প্রয়োগের পরিধি বাড়ানো হয়েছে। (I1f90d)

ভার্সন 1.6.0-alpha02

২৬ জুলাই, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha02 রিলিজ করা হয়েছে। 1.6.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • একটি পরিষেবা লোকেটর ইন্টারফেস যোগ করা হয়েছে যা কম্পোজিশনের প্রয়োগকারীরা প্রয়োগ করতে পারেন। এটি কম্পোজিশনের প্রয়োগের অনুমতি দেয় যা আসল কম্পোজিশনের কাছে অন্য কম্পোজিশন ডেলিগেট পরিষেবা লুক-আপ ডেলিগেট করে। এটি সরাসরি কল করা উচিত নয় এবং রানটাইমে পরীক্ষামূলক API তৈরি করার জন্য ব্যবহৃত হয় যা UI মডিউলের মতো কম্পোজারের র‍্যাপ করা ভার্সন থেকে পাওয়া যেতে পারে। (I296b9)
  • সম্পূর্ণ নতুন ডিজাইন করা PlatformTextInput* API. (I6c93a, b/274661182, b/267235947, b/277380808)
  • SoftwareKeyboardController ও LocalSoftwareKeyboardController আর পরীক্ষামূলক নয়। LocalSoftwareKeyboardController এখন একটি উপযুক্ত CompositionLocal। (I4c364)
  • LookaheadLayout ও LookaheadLayoutScope কিছু রিলিজের জন্য বন্ধ করা হয়েছে এবং এখন সরিয়ে দেওয়া হয়েছে। রিপ্লেসমেন্ট API হল LookaheadScope যা যেকোনও লেআউটের সাথে কাজ করতে পারে। (I12ac3)
  • পরীক্ষায় ফোকাস করার অনুরোধ জানানোর আরও সুবিধাজনক ও খুঁজে পাওয়ার উপযুক্ত উপায় হিসেবে SemanticsNodeInteraction.requestFocus যোগ করা হয়েছে। (Ie8722)
  • ভবিষ্যতে টেস্টিং ফ্রেমওয়ার্কের ব্যবহারের জন্য গ্লোবাল অ্যাসার্শন রেজিস্টার করতে পরীক্ষামূলক API যোগ করুন। (I12d77)

সমস্যার সমাধান

  • AndroidView's update কলব্যাকের প্রথম ইনভোকেশন এখন ভিউ অ্যাটাচ না হওয়া পর্যন্ত ডিফার করা হবে, AndroidView প্রয়োগ করা কম্পোজিশন প্রয়োগ করার সময় এটি রান করার পরিবর্তে। এটি এমন একটি সমস্যার সমাধান করে যেখানে update কলব্যাক বাতিল করা হত না যদি কোনও এফেক্ট দ্বারা অবিলম্বে এর পড়া একটি স্টেট পরিবর্তন করা হত। (Ie9438, b/291094055)

ভার্সন 1.6.0-alpha01

২১ জুন, ২০২৩

androidx.compose.ui:ui-*:1.6.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.6.0-alpha01-এ এইসব কমিট আছে।

নতুন ফিচার

  • LazyList-এ লুক-এহেড কাজ করে। এটি LazyList-কে লুকঅ্যাহেড পাসে যেকোনও অ্যানিমেশন (যেমন, আইটেম প্লেসমেন্ট অ্যানিমেশন, AnimatedVisibility, ইত্যাদি) বাইপাস করতে এবং সব চিলড্রেনের জন্য লুকঅ্যাহেড সাইজ ও পজিশন গণনা করতে দেয়। লুকঅহেড পাসের পরে, LazyList বয়সের বাচ্চারা লুকঅহেড পাসে দেখানো বাস্তবতার সাথে সামঞ্জস্য রেখে স্বাধীনভাবে অ্যানিমেট করতে পারে।

আচরণগত পরিবর্তন: Compose-এ includeFontPadding এখন ডিফল্ট হিসেবে false থাকে

কম্পোজে includeFontPadding এখন ডিফল্ট হিসেবে false (21d806) সেট করা থাকে।

includeFontPadding হল একটি লিগ্যাসি অ্যাট্রিবিউট যা টেক্সটের প্রথম ও শেষ লাইনের উপরে অতিরিক্ত প্যাডিং যোগ করা হবে কিনা তা নিয়ন্ত্রণ করে। এটি এমন কোনও অক্ষরকে জায়গা করে দেয় যা টেক্সট বেসলাইনের উপরে বা নিচে প্রসারিত হতে পারে।

এই 'কম্পোজ' ভার্সন আপডেট করলে, আপনার UI-তে সব টেক্সট কীভাবে রেন্ডার করা হয় তা পরিবর্তন করা হবে। এর জন্য, আপনার দেখানো প্রতিটি টেক্সটের প্রথম ও শেষ লাইনের উপরে থাকা অতিরিক্ত প্যাডিং সরিয়ে দেওয়া হবে।

আপনার UI সংক্রান্ত প্রয়োজনীয়তা এবং আপনি যে ফন্ট মেট্রিক্স ব্যবহার করছেন তার উপর নির্ভর করে, পরিবর্তনগুলি ন্যূনতম হওয়া উচিত। তবে, আপনি এগুলির মতো ব্লকার দেখতে পেতে পারেন: - স্ক্রিনশট টেস্ট কাজ করছে না। প্রয়োজন হলে UI সংক্রান্ত সমস্যার সমাধান করুন এবং গোল্ডেন ছবি আবার তৈরি করুন। - টেক্সট সামান্য মিসঅ্যালাইন করা হয়েছে। কাস্টম নেগেটিভ প্যাডিং সরিয়ে দিন অথবা প্রয়োজন হলে প্যাডিং যোগ করুন।

আপনি প্রতিটি টেক্সটের জন্য PlatformTextStyle ব্যবহার করে includeFontPadding-এ অপ্ট-ইন করতে পারবেন:

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

আপনার মেটেরিয়াল স্টাইল কনফিগার করে, আপনার সব টেক্সটের জন্য includeFontPadding চালু করতে পারবেন। মনে রাখবেন, M2 ও M3-এর মধ্যে প্যারামিটারের নাম আলাদা আলাদা হবে।

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

MaterialTheme(
   typography = Typography,
   /* … */
)

আপনি ডেভেলপার ডকুমেন্টেশন ও এই ব্লগ পোস্ট থেকে Compose includeFontPadding সম্পর্কে আরও জানতে পারবেন।

এই পরিবর্তনের সাথে সম্পর্কিত কোনও সমস্যা/বাগ দেখতে পেলে, ইস্যু ট্র্যাকার ব্যবহার করে বাগ ফাইল করুন।

API-তে পরিবর্তন

  • সহায়তা InputConnection#requestCursorUpdates (I0c69b)
  • FocusRequester.saveFocusedChild ও FocusRequester.restoreFocusedChild যোগ করা হয়েছে (Ic557e, b/272302679, b/275157318)
  • ResourceResolutionException টাইপ যোগ করুন যাতে লোড করা যায়নি এমন অ্যাসেট পাথের বিবরণ সহ বিটম্যাপ অ্যাসেট লোড করার চেষ্টা করার সময় থ্রোয়েবল র‍্যাপ করা যায়। (I19f44, b/230166331, b/278424788)
  • পারফর্ম্যান্স ও মেমরি অ্যালোকেশনের জন্য অপ্টিমাইজ করা অ্যাক্সেসিবিলিটি। (Iede48)
  • টেক্সট অনুবাদ করার জন্য শব্দার্থ সংক্রান্ত প্রপার্টি ও অ্যাকশন যোগ করা হয়েছে। (I4a6bc)
  • IntrinsincMeasureScope-এ নতুন প্রপার্টি ও এর প্রয়োগ (যেমন, MeasureScope) যাতে বোঝা যায় যে বর্তমান পরিমাপ করা পাসটি লুকঅহেড পাস কিনা। (I7a812)
  • DrawScope API আপডেট করা হয়েছে, এর ফলে বিকল্প ডেনসিটি/লেআউট ডিরেকশন ও সাইজ সহ অন্য ক্যানভাসে রেন্ডারিং আবার টার্গেট করার সুবিধা পাওয়া যাবে।
  • ক্যানভাস কনফিগার করার পাশাপাশি ডেনসিটি ও লেআউট ডিরেকশন কনফিগার করার সুবিধা দিতে DrawContext আপডেট করা হয়েছে। (Ie1f9b, b/225408150)
  • অক্ষরের বাউন্ডিং বক্স গণনা করতে Paragraph#fillBoundingBoxes যোগ করা হয়েছে। (If30ee)
  • সাধারণ MultiPreviews-এর (Ia5a27) একটি সেট যোগ করা হয়েছে

সমস্যার সমাধান

  • কাস্টম FocusTarget তৈরি করতে ব্যবহার করা যায় এমন FocusTargetModifierNode ইন্টারফেস যোগ করা হয়েছে। (I9790e)
  • TextMeasurer কনস্ট্রাক্টরের fallback* প্যারামিটারের নাম পরিবর্তন করে default* করা হয়েছে। (I940a5)
  • SemanticsPropertyReceiver.performImeAction-এর নাম পরিবর্তন করে onImeAction এবং SemanticsActions.PerformImeAction-এর নাম পরিবর্তন করে OnImeAction করা হয়েছে। (I8e841)
  • নেস্টেড স্ক্রলিংয়ে (বিশেষত, NestedScrollConnection-এ) মাউস স্ক্রল ও ড্র্যাগ করার মধ্যে পার্থক্য করতে হুইল যোগ করে। (Ie57e4)
  • রিটার্ন করা অবজেক্ট আসল android.graphics.Paint (I22b4c) র‍্যাপ করে বলে toComposePaint-এর পরিবর্তে asComposePaint API যোগ করা হয়েছে
  • SemanticsProperties.imeAction বাতিল করুন এবং SemanticsActions.performImeAction-এর জন্য নতুন প্যারামিটার দিয়ে পরিবর্তন করুন। (I4a587)
  • মাউসের মাধ্যমে বেছে নেওয়ার সুবিধা যোগ করা হয়েছে। টাচ-ভিত্তিক বেছে নেওয়ার ক্ষেত্রে, একটি শব্দ যোগ করে বেছে নেওয়ার পরিধি বাড়ানো হবে এবং একটি অক্ষর বাদ দিয়ে বেছে নেওয়ার পরিধি কমানো হবে। (Ic0c6c, b/180639271)
  • Paragraph পদ্ধতি যা আউট-অফ-বাউন্ডস অফসেটের জন্য AssertionError থ্রো করত, এখন IllegalArgumentException থ্রো করে কারণ MultiParagraph তাই করে। (I549d3, b/243338896)

ভার্সন 1.5

ভার্সন 1.5.4

১৮ অক্টোবর, ২০২৩

androidx.compose.ui:ui-*:1.5.4 রিলিজ করা হয়েছে। 1.5.4 ভার্সনে এইসব কমিট আছে।

ভার্সন 1.5.3

৪ অক্টোবর, ২০২৩

androidx.compose.ui:ui-*:1.5.3 রিলিজ করা হয়েছে। 1.5.3 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • (b/301209788) TextField কখনও কখনও ফোকাস করা এবং কোরিয়ান ইনপুট দেওয়ার সময় ভুলভাবে আগের কমান্ড প্রয়োগ করত, যার ফলে অক্ষর হারিয়ে যেত।

ভার্সন 1.5.2

২৭ সেপ্টেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.5.2 রিলিজ করা হয়েছে। ভার্সন 1.5.2-এ এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ব্যাকগ্রাউন্ড থ্রেড থেকে অ্যাক্সেসিবিলিটি স্ক্রল API অ্যাক্সেস করা হলে ক্র্যাশ হওয়ার সমস্যা সমাধানের জন্য ওয়ার্কঅ্যারাউন্ড যোগ করা হয়েছে।
  • সিমান্টিক ট্রি-তে যোগ করা অ্যাটাচ না করা নোড সংক্রান্ত সমস্যার সমাধান করুন।

ভার্সন 1.5.1

৬ সেপ্টেম্বর, ২০২৩

androidx.compose.ui:ui-*:1.5.1 রিলিজ করা হয়েছে। 1.5.1 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • readOnly সঠিক হলে, কীবোর্ড দেখাচ্ছে এবং এডিট করা যাচ্ছে এমন টেক্সট ফিল্ড সংক্রান্ত সমস্যার সমাধান করা হয়েছে। এছাড়াও, ফোকাস করা অবস্থায় readOnly-এর মান true থেকে false-এ পরিবর্তন করা হলে কীবোর্ড না দেখানোর সমস্যা সমাধান করা হয়েছে। (I34a19, b/246909589)

ভার্সন 1.5.0

৯ আগস্ট, ২০২৩

androidx.compose.ui:ui-*:1.5.0 রিলিজ করা হয়েছে। 1.5.0 ভার্সনে এইসব কমিট আছে।

ভার্সন 1.5.0-rc01

২৬ জুলাই, ২০২৩

androidx.compose.ui:ui-*:1.5.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.5.0-rc01-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • movableContentOf()-এর মধ্যে SubcomposeLayout ব্যবহার করলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে।

ভার্সন 1.5.0-beta03

২৮ জুন, ২০২৩

androidx.compose.ui:ui-*:1.5.0-beta03 রিলিজ করা হয়েছে। 1.5.0-beta03 ভার্সনে এইসব কমিট আছে।

সমস্যার সমাধান

  • কাস্টম FocusTarget তৈরি করতে ব্যবহার করা যেতে পারে এমন FocusTargetModifierNode ইন্টারফেস যোগ করা হয়েছে। (Ifb1d6)
  • Dialog ও Popup composables-এর একটি সমস্যার সমাধান করা হয়েছে, যার ফলে usePlatformDefaultWidth=true ব্যবহার করার সময় চাইল্ড উইন্ডো প্রত্যাশিত সাইজে রিসাইজ নাও হতে পারে। (I112ee)

ভার্সন 1.5.0-beta02

৭ জুন, ২০২৩

androidx.compose.ui:ui-*:1.5.0-beta02 রিলিজ করা হয়েছে। 1.5.0-beta02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • Compose-এ ব্যবহার করার জন্য android.graphics.Paint ইনস্ট্যান্সের ব্যবহার চালু করতে asComposePaint API যোগ করা হয়েছে

সমস্যার সমাধান

  • রিটার্ন করা অবজেক্ট আসল android.graphics.Paint (I22b4c) র‍্যাপ করে বলে toComposePaint-এর পরিবর্তে asComposePaint API যোগ করা হয়েছে

ভার্সন 1.5.0-beta01

২৪ মে, ২০২৩

androidx.compose.ui:ui-*:1.5.0-beta01 রিলিজ করা হয়েছে। 1.5.0-beta01 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • রিকম্পোজিশন, কালার অ্যানিমেশন ও AndroidComposeView (Ib2bfa) থেকে অ্যালোকেশন সরানো হয়েছে
  • প্রতিনিধিত্ব করার অনুমতি দিতে (Icf8f9) সাহায্যকারী ফাংশন CacheDrawModifierNode() যোগ করে
  • isLookingAhead প্রপার্টি চালু করা হচ্ছে, MeasureScope থেকে অ্যাক্সেস করা যাবে, এর মাধ্যমে লুক-এহেড ফলাফল দেখা যাবে এবং চাইলে মূল পাসকে প্রভাবিত করা যাবে। (Ibf4c3)
  • নতুন সিম্যান্টিক্স প্রপার্টি traversalIndex, TalkBack ট্রাভার্সালে নোডগুলির ক্রম পরিবর্তন করতে ব্যবহৃত একটি ফ্লোট (কম মানগুলি আগে আসে)। (I9a81b, b/186443263)
  • Semantics প্রপার্টির নাম পরিবর্তন করে isContainer থেকে isTraversalGroup করা হয়েছে (I121f6)
  • ColorProducer-এর কাছে এখন produce-এর পরিবর্তে operator fun invoke আছে (I4a9a2)
  • পাথ অবজেক্টে ট্রান্সলেশন/স্কেল/রোটেশন ট্রান্সফর্মেশন প্রয়োগ করতে Path ট্রান্সফর্ম API যোগ করুন। (I23434, b/233772232)
  • ColorProducer-এর পদ্ধতিকে produce বলা হয়। (I78bde)
  • toFrameworkColorSpace-এর নাম পরিবর্তন করে toAndroidColorSpace করুন (I4f547)
  • ColorLambda-এর নাম পরিবর্তন করে ColorProducer করুন। (I73b1a)
  • Android ও Compose কালারস্পেসের ধরনের মধ্যে কনভার্ট করার জন্য API নিয়ে আসা। (Ie7db4, b/279979665)
  • টেক্সটের রঙ অ্যানিমেট বা সেট করার জন্য BasicText-এ কালার প্যারামিটার যোগ করা হয়েছে। (Iffd88, b/246961787)
  • TextRange.constrain-এর নাম পরিবর্তন করে TextRange.coerceIn করা হয়েছে। (I31be2)
  • সম্পূর্ণ প্যারামিটার তালিকা সহ অপ্টিমাইজ করা TextStyle.merge(...) যোগ করা হয়েছে। (Iad234, b/246961787)
  • Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) সহ অনেক টেক্সট API স্থিতিশীল করা হয়েছে। (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding আর বন্ধ করা নেই। আমাদের মূল উদ্দেশ্য ছিল ফিল্ডটি সরিয়ে দেওয়া, তবে মতামত থেকে দেখা যাচ্ছে যে ডেভেলপারদের এই কনফিগারেশন বিকল্পের প্রয়োজন। তাই ফিল্ড থেকে ডেপ্রিকেশন সরানো হচ্ছে (I98e96, b/277703184)
  • পাবলিক TextRange.constrain পদ্ধতি যোগ করা হয়েছে। (I97912)
  • AnnotatedString-এর মধ্যে থাকা UrlAnnotation এখন TalkBack-এর মতো অ্যাক্সেসিবিলিটি পরিষেবার মাধ্যমে খোলা যেতে পারে। (If4d82, b/253292081)
  • টেক্সট ফিল্ডের জন্য InsertTextAtCursor সিম্যান্টিক্স অ্যাকশন যোগ করা হয়েছে। (I11ed5)
  • LineHeightStyle.Alignment(topRatio) কনস্ট্রাক্টরকে স্টেবল API হিসেবে প্রোমোট করা হয়েছে। (I79c32, b/261565383)
  • TextMeasurer ও সংশ্লিষ্ট API আর পরীক্ষামূলক নয়। (I74647, b/261581753)
  • টেক্সট এডিটর নোডে IME অ্যাকশন ইনভোক করতে PerformImeAction সিম্যান্টিক্স অ্যাকশন যোগ করা হয়েছে। (Ic606f, b/269633506)
  • PlatformTextInput API আর Android-এর জন্য পরীক্ষামূলক নয়। (I668eb)
  • Enum.valueOf-এর জন্য ভ্যালু প্যারামিটারের নাম পরিবর্তন করা হয়েছে (Ia9b89)
  • enum valueOf (I818fe) থেকে আরও বেশি ব্যতিক্রম
  • PlatformTextInputAdapter কাস্টম টেক্সট ইনপুট ইমপ্লিমেন্টেশন তৈরি করার জন্য নতুন লো-লেভেল API চালু করা হয়েছে যা সরাসরি প্ল্যাটফর্ম API-এর সাথে যোগাযোগ করে। (I58df4)
  • Canvas-এ টেক্সট ড্র করার সময় বিভিন্ন ব্লেন্ডিং অ্যালগরিদম কাজ করানোর জন্য DrawScope.drawText, Paragraph.paint ও MultiParagraph.paint পদ্ধতিতে BlendMode প্যারামিটার যোগ করা হয়েছে। (I57508)
  • Font.MaximumAsyncTimeout-এর নাম পরিবর্তন করে Font.MaximumAsyncTimeoutMillis করুন। শুধুমাত্র নাম পরিবর্তন করুন। (I07af5)
  • @Preview রেফারেন্স ডিভাইসের (Id6151, b/254528382) আপডেট করা DPI ভ্যালু
  • BasicText-এ brush, alpha প্যারামিটার যোগ করে টেক্সট ব্রাশকে দক্ষতার সাথে অ্যানিমেট বা সেট করার অনুমতি দিন।
  • :ui:ui-unit-এ Float, Double, Long, Int, Short-এর জন্য বক্স-ফ্রি ল্যাম্বডা টাইপ নির্ধারণ করুন (I6f18d, b/246961787)

সমস্যার সমাধান

  • পয়েন্টার ভেলোসিটি ট্র্যাকিংয়ে একাধিক অ্যালোকেশন সরানো হয়েছে (I26bae)
  • লেআউট ও পয়েন্টার ইনপুট ম্যানেজমেন্টে কমে যাওয়া অ্যালোকেশন (I5333a)
  • ভেক্টর মেমরি ব্যবহার ও ফার্স্ট-ফ্রেম রেন্ডারিং অপ্টিমাইজ করা (I2f3c6)
  • Canvas-এর মাধ্যমে লাইন ও পয়েন্ট আঁকার সময় সরিয়ে দেওয়া অ্যালোকেশন (I9f535)
  • AndroidFont.fontVariationSettings-এর জন্য ডকুমেন্ট যোগ করো (I7d9e2)

এক্সটার্নাল কন্ট্রিবিউশন

  • Vector API-তে উন্নত পারফর্ম্যান্স ও কমে যাওয়া অ্যালোকেশন (I906cb)

ভার্সন 1.5.0-alpha04

১০ মে, ২০২৩

androidx.compose.ui:ui-*:1.5.0-alpha04 রিলিজ করা হয়েছে। 1.5.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • Modifier.Node ডেলিগেশন সংক্রান্ত উন্নতি DelegatingNode থেকে অন্যান্য Modifier.Node ইনস্ট্যান্সে ডেলিগেট করার উন্নত ক্ষমতা যোগ করা হয়েছে। delegate ও undelegate API-এর মাধ্যমে এটি করা যেতে পারে। এই পরিবর্তনের আগে, ডেলিগেটিং নোডের প্রতিটি API-কে ডেলিগেটেড নোডে স্পষ্টভাবে ডেলিগেট করতে হত। এই পরিবর্তনের পরে, নোড ইন্টারফেসগুলি পরোক্ষভাবে ডেলিগেট করা হবে, যদি না DelegatingNode স্পষ্টভাবে সেগুলি ওভাররাইড করে। (67352bc)

API-তে পরিবর্তন

  • NestedScrollModifierNode-এর ব্যাপারে জানুন, এটি এমন একটি NestedScroll Modifier.Node যাকে দায়িত্ব দেওয়া যায়। (I69513)
  • AndroidViewBinding কম্পোজ করার উপযুক্ত আইটেমে onReset ও onRelease প্যারামিটার যোগ করা হয়েছে, যা AndroidView কম্পোজ করার উপযুক্ত আইটেমের মতো কাজ করে এবং ViewBinding-এর সাথে ভিউ আবার ব্যবহার করার সুবিধা চালু করে। (I00b1e, b/276802519)
  • দ্রুত আবার ব্যবহার করার জন্য ঘন ঘন পাথ ম্যানিপুলেশন সংক্রান্ত ব্যবহারের ক্ষেত্রে সহায়তা করতে, রিওয়াইন্ড অপারেশনকে সহায়তা করার জন্য কম্পোজ পাথ API আপডেট করা হয়েছে। (I7b797)
  • সম্পূর্ণ প্যারামিটার তালিকা সহ অপ্টিমাইজ করা TextStyle.merge(...) যোগ করা হয়েছে। (Iad234, b/246961787)
  • Brush, DrawStyle, TextMotion, DrawScope.drawText, Paragraph.paint(Brush), MultiParagraph.paint(Brush) সহ অনেক টেক্সট API স্থিতিশীল করা হয়েছে। (I2f740, b/261581564, b/261581931, b/261561245)
  • PlatformTextStyle.includeFontPadding আর বন্ধ করা নেই। আমাদের মূল উদ্দেশ্য ছিল ফিল্ডটি সরিয়ে দেওয়া, তবে মতামত থেকে দেখা যাচ্ছে যে ডেভেলপারদের এই কনফিগারেশন বিকল্পের প্রয়োজন। তাই ফিল্ড থেকে ডেপ্রিকেশন সরানো হচ্ছে (I98e96, b/277703184)

সমস্যার সমাধান

  • Dialog কম্পোজ করার মাধ্যমে তৈরি করা হয়নি এমন ডায়ালগের মধ্যে থাকা টেক্সট ফিল্ডের জন্য কীবোর্ড না দেখানোর রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I82551, b/262140644)

ভার্সন 1.5.0-alpha03

১৯ এপ্রিল, ২০২৩

androidx.compose.ui:ui-*:1.5.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.5.0-alpha03-এ এইসব কমিট রয়েছে।

নতুন ফিচার

  • LookaheadScope-এ SubcomposeLayout-এর নতুন ডিফল্ট আচরণ: SubcomposeLayouts-এ কন্ডিশনাল স্লট (যেমন, TabRow, Scaffold, BoxWithConstraints, ইত্যাদি) না থাকলে, সেগুলি এখন লুকঅহেড অ্যানিমেশনের সাথে ভালভাবে কাজ করে।

API-তে পরিবর্তন

  • নতুন ডিফল্ট intermediateMeasurePolicy যা লুকঅহেড পাস থেকে পরিমাপ নীতি আবার ব্যবহার করে, তা Scaffold, TabRow ও BoxWithConstraints-এর মতো কন্ডিশনাল স্লট ছাড়া SubcomposeLayout সাবটাইপকে ডিফল্ট হিসেবে লুকঅহেডের সাথে কাজ করতে দেয়। (Id84c8)
  • Android উইন্ডোর জন্য তৈরি রিকম্পোজার এখন ON_STOP বিজ্ঞপ্তি পেলে, সব কম্পোজিশনের পরিবর্তে শুধুমাত্র withFrameNanos-এ কল ব্লক করবে। এর অর্থ হল, বন্ধ করা অ্যাক্টিভিটির সাথে যুক্ত উইন্ডো ডেটা পরিবর্তনের জন্য আবার কম্পোজ করা চালিয়ে যাবে, কিন্তু অ্যানিমেশন বা withFrameNanos-এর অন্য কোনও কলার ব্লক হয়ে যাবে। (Id9e7f, b/240975572)
  • স্টেবল ভার্সনে motionEventSpy পরিবর্তন। (Ic5ec4, b/261560988)
  • পাবলিক TextRange.constrain পদ্ধতি যোগ করা হয়েছে। (I97912)
  • PlatformTextStyle.includeFontPadding আর অবহেলিত নয়, যাতে ডেভেলপাররা এই কম্প্যাটিবিলিটি API ব্যবহার করে includeFontPadding false সেটিংয়ে পরিবর্তন করতে ও পরীক্ষা করতে পারেন। (I98e96, b/277703184)

ভার্সন 1.5.0-alpha02

৫ এপ্রিল, ২০২৩

androidx.compose.ui:ui-*:1.5.0-alpha02 রিলিজ করা হয়েছে। 1.5.0-alpha02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • লুক-এহেড-ভিত্তিক অ্যানিমেশন চলাকালীন পরিমাপ/লেআউট লজিক হ্যান্ডেল করার জন্য অতিরিক্ত মধ্যবর্তী ব্যবস্থা সংক্রান্ত নীতি গ্রহণ করে এমন নতুন SubcomposeLayout API। (I017d3)
  • PointerInput এখন অলস এবং আরও ভাল পারফর্ম্যান্সের জন্য Modifier.Node ব্যবহার করে (আচরণের সামান্য পরিবর্তন সম্পর্কে পড়ুন)। (15dab9)
  • কী ইভেন্টের মাধ্যমে পরীক্ষামূলক API-কে স্থিতিশীল API-তে পরিবর্তন করে। (I9c7d8, b/261566839, b/261567368)
  • PointerInputChange-এ পরীক্ষামূলক API পরিবর্তন করে স্থিতিশীল করা হয়েছে। (I1b543, b/261560988, b/261565762, b/261565749)
  • আরও জটিল Modifier.Node প্রয়োগের জন্য SuspendingPointerInputModifierNode ইনস্ট্যানশিয়েট করার একটি উপায় যোগ করে। (Ic4933)
  • AnnotatedString-এর মধ্যে থাকা UrlAnnotation এখন TalkBack-এর মতো অ্যাক্সেসিবিলিটি পরিষেবার মাধ্যমে খোলা যেতে পারে। (If4d82, b/253292081)
  • সফ্ট কীবোর্ডে পাঠানোর আগে হার্ডওয়্যার কী ইন্টারসেপ্ট করার জন্য API যোগ করা হয়েছে (I4f4c6, b/186800395)
  • টেক্সট ফিল্ডের জন্য InsertTextAtCursor সিম্যান্টিক্স অ্যাকশন যোগ করা হয়েছে। (I11ed5)
  • টেক্সট-সম্পর্কিত টেস্ট অ্যাকশন (যেমন, performTextInput) এখন ফিল্ডে ক্লিক করার পরিবর্তে, সরাসরি ফোকাস করার অনুরোধ করবে, এর জন্য সিম্যান্টিক অ্যাকশন ব্যবহার করা হবে। (I6ed05)

সমস্যার সমাধান

  • টেক্সট টেস্ট অ্যাকশনের জন্য এখন টেক্সট ফিল্ড চালু করতে হবে। (Iab328)

ভার্সন 1.5.0-alpha01

২২ মার্চ, ২০২৩

androidx.compose.ui:ui-*:1.5.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.5.0-alpha01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Modifier.intermediateLayout-এর জন্য এখন আর স্পষ্ট LookaheadScope প্রয়োজন হয় না। intermediateLayout-এ measure ব্লকটির রিসিভার হিসেবে IntermediateMeasureScope আছে, যা সুবিধাজনক CoroutineScope, LookaheadScope ও MeasureScope প্রদান করে।(Ibe2e5)
  • LookaheadLayout-এর পরিবর্তে LookaheadScope ব্যবহার করা হয়, এটি আর Layout নয়। এর ফলে LookaheadScope-এ থাকা চাইল্ড কন্টেন্টকে সরাসরি অভিভাবকের MeasurePolicy দ্বারা নিয়ন্ত্রণ করা যায়। (Ibe2e5)
  • Modifier.Nodes-কে কোরাউটিন লঞ্চ করার অনুমতি দিতে Modifier.Node#coroutineScope যোগ করে। (I76ef9)
  • CompositionLocalConsumerModifierNode ইন্টারফেস প্রয়োগ করে Modifier.Nodes-কে CompositionLocals পড়ার অনুমতি দিন। (Ib44df)
  • প্রপার্টিতে @Deprecated ক্লাসের প্রোপাগেশন। (I882d1)

ভার্সন 1.4

ভার্সন 1.4.3

৩ মে, ২০২৩

androidx.compose.ui:ui-*:1.4.3 রিলিজ করা হয়েছে। 1.4.3 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • নির্দিষ্ট কিছু মডিফায়ারের সাথে ব্যবহার করা হলে AndroidView সঠিকভাবে লেআউট করা নাও হতে পারে এমন একটি সমস্যার সমাধান করা হয়েছে। (I4dc77, b/274797771)
  • 2D ফোকাস সার্চে একটি সমস্যার সমাধান করা হয়েছে যা DropDown মেনুকে (b/276811828) প্রভাবিত করে
  • কাস্টম ফোকাস এন্টার/এগজিট প্রপার্টিতে একটি বাগ সমাধান করা হয়েছে যা ল্যাম্বডা প্রথমবার ইনভোক করার সময় শুধুমাত্র এন্টার/এগজিট ব্লক রান করত (b/277234245)
  • ফোকাস সিস্টেমে একটি রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে যার ফলে focusProperties পড়ার সময় ক্র্যাশ হয়ে যাচ্ছিল। (b/271324781, b/274897776)

ভার্সন 1.4.2

১৯ এপ্রিল, ২০২৩

androidx.compose.ui:ui-*:1.4.2 রিলিজ করা হয়েছে। 1.4.2 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • AndroidView-এর মডিফায়ার সঠিকভাবে আবার ব্যবহার করা যেত না, যার ফলে অপ্রত্যাশিত আচরণ ও ক্র্যাশ হতে পারত, এমন একটি সমস্যার সমাধান করা হয়েছে। (Ib67ee, b/275919849)
  • Dialog কম্পোজ করার উপযুক্ত (I82551, b/262140644) এলিমেন্ট দিয়ে তৈরি করা হয়নি এমন ডায়ালগের মধ্যে থাকা টেক্সট ফিল্ডের জন্য কীবোর্ড দেখাচ্ছিল না, সেই রিগ্রেশন সংক্রান্ত সমস্যার সমাধান করা হয়েছে

ভার্সন 1.4.1

৫ এপ্রিল, ২০২৩

androidx.compose.ui:ui-*:1.4.1 রিলিজ করা হয়েছে। 1.4.1 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ParentDataModifier AndroidView-কে প্রভাবিত না করা সংক্রান্ত সমস্যার সমাধান করে (b/274797771)

ভার্সন 1.4.0

২২ মার্চ, ২০২৩

androidx.compose.ui:ui-*:1.4.0 রিলিজ করা হয়েছে। 1.4.0 ভার্সনে এই কমিটগুলি রয়েছে।

1.3.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • নতুন PinnableContainer API যোগ করা হয়েছে যা লেজি লিস্ট আইটেমকে পিন করার অনুমতি দেয়, যাতে সেগুলি স্ক্রল করে সীমার বাইরে নিয়ে যাওয়া হলে ডিসপোজ করা না হয়। যেমন, Modifier.focusable() বর্তমানে ফোকাস করা আইটেম পিন করতে এই পদ্ধতি ব্যবহার করে। (Ib8881, b/259274257, b/195049010)
  • নতুন পরীক্ষামূলক Modifier.Node API ব্যবহার করে ফোকাস সিস্টেম আবার লেখা হয়েছে। (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • সারফেসে IsContainer সিম্যান্টিক্স প্রপার্টি যোগ করা হয়েছে। এই প্রপার্টিটি পরে এমন একটি পরিবর্তনে ব্যবহার করা হবে যা সারফেসের মতো এলিমেন্টের শব্দার্থগত অর্থের উপর ভিত্তি করে ট্রাভার্সাল অর্ডার নির্ধারণ করে। (I63379)
  • নতুন অ্যাক্সেসিবিলিটি ভূমিকা DropdownList যোগ করা হয়েছে। android.widget.Spinner-এ ফোকাস করার সময় TalkBack-এর আচরণ রেপ্লিকেট করতে এটি ব্যবহার করা যেতে পারে। (I177e5, b/236159001)
  • আপনি এখন PlatformTextStyle(emojiSupportMatch) ব্যবহার করে কোনও একটি প্যারাগ্রাফের জন্য ঐচ্ছিকভাবে ইমোজি সংক্রান্ত সহায়তা প্রসেস করা বন্ধ করতে পারবেন। (Ia7100, b/139326806)
  • Android Compose UI টেস্ট এখন আইডল অবস্থায় পৌঁছানোর জন্য ফ্রেম এক্সিকিউট করার সময় (যেমন, waitForIdle-এর মাধ্যমে) প্রতিটি ফ্রেমের জন্য লেআউট পাস চালাবে। এটি লেআউট অ্যানিমেশনের আলাদা আলাদা ফ্রেমের উপর অ্যাসার্ট করা টেস্টকে প্রভাবিত করতে পারে। (I8ea08, b/222093277)
  • TextStyle-এ পরীক্ষামূলক TextMotion যোগ করা হয়েছে, যাতে টেক্সট Static(default) বা অ্যানিমেটেড হিসেবে নির্ধারণ করা যায়। অ্যানিমেশনের মাধ্যমে টেক্সট স্কেল, অনুবাদ বা রোটেট করা হলে TextMotion.Animated ব্যবহার করুন। (I24dd7)

ভার্সন 1.4.0-rc01

৮ মার্চ, ২০২৩

androidx.compose.ui:ui-*:1.4.0-rc01 রিলিজ করা হয়েছে। 1.4.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • AndroidView কম্পোজ করার উপযুক্ত ফাংশনের ওভারলোড যোগ করা হয়েছে, যা onReset param গ্রহণ করে। কম্পোজিশনে নোড বাতিল করা হলে এবং মানানসই উপায়ে আবার ব্যবহার করা হলে, এটি View ইনস্ট্যান্সকে আবার ব্যবহার করার অনুমতি দেয়। এটি বিশেষ করে ভিউয়ের LazyRows ও LazyColumns-এর জন্য উপযোগী। (I3f10d, b/230099236)
  • PlatformTextInputAdapter কাস্টম টেক্সট ইনপুট ইমপ্লিমেন্টেশন তৈরি করার জন্য নতুন লো-লেভেল API চালু করা হয়েছে যা সরাসরি প্ল্যাটফর্ম API-এর সাথে যোগাযোগ করে। (I58df4)

সমস্যার সমাধান

  • BasicTextField-এর SetText সিম্যান্টিক অ্যাকশন এখন IME আপডেট ও টেস্টিং ফাংশনের (যেমন, performTextReplacement) মতো একই কোড পাথ ব্যবহার করে টেক্সট বাফার আপডেট করবে।
  • টেক্সট টেস্টিং ফাংশন performTextClearance, performTextReplacement ও performTextSelection এখন SemanticsActions ব্যবহার করে। (I0807d, b/269633168, b/269624358)

ভার্সন 1.4.0-beta02

২২ ফেব্রুয়ারি, ২০২৩

androidx.compose.ui:ui-*:1.4.0-beta02 রিলিজ করা হয়েছে। 1.4.0-beta02 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • modifierElementOf() API সরিয়ে দেওয়া হয়েছে। এর পরিবর্তে সরাসরি ModifierNodeElement থেকে এক্সটেন্ড করুন। (I2256b)
  • Modifier.Node.onReset() নতুন কলব্যাক যোগ করা হয়েছে যা আপনাকে কিছু লোকাল স্টেট রিসেট করতে দেয় যাতে Layout আবার ব্যবহার করা হলে (যেমন, LazyColumn-এর আইটেম হিসেবে) তা সঠিকভাবে ম্যানেজ করা যায়। ফোকাস করা স্টেট সঠিকভাবে রিসেট করার জন্য FocusTargetModifierNode ঠিক করা হয়েছে। (I65495, b/265201972)
  • Canvas-এ টেক্সট ড্র করার সময় বিভিন্ন ব্লেন্ডিং অ্যালগরিদম কাজ করানোর জন্য DrawScope.drawText, Paragraph.paint ও MultiParagraph.paint পদ্ধতিতে BlendMode প্যারামিটার যোগ করা হয়েছে। (I57508)

সমস্যার সমাধান

  • অ্যাক্সেসিবিলিটি ফোকাস অর্ডার অ্যালগরিদম উন্নত করা হয়েছে, যেমন, উপরে/নিচের বারগুলি যথাক্রমে আরও বেশি করে প্রথমে/শেষে পড়া হয় (74e9c5)

ভার্সন 1.4.0-beta01

৮ ফেব্রুয়ারি, ২০২৩

androidx.compose.ui:ui-*:1.4.0-beta01 রিলিজ করা হয়েছে। 1.4.0-beta01 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • PinnableContainer.PinnedHandle.unpin()-এর নাম পরিবর্তন করে release() রাখা হয়েছে (I4667a)
  • ComposeTestRule-এ পরীক্ষামূলক API হিসেবে waitUntilNodeCount, waitUntilAtLeastOneExists, waitUntilExactlyOneExists ও waitUntilDoesNotExist যোগ করা হয়েছে, এর ফলে waitUntil API-কে আরও উন্নত করা হয়েছে যাতে এটি যেকোনও ম্যাচ করা এবং নোডের যেকোনও সংখ্যা গ্রহণ করতে পারে। আরও ডকুমেন্টেশনের জন্য ComposeTestRule দেখুন। (Ifa1b9, b/226934294)
  • Font.MaximumAsyncTimeout-এর নাম পরিবর্তন করে Font.MaximumAsyncTimeoutMillis করুন। (I07af5)
  • GoogleFont.Provider.AllFontsListUri সরানো হয়েছে এবং এর পরিবর্তে ktdoc-এ লিঙ্ক করা হয়েছে। (I16f29)

সমস্যার সমাধান

  • AndroidFont.fontVariationSettings-এর জন্য ডকুমেন্ট যোগ করো (I7d9e2)

ভার্সন 1.4.0-alpha05

২৫ জানুয়ারি, ২০২৩

androidx.compose.ui:ui-*:1.4.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha05-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • runComposeUiTest ফাংশন ও create*ComposeRule ফাংশনের জন্য নতুন পরীক্ষামূলক ওভারলোড চালু করা হয়েছে যেগুলি CoroutineContext প্যারামিটার গ্রহণ করে। টেস্ট কম্পোজিশন ও কম্পোজিশনে থাকা যেকোনও LaunchedEffect ও rememberCoroutineScope() কলের জন্য প্রসঙ্গ ব্যবহার করা হবে। (I10614, b/265177763)
  • ১ ডাইমেনশনাল ভেলোসিটি (If5a82) ট্র্যাক করার জন্য নতুন API যোগ করুন
  • FocusRequester এখন @Stable হিসেবে চিহ্নিত করা হয়েছে। (I580ee)
  • DialogProperties কনস্ট্রাক্টর থেকে পরীক্ষামূলক অ্যানোটেশন সরিয়ে দিন যা usePlatformDefaultWidth প্যারামিটার নেয়। (Ic4048)
  • পাথ থেকে দূরত্বে ক্যালকুলেশন পজিশন ও ট্যানজেন্ট যোগ করা হয়েছে - PathMeasure.getPosition() ও PathMeasure.getTangent() সহ (I3b47c)
  • PlatformParagraphStyle-এ ভুলবশত এক্সপোজ করা পাবলিক সেটার সরিয়ে দেওয়া হয়েছে। (I07f47)
  • ইনলাইন/পুরনো-লুকানো ফাংশনের আরও বেশি ধরন/নালিবিলিটি (I24f91)
  • জিরো-অ্যালোকেশন সহ অ্যানোটেশনের জন্য কোয়েরি করতে AnnotatedString.hasStringAnnotations যোগ করুন। (I94dfe, b/246960758)
  • TextMeasurer.measure ফাংশনের জন্য নতুন ওভারলোড যোগ করা হয়েছে যা টেক্সট হিসেবে String নেয়। (I47b2d, b/242705342)
  • TextStyle-এর LineBreak ও Hyphens API এখন স্টেবল ভার্সনে উপলভ্য। (Ic1e1d)

এক্সটার্নাল কন্ট্রিবিউশন

  • TextInputSession ও TextInputService-এর notifyFocusedRect পদ্ধতি আর অবচিত করা হয়নি। (I23a04, b/262648050)

ভার্সন 1.4.0-alpha04

১১ জানুয়ারি, ২০২৩

androidx.compose.ui:ui-*:1.4.0-alpha04 রিলিজ করা হয়েছে। 1.4.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • নতুন PinnableContainer API যোগ করা হয়েছে যা লেজি লিস্ট আইটেমকে পিন করার অনুমতি দেয়, যাতে সেগুলি স্ক্রল করে সীমার বাইরে নিয়ে যাওয়া হলে ডিসপোজ করা না হয়। যেমন, Modifier.focusable() বর্তমানে ফোকাস করা আইটেম পিন করতে এই পদ্ধতি ব্যবহার করে। (Ib8881, b/259274257, b/195049010)
  • নতুন পরীক্ষামূলক Modifier.Node API ব্যবহার করে ফোকাস সিস্টেম আবার লেখা হয়েছে। (I7f4d7, b/247708726, b/255352203, b/253043481, b/247716483, b/254529934, b/251840112, b/251859987, b/257141589)
  • সারফেসে IsContainer সিম্যান্টিক্স প্রপার্টি যোগ করা হয়েছে। এই প্রপার্টিটি পরে এমন একটি পরিবর্তনে ব্যবহার করা হবে যা সারফেসের মতো এলিমেন্টের শব্দার্থগত অর্থের উপর ভিত্তি করে ট্রাভার্সাল অর্ডার নির্ধারণ করে। (I63379)
  • নতুন অ্যাক্সেসিবিলিটি ভূমিকা DropdownList যোগ করা হয়েছে। TalkBack's-এর আচরণ রেপ্লিকেট করতে এটি ব্যবহার করা যেতে পারে, যখন android.widget.Spinner-এ ফোকাস করা হয়। (I177e5, b/236159001)
  • আপনি এখন PlatformTextStyle(emojiSupportMatch) ব্যবহার করে কোনও একটি প্যারাগ্রাফের জন্য ঐচ্ছিকভাবে ইমোজি সংক্রান্ত সহায়তা প্রসেস করা বন্ধ করতে পারবেন। (Ia7100, b/139326806)
  • Android Compose UI টেস্ট এখন আইডল অবস্থায় পৌঁছানোর জন্য ফ্রেম এক্সিকিউট করার সময় (যেমন, waitForIdle-এর মাধ্যমে) প্রতিটি ফ্রেমের জন্য লেআউট পাস চালাবে। এটি লেআউট অ্যানিমেশনের আলাদা আলাদা ফ্রেমের উপর অ্যাসার্ট করা টেস্টকে প্রভাবিত করতে পারে। (I8ea08, b/222093277)
  • TextStyle-এ পরীক্ষামূলক TextMotion যোগ করা হয়েছে, যাতে টেক্সট Static(default) বা অ্যানিমেটেড হিসেবে নির্ধারণ করা যায়। অ্যানিমেশনের মাধ্যমে টেক্সট স্কেল, অনুবাদ বা রোটেট করা হলে TextMotion.Animated ব্যবহার করুন। (I24dd7)

API-তে পরিবর্তন

  • অন্যান্য DrawScope ফাংশনের সাথে ইনলাইন হতে drawText-এ maxSize: IntSize আর্গুমেন্টটি size: Size দিয়ে পরিবর্তন করা হয়েছে। size ডিফল্ট হিসেবে Size.Unspecified মানে সেট করা থাকে যা আগের ডিফল্ট আচরণ পরিবর্তন করে না। (Icd27d)
  • পুরনো হয়ে যাওয়া এক্সপেরিমেন্টাল ফন্ট কনস্ট্রাক্টর সরিয়ে দেওয়া হয়েছে। (I8a724, b/261435386)
  • ui tooling ডেটা ক্লাসে Group এখন একটি ফিল্ড, isInline আছে যা গ্রুপটি ইনলাইন কম্পোজ করার উপযুক্ত ফাংশনে কল করার জন্য কিনা তা নির্দেশ করে। isInline যদি true হয়, তাহলে কলটি একটি ইনলাইন কম্পোজ করার উপযুক্ত ফাংশনে করা হয়েছে। তবে, ইনলাইন কম্পোজ করার উপযুক্ত ফাংশনের কলের ক্ষেত্রে ভ্যালু মিথ্যা হতে পারে, যেগুলি এমন মডিউল থেকে আসে যেগুলি কম্পোজ কম্পাইলার প্লাগ-ইনের এমন একটি ভার্সনের সাথে কম্পাইল করা হয় যা ইনলাইন ফাংশন সংক্রান্ত তথ্য তৈরি করে না। (Idb846)
  • আগে পরীক্ষামূলক API হিসেবে থাকা একাধিক API-কে স্টেবল হিসেবে প্রকাশ করা হয়েছে
  • 'রোটারি স্ক্রল ইভেন্ট' API এখন স্থিতিশীল (I42ad3, b/261561229)
  • FontVariation API এখন স্থিতিশীল (I8779f, b/241016309)
  • সব Font() কনস্ট্রাক্টর এখন স্টেবল API (I5948b, b/261435386)
  • DeviceFontFamilyName এখন স্থিতিশীল (I8b640, b/261435386)
  • AndroidFont constructor সহ variationSettings এখন একটি স্থিতিশীল API এবং এটি ফন্ট ডেসক্রিপ্টরের নতুন ধরন তৈরি করতে ব্যবহার করা যেতে পারে। (I5adcc, b/261565807)
  • createFontFamilyResolver API এখন স্টেবল। অ্যাসিঙ্ক ফন্ট লোডিংয়ের সময় আগে বোঝা যায়নি এমন সমস্যা চিহ্নিত করতে এটি ব্যবহার করা যেতে পারে। (Ibb481, b/261435386)
  • Font.loadingStrategy API এখন স্টেবল। (I5937c, b/261435386)
  • GoogleFont API এখন স্টেবল। (Ic90b0, b/261435386)
  • TextUnit(float, TextUnitType) এখন স্টেবল API. (I90c84, b/261561612)
  • pluralStringResource এখন স্টেবল API. (I09849, b/261439703)

ভার্সন 1.4.0-alpha03

৭ ডিসেম্বর, ২০২২

androidx.compose.ui:ui-*:1.4.0-alpha03 রিলিজ করা হয়েছে। 1.4.0-alpha03 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • PointerIcon থেকে ExperimentalComposeUiApi সরানো হচ্ছে (I23af8)
  • পৃষ্ঠার অ্যাক্সেসিবিলিটি অ্যাকশন সম্পর্কে জানুন: PageUp, PageDown, PageLeft, PageRight. মনে রাখবেন, এগুলি শুধুমাত্র API 29 থেকে উপলভ্য। (Ida4ab)
  • rememberNestedScrollConnection প্যারামিটার ভিউকে রুট ভিউ থেকে হোস্ট ভিউতে আপডেট করা হয়েছে। (Ia5200)
  • পূর্বপুরুষদের স্ক্রল সংক্রান্ত তথ্য কোয়েরি করার জন্য একটি মডিফায়ার API যোগ করা হয়েছে। (I2ba9d, b/203141462)
  • Clickable-এ প্রেস ইন্টার‍্যাকশন সঠিকভাবে ডিলে করতে ব্যবহার করা হয়, যখন জেসচার স্ক্রল ইভেন্ট হয়ে যেতে পারে।
  • Clickables-এর মধ্যে ব্যবহার করা হলে, Scrollable ViewGroup সঠিকভাবে বিলম্বিত না করার সমস্যা সমাধান করা হয়েছে।
  • জেসচার স্ক্রল ইভেন্ট হয়ে গেলে, প্রেস ডিলে করার জন্য ড্রয়ার ও শিট আপডেট করা হয়েছে।
  • CompositingStrategy.Always-এর নাম পরিবর্তন করে Offscreen করা হয়েছে, এর মাধ্যমে বোঝানো হয়েছে যে graphicsLayer সবসময় একটি মধ্যবর্তী বাফারে (I47dc1) রেন্ডার করা হবে
  • একাধিক কন্টেন্ট স্লট সহ লেআউট ওভারলোড এখন স্থিতিশীল (I10566, b/248294649)
  • টেস্ট আচরণ ও পারফর্ম্যান্স চেক করার জন্য, টেস্টের অংশ হিসেবে Perfetto ট্রেস (এছাড়াও সিস্টেম ট্রেস হিসেবে পরিচিত) ক্যাপচার করতে, এক্সপেরিমেন্টাল নতুন API PerfettoTrace.record {} ও PerfettoTraceRule যোগ করা হয়েছে। (I3ba16)
  • Compose নিয়ম ব্যবহার করে UI টেস্টে, withFrameNanos কলব্যাকের সময় আবার চালু হওয়া কন্টিনিউয়েশন, সব ফ্রেম কলব্যাক রান করা শেষ না হওয়া পর্যন্ত ডিসপ্যাচ করা হবে না। এটি স্বাভাবিকভাবে চালানোর সময় কম্পোজ করার আচরণের সাথে মেলে। তবে, পুরনো আচরণ নির্ভর পরীক্ষাগুলি কাজ নাও করতে পারে। এটি শুধুমাত্র সেই কোডকে প্রভাবিত করবে যা সরাসরি withFrameNanos বা withFrameMillis কল করে এবং সেইসব ফাংশনে পাস করা কলব্যাকের বাইরে লজিক থাকে যা কলব্যাকের মধ্যে সরানোর প্রয়োজন হতে পারে। উদাহরণ হিসেবে এই CL-এ অ্যানিমেশন টেস্টের পরিবর্তন দেখুন।
  • TestMonotonicFrameClock কনস্ট্রাক্টর ও ফ্যাক্টরি ফাংশনে ঐচ্ছিক onPerformTraversals: (Long) -> Unit প্যারামিটার যোগ করা হয়েছে, যাতে withFrameNanos কলব্যাকের পরে কিন্তু কলারের কোরাউটিন আবার চালু করার আগে কোড রান করা যায়। (Idb413, b/254115946, b/222093277, b/255802670)
  • Compose-এ EmojiCompat যোগ করা হয়েছে (Ibf6f9, b/139326806)
  • ডায়নামিক কালার কাজ করার জন্য @Preview-এ নতুন ওয়ালপেপার প্যারামিটার যোগ করা হয়েছে (I9f512)

সমস্যার সমাধান

  • Recomposer পরিবর্তন প্রয়োগ করা শেষ করার পরে এখন স্ন্যাপশট প্রয়োগ করার বিজ্ঞপ্তি পাঠানো হয়। (Iad6c0, b/222093277)
  • মাল্টি উইন্ডো স্ক্রিনশট ক্যাপচার করার অনুমতি দিতে captureToImage-এ পরিবর্তন করা হয়েছে। কম্পোজ পপ-আপ ব্যবহার করে এমন স্ক্রিনশট পরীক্ষার জন্য এটি উপযোগী। (I169c5)

নির্ভরতা সংক্রান্ত আপডেট

  • Compose UI ও Compose Material এখন Lifecycle 2.5.1-এর উপর নির্ভর করে। (I05ab0, b/258038814)

ভার্সন 1.4.0-alpha02

৯ নভেম্বর, ২০২২

androidx.compose.ui:ui-*:1.4.0-alpha02 রিলিজ করা হয়েছে। 1.4.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • graphicsLayer-এর বর্তমান সাইজ দেখানোর জন্য GraphicsLayerScope আপডেট করা হয়েছে। graphicsLayer কম্পোজ করার মতো আইটেমের সাইজের ফাংশন হিসেবে ট্রান্সফর্মেশন গণনা করার জন্য এটি সহায়ক। (If8c43,b/181387080)
  • graphicsLayer কন্টেন্ট রেন্ডার করার জন্য কখন অফস্ক্রিন কম্পোজিটিং লেয়ার ব্যবহার করতে হবে তা নির্ধারণ করতে CompositingStrategy চালু করা হয়েছে। Auto ডিফল্ট আচরণ বজায় রাখে যা ইন্টার্নালি আলফা প্রয়োগ করা হলে বা RenderEffect/Overscroll থাকলে একটি লেয়ারকে লিভারেজ করে। Always সবসময় অফস্ক্রিন বাফার যোগ করবে যেখানে ModulateAlpha অফস্ক্রিন বাফার ব্যবহার করা এড়িয়ে যাবে এবং পরিবর্তে graphicsLayer-এর মধ্যে রেকর্ড করা প্রতিটি ড্রয়িং নির্দেশাবলী মডুলেট করবে। ModulateAlpha ব্যবহার এখনও RenderEffect/Overscroll ব্যবহারের জন্য অফস্ক্রিন বাফার ব্যবহার করবে (I25e82, b/256382834)
  • লেআউট ও ড্রয়িংয়ের জন্য সম্পূর্ণ হায়ারার্কি বাতিল করার অনুমতি দিতে Modifier.Node-এ invalidateSubtree() যোগ করা হয়েছে। (I4bd90)
  • rememberNestedScrollInteropConnection থেকে স্টেবল ভার্সনে প্রোমোট করুন। rememberNestedScrollInteropConnection-এ রুট ভিউ পাস করার সুবিধা চালু করা হয়েছে। এটি স্ক্রল করার বিধিনিষেধের ক্ষেত্রে কাস্টম ভিউকে আরও ভালোভাবে প্রতিক্রিয়া জানাতে সাহায্য করতে পারে, বিশেষ করে নন-স্ট্যান্ডার্ড ভিউতে (যেমন, ModalBottomSheetDialog)। (I9e107)
  • ObserverNode ইন্টারফেস যোগ করা হয়েছে যা Modifier.Node সেইসব ইমপ্লিমেন্টেশন ব্যবহার করতে পারে যেগুলি আগে পড়া কোনও ভ্যালু পরিবর্তন হলে বিজ্ঞপ্তি পেতে চায় (I5728b, b/247716483)
  • Paint-এ একটি নতুন কনস্ট্রাক্টর যোগ করা হয়েছে যা নেটিভ android.graphics.Paint গ্রহণ করে। এছাড়াও, একটি এক্সটেনশন ফাংশন toComposePaint() যোগ করা হয়েছে যা আগে থেকে থাকা নেটিভ Paint অবজেক্টকে Compose Paint-এ কনভার্ট করে। (Ica91b)
  • Android-এ ব্যবহারের জন্য নতুন FontFamily.Resolver.resolveAsTypeface যোগ করুন। (I8950b)
  • Composable-এর ইন্টার্নাল স্টেট পরিবর্তন করার জন্য টুলিংকে অনুমতি দিতে ToolingState যোগ করুন (Ie6614)
  • নতুন যোগ করা অ্যানিমেশনের (I8677b) জন্য আরও ভাল সহায়তা পেতে টুলিং রিফ্যাক্টর করা
  • মেটেরিয়াল ও মেটেরিয়াল3 টেক্সটে minLines প্যারামিটার যোগ করা হয়েছে এবং TextField ও OutlinedTextField যা লাইনের সংখ্যার (I4af1d) ভিত্তিতে কম্পোনেন্টের ন্যূনতম উচ্চতা সেট করার অনুমতি দেয়

ভার্সন 1.4.0-alpha01

২৪ অক্টোবর, ২০২২

androidx.compose.ui:ui-*:1.4.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.4.0-alpha01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • জেসচার ডিটেক্টরদের জন্য একটি নতুন পদ্ধতি, awaitEachGesture(), যোগ করা হয়েছে। এটি forEachGesture()-এর মতো কাজ করে, কিন্তু জেসচার ওভার লুপ সম্পূর্ণভাবে AwaitPointerEventScope-এর মধ্যে কাজ করে, তাই ইটারেশনের মধ্যে ইভেন্ট হারিয়ে যায় না।
  • awaitEachGesture()-এর জন্য forEachGesture() বন্ধ করে দেওয়া হয়েছে কারণ এটি জেসচারের মধ্যে ইভেন্ট হারিয়ে যেতে দেয়। (Iffc3f, b/251260206)
  • androidx-এ অ্যাক্সেসিবিলিটি অবজেক্টের রিসাইক্লিং বন্ধ করা হচ্ছে। আমরা দেখেছি যে সবচেয়ে পুরনো কাজ করে এমন ভার্সনেও পারফর্ম্যান্সের পরিবর্তন খুবই কম হয়। (I0a961)
  • আউটলাইন করা টেক্সট আঁকার সুবিধা চালু করতে TextStyle ও SpanStyle-এ পরীক্ষামূলক অ্যাট্রিবিউট হিসেবে DrawStyle যোগ করা হয়েছে। (If24b8, b/155421273)
  • AnnotatedString.Builder এখন kotlin.text.Appendable প্রয়োগ করে। (I1a061, b/231030444)
  • AnnotatedString.Builder-এর কাছে এখন AnnotatedString-এর সাবস্ট্রিং এবং ইন্টারসেক্টিং স্টাইল যোগ করার একটি append(AnnotatedString, start: Int, end: Int) পদ্ধতি আছে।
  • Paragraph ও MultiParagraph পেইন্ট ফাংশনে DrawStyle প্যারামিটার যোগ করা হয়েছে যা আউটলাইন করা টেক্সট আঁকতে সাহায্য করে। (Ic8102, b/155421273)

এক্সটার্নাল কন্ট্রিবিউশন

  • প্রিভিউতে টিভি ডিভাইস যোগ করার জন্য vighnesh-কে ধন্যবাদ (Ie15cd)

ভার্সন 1.3

ভার্সন 1.3.3

১১ জানুয়ারি, ২০২৩

androidx.compose.ui:ui-*:1.3.3 রিলিজ করা হয়েছে। 1.3.3 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Compose View-এর স্টেট সেভ করার সময় Android 9-এ কখনও কখনও ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। (I0b755, b/260322832)

ভার্সন 1.3.2

৭ ডিসেম্বর, ২০২২

androidx.compose.ui:ui-*:1.3.2 রিলিজ করা হয়েছে। 1.3.2 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • Profobuf 3.21.8 ব্যবহার করার জন্য আপডেট করা হয়েছে, যা protobuf-javalite:3.19.4-এ (CVE-2022-3171) নিরাপত্তা সতর্কতা এড়িয়ে যায় (b/255545055)

ভার্সন 1.3.1

৯ নভেম্বর, ২০২২

androidx.compose.ui:ui-*:1.3.1 রিলিজ করা হয়েছে। 1.3.1 ভার্সনে এইসব কমিট রয়েছে।

ভার্সন 1.3.0

২৪ অক্টোবর, ২০২২

androidx.compose.ui:ui-*:1.3.0 রিলিজ করা হয়েছে। 1.3.0 ভার্সনে এই কমিটগুলি রয়েছে।

1.2.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • নতুন পরীক্ষামূলক API স্যুট LookaheadLayout (আগে অসম্ভব ছিল এমন অ্যানিমেশন আচরণ চালু করা)
  • নতুন এক্সপেরিমেন্টাল API স্যুট Modifier.Node (Modifier.composed-এর তুলনায় বেশি পারফর্ম্যান্সের বিকল্প)
  • উইন্ডো ইনসেট সংক্রান্ত উন্নত সহায়তা।
  • LazyLists-এ ডি-প্যাড ও হার্ডওয়্যার কীবোর্ডের জন্য ফোকাস সাপোর্ট।
  • ডায়ালগ ও পপ-আপে সর্বাধিক কাজ করে এমন এলিভেশন কমিয়ে ৮dp করা হয়েছে (কিছু কাস্টমাইজ করা ডিজাইন সিস্টেমের জন্য আচরণ সংক্রান্ত ব্রেকিং পরিবর্তন – beta01 রিলিজ নোটের মধ্যে যুক্তি)
  • অনেক ছোটখাটো, API-তে কোনও সমস্যা সৃষ্টি করে না এমন উন্নতি
  • অনেক সমস্যার সমাধান ও পারফর্ম্যান্সের উন্নতি

ভার্সন 1.3.0-rc01

৫ অক্টোবর, ২০২২

androidx.compose.ui:ui-*:1.3.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.3.0-rc01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • টেক্সটে অটোমেটিক হাইফেন যোগ করার সুবিধা দিতে নতুন পরীক্ষামূলক API হাইফেন যোগ করা হয়েছে (Iaa869)

সমস্যার সমাধান

  • DeviceFontFamilyName ফন্ট ডিফল্ট হিসেবে wght ও ital ভেরিয়েশন সেটিংস কনফিগার করবে না, পরিবর্তে লোড করা Typeface-এর জন্য প্ল্যাটফর্ম সেটিং ব্যবহার করবে। (Ia7a6d, b/246989332)
  • LazyColumn মেমরি লিক সংক্রান্ত সমস্যার সমাধান করা হয়েছে - মডিফায়ার আবার ব্যবহার করা হলে onModifierLocalsUpdated ডিফল্ট ভ্যালু সহ কল করা হচ্ছিল না (b/230168389)

ভার্সন 1.3.0-beta03

২১ সেপ্টেম্বর, ২০২২

androidx.compose.ui:ui-*:1.3.0-beta03 রিলিজ করা হয়েছে। 1.3.0-beta03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • টেক্সটে লাইন ব্রেকিং কাস্টমাইজ করার বিকল্প যোগ করুন। (I86907)
  • ন্যূনতম প্রস্থ সংক্রান্ত বিধিনিষেধের ক্ষেত্রে কাজ করার জন্য TextMeasurer.measure পদ্ধতিতে constraints: Constraints-এর সাথে size:IntSize আর্গুমেন্ট পরিবর্তন করা হয়েছে। (I37530, b/242707525)

সমস্যার সমাধান

  • AndroidX Activity-এর BackHandler API এখন Dialog কম্পোজেবলের মধ্যে কাজ করে। (I35342)

ভার্সন 1.3.0-beta02

৭ সেপ্টেম্বর, ২০২২

androidx.compose.ui:ui-*:1.3.0-beta02 রিলিজ করা হয়েছে। 1.3.0-beta02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • Layout-এর জন্য একটি পরীক্ষামূলক ওভারলোড যোগ করা হয়েছে যা একাধিক কম্পোজ করা যায় এমন কন্টেন্ট ল্যাম্বডার একটি তালিকা গ্রহণ করে, যা বিভিন্ন কন্টেন্ট ল্যাম্বডায় আলাদাভাবে পরিমাপযোগ্য থ্রেড রাখার অনুমতি দেয় (Ic1b4e)

এক্সপেরিমেন্টাল Focus API-তে পরিবর্তন:

  • FocusDirection.In ও FocusDirection.Out বন্ধ করা হয়েছে এবং FocusDirection.Enter ও FocusDirection.Exit দিয়ে পরিবর্তন করা হয়েছে। (Ia4262, b/183746982)
  • FocusManager.moveFocus(Enter) ও FocusManager.moveFocus(Exit)-এর জন্য কাস্টম আচরণ নির্দিষ্ট করতে, দুটি নতুন ফোকাস প্রপার্টি enter ও exit যোগ করা হয়েছে। (I5f3f9, b/183746982)
  • ফোকাস মুভ বাতিল করতে এখন আপনি FocusRequester.Cancel ব্যবহার করতে পারবেন। FocusRequester.Cancel নিম্নলিখিত ফোকাস প্রপার্টির যেকোনও একটিতে ব্যবহার করা যেতে পারে: up, down, left, right, next, previous, start, end, enter এবং exit। (Ib300f)

ভার্সন 1.3.0-beta01

২৪ আগস্ট, ২০২২

androidx.compose.ui:ui-*:1.3.0-beta01 রিলিজ করা হয়েছে। ভার্সন 1.3.0-beta01-এ এইসব কমিট আছে।

মডিফায়ার নোড রিফ্যাক্টর

Modifier/Modifier.Element ইনস্ট্যান্স ম্যানেজ করে এবং LayoutNodes-এ তাদের আচরণ কোঅর্ডিনেট করে এমন লেয়ারটি মূলত রিফ্যাক্টর করা হয়েছে। বর্তমানে এটি একটি রিফ্যাক্টর যা Compose-এর অনেক মডিফায়ারের কোনওটিরই পাবলিক API-কে প্রভাবিত করেনি এবং এটি শুধুমাত্র একটি প্রয়োগ-সম্পর্কিত পরিবর্তন হিসেবে দেখা যেতে পারে। তা সত্ত্বেও, বিভিন্ন কারণে এটি একটি গুরুত্বপূর্ণ পরিবর্তন। (Ie4313)

পরিবর্তনের সারসংক্ষেপ

যোগ করা পরীক্ষামূলক Modifier.Node API একটি অ্যাবস্ট্রাকশন প্রদান করে যা লেআউট নোডের লাইফসাইকেল সহ বজায় রাখা হবে এমন একটি ইনস্ট্যান্সে স্টেট বজায় রাখার অনুমতি দেয় এবং এটি সংশ্লিষ্ট Modifier.Element-এর প্রতিটি লেআউট-নোড এবং প্রতি-ব্যবহারের জন্য বরাদ্দ করা হবে যা এটি তৈরি করেছে।

মোটকথা, এই অ্যাবস্ট্রাকশন Modifier.composed API-এর মেকানিক্সের উপর নির্ভর না করেই স্টেটফুল মডিফায়ার তৈরি করার একটি বিকল্প মেকানিজম প্রদান করে।

ঝুঁকি

এই পরিবর্তনটি আগের রিলিজের সাথে কঠোরভাবে বাইনারি মানানসই এবং এটি যতটা সম্ভব ব্যবহারিক ও যুক্তিসঙ্গতভাবে পর্যবেক্ষণযোগ্য আচরণের ক্ষেত্রে ব্যাকওয়ার্ড মানানসই হওয়ার উদ্দেশ্যে করা হয়েছে। তবে, কম্পোজের এমন কিছু সাবসিস্টেম আছে যেগুলিতে এই রিফ্যাক্টর স্পর্শ করেনি এবং সম্ভাব্য যে আচরণ এমনভাবে পরিবর্তিত হয়েছে যা আমাদের পরীক্ষায় কভার করা হয়নি এবং এখনও খুঁজে পাওয়া এবং সমাধান করা হয়নি।

সতর্কতার সাথে এই রিলিজে আপগ্রেড করুন। এর ফলে আপনার কোনও সমস্যা হয়েছে বলে মনে করলে, আমাদের জানান।

পরীক্ষামূলক API

বিভিন্ন পরীক্ষামূলক API যোগ করা হয়েছে, এগুলি সবই "মডিফায়ার নোড" নামক নতুন ধারণার সাথে সম্পর্কিত। এর ফলে Modifier.Node তৈরি হয়

  • 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

আচরণ সংক্রান্ত ব্রেকিং পরিবর্তন

ডায়ালগ ও পপ-আপে সর্বাধিক কাজ করে এমন এলিভেশন কমিয়ে ৮dp করা হয়েছে।

Compose ডায়ালগ ও পপ-আপের জন্য অনুমোদিত সর্বাধিক এলিভেশন ৩০dp থেকে কমিয়ে ৮dp করা হয়েছে। এই পরিবর্তন মেটেরিয়াল ও UI কাস্টম ডায়ালগ ও পপ-আপ, দু'টির উপরেই প্রভাব ফেলে। S-এর আগের Android ভার্সনে অ্যাক্সেসিবিলিটি সংক্রান্ত সমস্যা কমানোর জন্য এই পরিবর্তন করা হয়েছে এবং এটি নিশ্চিত করে যে সেইসব উইন্ডোর মধ্যে থাকা অ্যাক্সেসিবিলিটি পরিষেবা ডায়ালগ বা পপ-আপের কন্টেন্টের সাথে ইন্টার‍্যাক্ট করতে পারবে।

আপনি যদি ৮dp-এর বেশি লেভেলে এলিভেশন সেট করে কাস্টম ডায়ালগ বা পপ-আপ প্রয়োগ করেন, তাহলেই এই পরিবর্তনের কারণে আপনার উপর প্রভাব পড়বে। আপনার ডায়ালগ বা পপ-আপের এলিভেশন কমানোর কথা বিবেচনা করুন। এই নতুন আচরণ থেকে বেরিয়ে আসতে চাইলে, পছন্দমতো এলিভেশন সেট করা আপনার নিজস্ব ডায়ালগ বা পপ-আপ ফর্ক করার কথা বিবেচনা করুন। এটি সাজেস্ট করা হয় না, কারণ এর ফলে অ্যাক্সেসিবিলিটি নেতিবাচকভাবে প্রভাবিত হতে পারে এবং ডায়ালগ বা পপ-আপের নিচের অংশ অ্যাক্সেসিবিলিটি পরিষেবার মাধ্যমে ইন্ট্যার‍্যাক্ট করা ও পড়া যায় কিনা তা নিশ্চিত করার দায়িত্ব ডেভেলপারের।

API-তে পরিবর্তন

  • কনফিগারেশনে পরিবর্তন করা হলে painterResource আপডেট না হওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে (I58e73, b/228862715)
  • rememberTextMeasurer আর FontFamily.Resolver, Density বা LayoutDirection প্যারামিটার নেয় না। এইসব প্যারামিটারের জন্য কাস্টম ভ্যালু প্রদান করতে, TextMeasurer কনস্ট্রাক্টর ব্যবহার করুন। (Ia1da3)
  • DialogProperties.decorFitsSystemWindows প্রপার্টি যোগ করা হয়েছে যাতে ডায়ালগ WindowInsets-এ কাজ করতে পারে। (I57742, b/229378542)
  • বাইনারি কম্প্যাটিবিলিটি বজায় রাখতে ফন্ট কনস্ট্রাক্টরকে আসল কোটলিন ফাইলে ফিরিয়ে আনা হয়েছে। শেষ স্টেবল রিলিজের পর থেকে কোনও পরিবর্তন হয়নি। (Ieb2f3)
  • একাধিক সমান চিহ্নের সংজ্ঞা থেকে অপ্রয়োজনীয় অপারেটর সরিয়ে দেওয়া হয়েছে - এর কোনও প্রভাব নেই। (I6c309)
  • ভবিষ্যতে ক্ল্যাম্পিং API-কে অনুমতি দেওয়ার জন্য FontVariation.Setting হল একটি সিল করা ইন্টারফেস। (I11021, b/143703328)
  • SlotTree.kt-এ CompositionGroup.findParameters যোগ করুন। এর ফলে টুল, সম্পূর্ণ স্লট টেবিল পার্স না করেই CompositionGroup-এর প্যারামিটার রিট্রিভ করতে পারে। (I124fe)

ভার্সন 1.3.0-alpha03

১০ আগস্ট, ২০২২

androidx.compose.ui:ui-*:1.3.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.3.0-alpha03-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • LayoutCoordinates.findRootCoordinates() এখন সর্বজনীন (I7fa37, b/204723384)
  • PlacementScope-এ LayoutCoordinates পেতে পরীক্ষামূলক API যোগ করা হয়েছে। এর ফলে, ডেভেলপাররা জানতে পারেন যে বর্তমান লেআউটে, সেটির পজিশনের সাপেক্ষে চাইল্ড কোথায় প্লেস করতে হবে। (I5482b, b/238632578)
  • একটি LayoutCoordinates থেকে অন্যটিতে ম্যাট্রিক্স ট্রান্সফর্মেশন পেতে LayoutCoordinates.transformFrom যোগ করা হয়েছে। (Ic5ab1, b/238632578)
  • SemanticsModifier.id বাতিল করা হয়েছে এবং এর পরিবর্তে LayoutInfo.semanticsId-এ সিম্যান্টিক্স আইডি সরানো হয়েছে। (Iac808, b/203559524)
  • রিসোর্স ফন্ট এখন ফন্ট ভেরিয়েশন সেটিংস (API 26+) সেট করা যায়। (I900dd, b/143703328)
  • DeviceFontFamilyNameFont-এ ভেরিয়েবল ফন্ট কাজ করে (Ic1279, b/143703328)
  • O+ ডিভাইসে ভেরিয়েবল ফন্ট কনফিগার করার জন্য ফন্ট কনস্ট্রাক্টর এখন FontVariation.Setting-এর তালিকা গ্রহণ করে। (I11a9d, b/143703328)
  • ভেরিয়েবল ফন্ট ডিফাইন ও ব্যবহার করার জন্য FontVariation API যোগ করুন। (I3c40c, b/143703328)
  • LineHeightStyle.Alignment কনস্ট্রাক্টর এখন সর্বজনীন (পরীক্ষামূলক) (I4bbbe, b/235876330)
  • প্যারাগ্রাফ এখন Android ও ডেস্কটপের জন্য expect|actual ও সংজ্ঞায়িত। (Id387e, b/239962983)
  • ইন্টারফেস প্যারাগ্রাফ এখন সিল করা ইন্টারফেস প্যারাগ্রাফ। সাবক্লাসিং প্যারাগ্রাফের কোনও ব্যবহারিক উদাহরণ নেই এবং এই পরিবর্তনের ফলে আপনার উপর প্রভাব পড়লে আমাদের সাথে যোগাযোগ করার জন্য সাজেস্ট করা হয়। (If5247, b/239962983)
  • PlatformTextStyle ও LineHeightStyle থেকে পরীক্ষামূলক অ্যানোটেশন সরিয়ে দেওয়া হয়েছে। (I64bef)
  • TextInputService.show|hideSoftwareKeyboard শীঘ্রই বন্ধ করুন। অ্যাপ কোডে SoftwareKeyboardController এবং IME-ম্যানেজমেন্ট কোডে TextInputSession ব্যবহার করুন। (I14e4c, b/183448615)
  • আগে থেকে থাকা অ্যানিমেশনের ধরনের জন্য নতুন API যোগ করা (I26179)

সমস্যার সমাধান

  • SDK 33 ও এর পরের যেকোনও ভার্সনে POST_NOTIFICATIONS অনুমতি দেওয়ার প্রয়োজন হয় এমন API-তে @RequiresPermission যোগ করা হয়েছে। (Ie542e, b/238790278)

ভার্সন 1.3.0-alpha02

২৭ জুলাই, ২০২২

androidx.compose.ui:ui-*:1.3.0-alpha02 রিলিজ করা হয়েছে। 1.3.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • প্রেশার রিট্রিভ করার জন্য নতুন প্রপার্টি PointerInputChange#pressure যোগ করা হয়েছে। (I45a5e, b/205164819)
  • কম্পোজিশনে সহজে rememberTextMeasurer ইনস্ট্যান্স তৈরি ও মনে রাখার জন্য TextMeasurer যোগ করা হয়েছে। (I8d66e)
  • Rect, RoundRect ও MutableRect এখন contains ফাংশন কল করার জন্য Kotlin in সিনট্যাক্স ব্যবহার করা যায়। (Ie42b0, b/238642990)
  • KeyInjectionScope থেকে অপ্রয়োজনীয় ফাংশন সরিয়ে দিন, কারণ API-এর আরও সহজ অংশ ব্যবহার করে সেগুলি সহজেই প্রয়োগ করা যায়। সরিয়ে দেওয়া ফাংশনের মধ্যে pressKeys, keysDown ও keysUp অন্তর্ভুক্ত। (I81d77)
  • KeyInjectionScope-এ রিফ্যাক্টর করা ধ্রুবক ও প্যারামিটারের নামে 'Millis' প্রত্যয় যোগ করা হয়েছে, যেখানে উল্লিখিত ধ্রুবক ও প্যারামিটারের একক হল মিলিসেকেন্ড। (Iabef5)
  • টেক্সট এডিট করা সংক্রান্ত সমস্যার সমাধান করতে EditCommand-এ toStringForLog() পদ্ধতি যোগ করা হয়েছে। (I53354, b/228862731)
  • DrawScope-এ drawText এক্সটেনশন ফাংশন যোগ করা হয়েছে যাতে DrawScope-এর মতো Canvas ও drawBehind-এ কাজ করে এমন কম্পোজ করার উপযুক্ত আইটেম ও মডিফায়ারে একাধিক স্টাইলের টেক্সট ড্র করার একটি উপায় প্রদান করা যায়। (I16a62, b/190787898)
  • TextMeasurer নামের একটি নতুন পরীক্ষামূলক API চালু করা হয়েছে যা BasicText-এর মতো একই ফলাফল তৈরি করে এমন নির্বিচারে টেক্সট লেআউট কম্পিউটেশন চালু করে, যা Compose রানটাইম থেকে স্বাধীন। (I17101)
  • SlotTree.kt-এ mapTree যোগ করুন। এটি টুলকে SlotTree পরীক্ষা করতে দেয়, যেমন asTree করে, প্রথমে মেমরিতে কপি তৈরি না করেই। লেআউট ইন্সপেক্টরের ক্ষেত্রে এটি পারফর্ম্যান্সের ক্ষেত্রে প্রায় ১০ গুণ উন্নতি ঘটায়। (I5e113)
  • কম্পোজ প্রিভিউ পরিবর্তন করে বাইনারি আউটপুট ফাইলে স্টোর করা হয়েছে, যাতে ডেভেলপাররা লাইব্রেরি থেকে MultiPreview অ্যানোটেশন লিখতে ও আবার ব্যবহার করতে পারেন। (I85699, b/233511976)

সমস্যার সমাধান

  • Velocity ট্র্যাকারে InputEventChange ইভেন্ট যোগ করার সময় আমরা এখন পজিশনের পরিবর্তে ডেল্টা বিবেচনা করব, এর ফলে টার্গেট এলিমেন্ট সরে গেলেও (Icea9d, b/216582726, b/223440806, b/227709803) সব ক্ষেত্রে ভেলোসিটি সঠিকভাবে গণনা করা যাবে
  • অ্যানোটেশন থাকলে AnnotatedString.toUpperCase-এর কারণে হওয়া NPE সংক্রান্ত সমস্যার সমাধান করুন। (I0aca2, b/210899140)

ভার্সন 1.3.0-alpha01

২৯ জুন, ২০২২

androidx.compose.ui:ui-*:1.3.0-alpha01 রিলিজ করা হয়েছে। 1.3.0-alpha01 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • নতুন LookaheadLayout যা আসল পরিমাপ/লেআউটের আগে লুকঅহেড পাস সমর্থন করে। এটি লেআউট পরিবর্তন হলে তা আগে থেকে গণনা করার অনুমতি দেয়, পাশাপাশি টার্গেটের দিকে সাইজ ও পজিশন অ্যানিমেট করার জন্য আগে থেকে গণনা করা সাইজ/পজিশন ব্যবহার করতে পোস্ট-লুকঅহেড পরিমাপ/লেআউটকে অনুমতি দেয়। SubcomposeLayouts এখনও কাজ করে না, তবে আসন্ন রিলিজে এটি কাজ করবে। (I477f5)
  • সম্পূর্ণ Text-এর অস্বচ্ছতা পরিবর্তন করতে TextStyle ও SpanStyle-এর ব্রাশ ফ্লেভারে ঐচ্ছিক আলফা প্যারামিটার যোগ করুন। (Ic2fac, b/234117635)
  • UrlAnnotation অ্যানোটেশন টাইপ এবং AnnotatedString-এ TalkBack লিঙ্ক সংক্রান্ত সহায়তা প্রদান করার জন্য সংশ্লিষ্ট পদ্ধতি চালু করা হয়েছে। (I1c754, b/231495122)
  • ইউটিলিটি ফাংশনালিটি রানটাইমে সরানো (I4f729)

সমস্যার সমাধান

  • TextLayoutResult.getLineForOffset ছুঁড়তে পারে না। (Idc5d6, b/235876324)

এক্সটার্নাল কন্ট্রিবিউশন

  • কম্পোজ করা যায় এমন ফাংশনের মধ্যে বা snapshotFlow-এর মাধ্যমে এর স্টেট পর্যবেক্ষণ করতে একটি নতুন API WindowInfo.keyboardModifiers যোগ করা হয়েছে (Icdb8a)

ভার্সন 1.2

ভার্সন 1.2.1

১০ আগস্ট, ২০২২

androidx.compose.ui:ui-*:1.2.1 রিলিজ করা হয়েছে। 1.2.1 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ইন্সপেক্টরে nullpointer সংক্রান্ত সমস্যার সমাধান করা হয়েছে (b/237987764)
  • ইনস্পেক্টরে মনে রাখার সময় ক্লাস কাস্ট ব্যতিক্রম সংক্রান্ত সমস্যার সমাধান করা হয়েছে (b/235526153)

ভার্সন 1.2.0

২৭ জুলাই, ২০২২

androidx.compose.ui:ui-*:1.2.0 রিলিজ করা হয়েছে। 1.2.0 ভার্সনে এই কমিটগুলি রয়েছে।

1.1.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • ফোকাস ট্রাভার্সালে উন্নতি:

    • নতুন BeyondBoundsLayout কোর API ব্যবহার করে, লেজি লিস্টের ফোকাস-পরিচালিত-স্ক্রলিং এখন কাজ করে
    • FocusOrder ও FocusProperties-এ নতুন আচরণ কাস্টমাইজেশন API
    • ফিজিক্যাল কীবোর্ড বা টিভি রিমোটের সাথে উন্নত আচরণ
  • এগুলির জন্য নতুন API:

    • উইন্ডো ইনসেট
    • জেসচার-পরিচালিত, অসীম ও লেআউট অ্যানিমেশনের জন্য মূল প্রিমিটিভ
    • RenderEffect সহ GraphicsLayer ক্ষমতা
  • অনেক সমস্যার সমাধান ও পারফর্ম্যান্সের উন্নতি

ভার্সন 1.2.0-rc03

২৯ জুন, ২০২২

androidx.compose.ui:ui-*:1.2.0-rc03 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc03-এ এইসব কমিট রয়েছে।

  • 1.2.0-rc02 ভার্সনের পর থেকে কোনও পরিবর্তন করা হয়নি।

ভার্সন 1.2.0-rc02

২২ জুন, ২০২২

androidx.compose.ui:ui-*:1.2.0-rc02 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc02-এ এইসব কমিট রয়েছে।

ভার্সন 1.2.0-rc01

১৫ জুন, ২০২২

androidx.compose.ui:ui-*:1.2.0-rc01 রিলিজ করা হয়েছে। ভার্সন 1.2.0-rc01-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Compose লাইব্রেরির ইন্টারফেস এখন jdk8 ডিফল্ট ইন্টারফেস পদ্ধতি ব্যবহার করে তৈরি করা হয় (I5bcf1)
  • অন্যান্য কী প্রেস করে ধরে রাখা বা টগল করা অবস্থায় কী প্রেস ইনজেক্ট করার জন্য KeyInjectionScope-এ উচ্চ-ক্রমের ফাংশন যোগ করা হয়েছে। এইসব ফাংশনের মধ্যে withKeysDown, withKeysToggled ইত্যাদি অন্তর্ভুক্ত। এছাড়াও, কোনও নির্দিষ্ট মেটা কী প্রেস করা আছে কিনা তা চেক করার জন্য প্রপার্টি যোগ করা হয়েছে, যেমন, isCtrlDown কন্ট্রোল কী প্রেস করা আছে কিনা তা চেক করে। প্রতিটি ফাংশনের ডকুমেন্টেশনের জন্য KeyInjectionScope দেখুন। (I9f6cd, b/229831515)
  • Modifier.scrollable ওভারলোড সহ কাস্টম ওভারস্ক্রল এফেক্টের অনুমতি দেওয়ার জন্য একটি পরীক্ষামূলক OverscrollEffect চালু করা হয়েছে যা এটি গ্রহণ করে।
  • পরীক্ষামূলক LocalOverScrollConfiguration-কে foundation.gesture থেকে সরিয়ে ফাউন্ডেশন প্যাকেজে যোগ করা হয়েছে এবং এর নাম পরিবর্তন করে LocalOverscrollConfiguration রাখা হয়েছে (If19fb, b/204650733)
  • runComposeUiTestWithoutActivity {}-এর নাম পরিবর্তন করে runEmptyComposeUiTest {} করুন, যা এটিকে createEmptyComposeRule()-এর সাথে অ্যালাইন করে (I6fed7)

ভার্সন 1.2.0-beta03

১ জুন, ২০২২

androidx.compose.ui:ui-*:1.2.0-beta03 রিলিজ করা হয়েছে। 1.2.0-beta03 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • KeyInjectionScope-এ pressKeyTimes, isCapsLockOn ও বন্ধুদের যোগ করা হয়েছে। এছাড়াও, API এখন মাউস ও কীবোর্ড মিলিয়ে ইনজেকশন প্যাটার্ন সাপোর্ট করে, যেমন মেটা কী হোল্ড করে মাউস বোতামে ক্লিক করা। (I4c8da, b/229831515)
  • কী ইভেন্ট ইনজেক্ট করার জন্য পরীক্ষামূলক সহায়তা যোগ করা হয়েছে। কী ইভেন্ট পাঠাতে performKeyInput ব্যবহার করুন অথবা performMultiModalInput-এর মাধ্যমে মাল্টি-মোডাল ইনপুট জেসচার চলাকালীন MultiModalInjectionScope-এর key প্রপার্টির মাধ্যমে সেগুলি পাঠান। API-এর ডকুমেন্টেশনের জন্য KeyInjectionScope দেখুন। (Ic5000, b/229831515)
  • Android-এ কাজ করে এমন Google Fonts-এর ক্যাননিকাল ইন্টারনেট সোর্স রিট্রিভ করার জন্য নতুন GoogleFont.Provider.AllFontsListUri যোগ করুন।
  • কম্পোজ করার সময় GoogleFonts লোড না হলে, আবার দেখানো সমস্যার মেসেজ উন্নত করুন। (I0416c)

সমস্যার সমাধান

  • Velocity Tracker-এ InputEventChange ইভেন্ট যোগ করার সময় আমরা পজিশনের পরিবর্তে ডেল্টা বিবেচনা করব, এর ফলে টার্গেট এলিমেন্ট সরে গেলেও (I51ec3, b/216582726, b/223440806, b/227709803) সব ক্ষেত্রে ভেলোসিটি সঠিকভাবে গণনা করা যাবে
  • দ্রুত সেটিংস টাইল থেকে টগল করার সাথে সাথেই কম্পোজেবল আইটেমের জন্য Show Layout Bounds সেটিং প্রয়োগ করা হবে, এর জন্য অ্যাক্টিভিটি ছেড়ে বেরিয়ে এসে আবার প্রবেশ করতে হবে না। (I843d5, b/225937688)
  • অ্যাক্সেসিবিলিটি স্ট্রিং লুক-আপ ফন্ট লোডিং ট্রিগার করে না। আগে, এটি StyleSpans-এর জন্য ফন্ট লোড করার চেষ্টা করত, যা FontFamily.Resolver ওভাররাইট করা হলে ক্র্যাশ হয়ে যেত। (I4609d)
  • কার্সর টেক্সট ফিল্ডের শেষে থাকলে, 'ফরোয়ার্ড ডিলিট' কী প্রেস করলে আর ক্র্যাশ হবে না।
  • DeleteSurroundingTextCommand ও DeleteSurroundingTextInCodePointsCommand-এর কনস্ট্রাক্টর আর্গুমেন্ট এখন নেগেটিভ নয় এমন পূর্ণসংখ্যা হতে হবে। (Ica8e6, b/199919707)

ভার্সন 1.2.0-beta02

১৮ মে, ২০২২

androidx.compose.ui:ui-*:1.2.0-beta02 রিলিজ করা হয়েছে। 1.2.0-beta02 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • অন্যান্য প্রিভিউয়ের ধরনে ফাংশনালিটি আবার ব্যবহার করা (I19f39)

সমস্যার সমাধান

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer-এর নাম পরিবর্তন করে DisposeOnDetachedFromWindowOrReleasedFromPool করা হয়েছে যাতে ডিসপোজাল কখন হয় তা আরও ভালোভাবে বোঝা যায়, শুধু কখন হয় না তা নয়। (If15ca)

ভার্সন 1.2.0-beta01

১১ মে, ২০২২

androidx.compose.ui:ui-*:1.2.0-beta01 রিলিজ করা হয়েছে। 1.2.0-beta01 ভার্সনে এইসব কমিট আছে।

নতুন ফিচার

  • এটি হল 1.2-এর প্রথম বিটা রিলিজ!

API-তে পরিবর্তন

  • পরীক্ষামূলক BeyondBoundsInterval যোগ করা হয়েছে যা LazyList-এর কাস্টম প্রয়োগের মাধ্যমে ব্যবহার করা যেতে পারে যখন সেগুলি দৃশ্যমান সীমার বাইরে আইটেম লেআউট করে (Ifabfb, b/184670295)
  • Modifier.composed-এর কীড ভার্সন এখন স্টেবল API (Ie65e4, b/229988420)
  • বর্তমান ভিউ সংক্রান্ত তথ্য (I67ca7) পাওয়ার জন্য কম্পোজিশন লোকাল ব্যবহার করতে rememberNestedScrollConnection API-কে আরও সহজ করা হয়েছে
  • @ComposableTarget অ্যানোটেশন এবং @ComposableTargetMarker-এর মাধ্যমে চিহ্নিত অ্যানোটেশন এখন @file প্রিফিক্স ব্যবহার করে ফাইল স্কোপে ব্যবহার করা যেতে পারে। ফাইল স্কোপে টার্গেট অ্যানোটেশন ব্যবহার করলে, কম্পাইলার ধরে নেবে যে ফাইলের সব কম্পোজ করার উপযুক্ত ফাংশন সংশ্লিষ্ট অ্যাপ্লায়ারকে টার্গেট করার জন্য তৈরি করা হয়েছে। যেমন, @file:UiComposable ব্যবহার করে ঘোষণা করা হয় যে সব @Composable ফাংশন কম্পোজ UI অ্যাপ্লায়ারকে টার্গেট করে। যে ফাংশনকে অন্য কোনও অ্যাপ্লায়ারকে টার্গেট করতে হবে, সেটিকে অবশ্যই কাঙ্ক্ষিত অ্যাপ্লায়ারের জন্য টার্গেট মার্কার অ্যানোটেশন প্রদান করতে হবে। (I40804)
  • নতুন পরীক্ষামূলক, প্ল্যাটফর্ম ইন্ডিপেন্ডেন্ট, টেস্ট API চালু করা হয়েছে: interface ComposeUiTest এবং fun runComposeUiTest(block: ComposeUiTest.() -> Unit), যা TestRule-এর প্রয়োজন ছাড়াই Compose UI টেস্ট রান করতে ব্যবহার করা যেতে পারে। ComposeTestRule ছাড়া কোনও টেস্ট রান করতে, runComposeUiTest-এ ল্যাম্বডা হিসেবে টেস্টটি পাস করুন এবং রিসিভার স্কোপে ComposeUiTest মেথড ও মেম্বার ব্যবহার করুন, যেগুলি ComposeContentTestRule-এর মতো একই।

    Android-এর জন্য নির্দিষ্ট interface AndroidComposeUiTest ও fun runAndroidComposeUiTest(block: AndroidComposeUiTest.() -> Unit)-কে AndroidComposeTestRule-এর মতো অন্তর্নিহিত অ্যাক্টিভিটিতে অ্যাক্সেস দেওয়ার জন্য যোগ করা হয়েছে। আরও বেশি নিয়ন্ত্রণের জন্য, আপনি নিজেই class AndroidComposeUiTestEnvironment ইনস্ট্যানশিয়েট করতে পারবেন।

    ডেস্কটপ ইমপ্লিমেন্টেশন হল class DesktopComposeUiTest, কিন্তু এই মুহূর্তে ডেস্কটপ নির্দিষ্ট রান ফাংশন অফার করা হয় না।

    ComposeTestRule থেকে ComposeUiTest-এ কোনও টেস্ট মাইগ্রেট করার কাজটি এইভাবে করা যেতে পারে (Android-এর উদাহরণ)। প্রেরক:

    @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()
        }
    }
    
  • এই মুহূর্তে, ComposeContentTestRule ও ComposeTestRule, ComposeUiTest থেকে এক্সটেন্ড করে না, এর অর্থ হল ComposeUiTest-এর এক্সটেনশন ফাংশন এখনও TestRule ইন্টারফেসে কল করা যাবে না। ComposeUiTest API স্টেবল ভার্সনে আপগ্রেড করা হলে, ComposeContentTestRule ও ComposeTestRule-এর এক্সটেনশন পরিবর্তন করে ComposeUiTest করা হবে। (Ib4e90)

  • LineHeightBehavior-এর নাম পরিবর্তন করে LineHeightStyle করা হয়েছে

  • LineVerticalAlignment-এর নাম পরিবর্তন করে LineHeightStyle.Alignment করা হয়েছে

  • LineHeightTrim-এর নাম পরিবর্তন করে LineHeightStyle.Trim করা হয়েছে

  • LineHeightStyle থেকে ডিফল্ট কনস্ট্রাক্টর ভ্যালু সরিয়ে দেওয়া হয়েছে (I582bf, b/181155707)

  • গ্রেডিয়েন্ট কালারিংয়ের মাধ্যমে টেক্সট ড্র করার একটি উপায় প্রদান করতে TextStyle-এ Brush এবং SpanStyle যোগ করা হয়েছে। (I53869, b/187839528)

  • trimFirstLineTop, trimLastLineBottom অ্যাট্রিবিউট LineHeightBehavior একটি এনামে পরিবর্তন করা হয়েছে: LineHeightTrim. LineHeightTrim-এর মান হল দুটি বুলিয়ান দ্বারা নির্ধারিত ৪টি স্টেট: FirstLineTop, LastLineBottom, দুটিই এবং একটিও নয় (Ifc6a5, b/181155707)

  • TextStyle ও ParagraphStyle-এ LineHeightBehavior-কে যোগ করেছেন। LineHeightBehavior কন্ট্রোল করে যে প্রথম লাইনের উপরে এবং শেষ লাইনের নিচে লাইন হাইট প্রয়োগ করা হবে কিনা। এছাড়াও, এটি TextStyle(lineHeight)-এর দেওয়া স্পেসে লাইনের অ্যালাইনমেন্ট নির্ধারণ করে।

    যেমন, LineHeightBehavior(alignment = LineVerticalAlignment.Center, trimFirstLineTop=false, trimLastLineBottom = false)-এর মাধ্যমে CSS দ্বারা নির্ধারিত আচরণের মতো আচরণ পাওয়া সম্ভব।

  • trimFirstLineTop, trimLastLineBottom কনফিগারেশন শুধুমাত্র তখনই সঠিকভাবে কাজ করে যখন includeFontPadding false হয়। (I97332, b/181155707)

  • PlatformParagraphStyle.lerp ও PlatformSpanStyle.lerp ফাংশন পরিবর্তন করে টপ লেভেল ফাংশন (I9a268) করা হয়েছে

সমস্যার সমাধান

  • PointerInputChange::copy ডকুমেন্টেশনে এখন সঠিকভাবে বলা হয়েছে যে এটি একটি শ্যালো কপি। (I182f5)
  • উচ্চতা সীমিত হলে এবং সব টেক্সট লাইন না ফিট করলে এলিপসিস কাজ করে (Ie528c, b/168720622)
  • ডিফল্ট includeFontPadding চালু করা হয়েছে। TextStyle.platformTextStyle অ্যাট্রিবিউট ব্যবহার করে includeFontPadding বন্ধ করা সম্ভব। আমরা অদূর ভবিষ্যতে ডিফল্ট আচরণ পরিবর্তন করব, তবে সেই সময় পর্যন্ত এটি আমাদের লাইন হাইট সংক্রান্ত উন্নতি (aosp/2058653) আরও ভালোভাবে ইন্টিগ্রেট করতে এবং TextField ক্লিপিং সংক্রান্ত সমস্যা সমাধান করতে সাহায্য করবে। (I01423, b/171394808)

এক্সটার্নাল কন্ট্রিবিউশন

  • উল্লম্বভাবে স্ক্রল করলে MouseInjectionScope.scroll(delta = someDelta) এখন Android-এ উল্টে যায় (someDelta পজিটিভ হলে, এটি নিচের দিকে স্ক্রল করবে) (Ifb697, b/224992993)

ভার্সন 1.2.0-alpha08

২০ এপ্রিল, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha08 রিলিজ করা হয়েছে। 1.2.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ভবিষ্যতে আরও ভালোভাবে আন্তর্জাতিকীকরণকে সমর্থন করার জন্য pluralStringResource ফাংশনগুলিকে পরীক্ষামূলক হিসেবে চিহ্নিত করা হয়েছে। (If24e4)
  • Paragraph ও MultiParagraph এখন Constraints প্যারামিটার গ্রহণ করছে। Constraints.maxHeight পাস করা বর্তমানে কোনও কাজ করে না, তবে ভবিষ্যতে কিছু গণনা করার অনুমতি দেবে, যেমন উচ্চতার উপর ভিত্তি করে এলিপ্সিস করা। (I6afee, b/168720622)
  • SubcomposeSlotReusePolicy.getSlotsToRetain() এখন কাস্টম MutableSet-এর মতো ক্লাস গ্রহণ করে যা এতে নতুন আইটেম যোগ করার অনুমতি দেয় না। (Icd314)
  • PointerIcon এখন একটি @Stable ইন্টারফেস (I9dafe)
  • PointerInputChange-এ আংশিক কনজাম্পশন (নিচে অথবা পজিশন) বন্ধ করা হয়েছে। পরিবর্তন সম্পূর্ণভাবে প্রয়োগ করতে আপনি consume() ব্যবহার করতে পারেন। অন্য কেউ আগে পরিবর্তনটি ব্যবহার করেছেন কিনা তা নির্ধারণ করতে আপনি isConsumed ব্যবহার করতে পারেন।
  • PointerInputChange::copy() এখন সবসময় একটি অগভীর কপি তৈরি করে। এর অর্থ হল, PointerInputChange-এর একটি কপি ব্যবহার করা হয়ে গেলে, কপিগুলি ব্যবহার করা হয়ে যাবে। আপনি আনবাউন্ড PointerInputChange তৈরি করতে চাইলে, পরিবর্তে কনস্ট্রাক্টর ব্যবহার করুন। (Ie6be4, b/225669674)
  • Compose ও View-এর মধ্যে Compose > View ডিরেকশনে নেস্টেড স্ক্রল ইন্টারঅপারেশন চালু করুন। এর অর্থ হল, একটি কম্পোজ প্যারেন্ট নেস্টেড স্ক্রল ভিউ থেকে নেস্টেড স্ক্রল ডেল্টা পেতে পারবে। (If7949, b/174348612)
  • নতুন SemanticsProperty testTagsAsResourceId, যা View সিস্টেমের জন্য ডিজাইন করা UIAutomator টেস্টের সাথে কম্পোজকে কনফর্ম করতে ব্যবহার করা যেতে পারে। (I39c20)
  • FontFamily.SansSerif ব্যবহার করার সময় Android-এ সিস্টেম ফন্টের জন্য উপলভ্য সবকটি ওজন দেখান। এটি API 21-28-এ ইন্টার্নালি sans-serif-medium-এর মতো ফলব্যাক ফন্টের নাম ব্যবহার করবে। এটি একটি আচরণগত পরিবর্তন কারণ এর আগে API 21-28-এ শুধুমাত্র 400 এবং 700 ওয়েট কাজ করত। (I380fe, b/156048036, b/226441992)
  • প্যারাগ্রাফ ও মাল্টিপ্যারাগ্রাফ ইনস্ট্রাক্টররা পজিশনাল আর্গুমেন্টকে ঐচ্ছিক আর্গুমেন্টের আগে আবার সাজিয়েছেন। (Idafaa)
  • AndroidFont এখন কনস্ট্রাক্টর প্যারামিটার হিসেবে typefaceLoader নেয়। (I2c971)

ভার্সন 1.2.0-alpha07

৬ এপ্রিল, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha07 রিলিজ করা হয়েছে। 1.2.0-alpha07 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • নতুন ফাংশন Snapshot.withoutReadObservation { ... } যোগ করা হয়েছে। এটি ব্যবহারকারীকে এই ব্লকের সময় পড়া স্টেট ভ্যালুর পরিবর্তন সাবস্ক্রাইব না করেই পাস করা ল্যাম্বডা চালানোর অনুমতি দেয়। স্ন্যাপশট ভিত্তিক থ্রেড সেফ রাইট/রিড থেকে সুবিধা পেতে চাইলে, কিন্তু অপ্রয়োজনীয় রিকম্পোজিশন বা রিমজার না করেই ভ্যালু রিড করতে চাইলে, এই ফিচারটি আপনার কাজে লাগতে পারে। (I9f365, b/214054486)
  • ComposeView-এর consumeWindowInsets এক্সটেনশন প্রপার্টি ডেভেলপারদের Android WindowInsets-এর কনজাম্পশন বন্ধ করার অনুমতি দেয়। এর ফলে, হায়ারার্কিতে থাকা আলাদা আলাদা ComposeViews একে অপরের কাজে বাধা না দিয়েই WindowInsets প্রয়োগ করতে পারে। (I0ef08, b/220943142)
  • IME-তে দশমিক বিভাজক অন্তর্ভুক্ত করার জন্য Keyboard.Number-এর বিকল্প হিসেবে KeyboardType.Decimal যোগ করা হয়েছে। (Iec4c8, b/209835363)
  • PointerEventType.Scroll ও PointerEvent.scrollDelta এখন স্থিতিশীল API (I574c5, b/225669674)
  • কো-অপারেটিভ ভিউ ক্লাসের জন্য View ও Compose-এর মধ্যে নেস্টেড স্ক্রল ইন্টারপ চালু করুন। এর অর্থ হল, কম্পোজ এখন (সহযোগিতা করা) ভিউ প্যারেন্টে স্ক্রল ডেল্টা পাঠাতে পারবে। (I5d1ac, b/174348612)
  • সিস্টেম-ব্যাপী বোল্ড টেক্সট অ্যাক্সেসিবিলিটি সেটিং (I6c1e7) ইন্টিগ্রেট করতে FontFamily.Resolver আপডেট করা হয়েছে
  • Font(AssetManager, String, ...) বন্ধ করে দেওয়া হয়েছে, এর পরিবর্তে Font(String, AssetManager, ...) ব্যবহার করুন। এটি একটি পরীক্ষামূলক API. (I1c7a4)
  • ফন্ট ফলব্যাক চেনের সময় সিস্টেম-ইনস্টল করা ফন্ট ঐচ্ছিকভাবে খুঁজে দেখতে, নতুন ফন্ট ডেসক্রিপ্টর Font(DeviceFontFamilyName) যোগ করুন। (I30468, b/219754572)
  • TextStyle/ParagraphStyle-এ includeFontPadding-এর জন্য সাময়িক কম্প্যাটিবিলিটি কনফিগারেশন যোগ করা হয়েছে। includeFontPadding, TextStyle(platformStyle = PlatformTextStyle(includeFontPadding = true/false))-এর মাধ্যমে পরিবর্তন করা যেতে পারে। মাইগ্রেশন চালু করার জন্য এটি একটি সাময়িক কনফিগারেশন বিকল্প এবং এটি সরিয়ে দেওয়া হবে। (If47be, b/171394808)
  • ডিবাগিং সংক্রান্ত সাহায্যের জন্য GoogleFont.Provider.isAvailableOnDevice এক্সটেনশন যোগ করুন। (I64e31)
  • @ArrayRes-এর সাথে ব্যবহার করার জন্য GoogleFont.Provider কনস্ট্রাক্টর যোগ করুন (Ic5ee1, b/225984280)
  • Compose GoogleFont-এর নাম পরিবর্তন করে Font(GoogleFont) করা হয়েছে, API অন্যথায় স্টেবল থাকে। (I125f2)

সমস্যার সমাধান

  • ভেতরের প্যাডিং ব্যবহার করা হচ্ছে কিনা তা নিশ্চিত করতে মেটেরিয়াল/স্ক্যাফোল্ডে লিন্ট চেক যোগ করা হয়েছে (Ifb111)

ভার্সন 1.2.0-alpha06

২৩ মার্চ, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha06 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha06-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ফোকাস করা যায় এমন টার্গেটে ফোকাস করার অনুরোধ করতে RequestFocus শব্দার্থ সংক্রান্ত অ্যাকশন যোগ করা হয়েছে। (I17b71)
  • বর্তমান লেআউটের দিকনির্দেশ RTL হলে, VectorPainter-এর কন্টেন্ট ফ্লিপ করার জন্য অটোমেটিক মিররিং কাজ করে, সেই জন্য ভেক্টর ড্রয়েবল পার্সিং আপডেট করা হয়েছে। (I79cd9, b/185760237)
  • API-এর সাথে মানানসই হওয়ার জন্য আপডেট করা শ্যাডো/অ্যাম্বিয়েন্ট কালারকে Modifier.graphicsLayer-এর ট্রেলিং প্যারামিটার হিসেবে সেট করা হয়েছে (I3f864, b/160665122)

  • API-তে কোনও পরিবর্তন করা হলে যাতে তা ভেঙে না যায় তা নিশ্চিত করতে GraphicsLayerScope-এ শ্যাডো/অ্যাম্বিয়েন্ট কালারের ডিফল্ট প্রয়োগ যোগ করা হয়েছে

  • RSB ইভেন্টে ইভেন্টের সময় যোগ করা হয়েছে (Ief8ae)

  • FocusOrder এখন FocusProperties-এর সাথে মার্জ করা হয়েছে এবং focusProperties()-এর কাছে এখন focusOrder()-এর সব ক্ষমতা আছে। FocusOrder এবং focusOrder() বন্ধ করে দেওয়া হয়েছে। focusOrder() যা focusRequester গ্রহণ করে, সেটিকে focusProperties()-এর সাথে focusRequester() মডিফায়ার ব্যবহার করে পরিবর্তন করতে হবে। এর ফলে মডিফায়াররা আরও ভালোভাবে তাদের কাজ আলাদা আলাদাভাবে করতে পারেন। (I601b7)

  • RecyclerView ও Compose দু'টিই আপগ্রেড করলে, এখন চাইল্ড হিসেবে কম্পোজ ভিউ সহ RecyclerView-এর জন্য অনেক ভালো স্ক্রল করার পারফর্ম্যান্স পাওয়া যাবে।

  • বিল্ট-ইন ডিফল্ট স্ট্র্যাটেজি ফিরিয়ে আনার উপায় হিসেবে ViewCompositionStrategy.Default যোগ করুন

  • ViewCompositionStrategy.DisposeOnDetachedFromWindowIfNotInPoolingContainer যোগ করুন, এটি হল নতুন ডিফল্ট স্ট্র্যাটেজি এবং এটি RecyclerView-এর মতো পুলিং কন্টেনার সঠিকভাবে ম্যানেজ করে। (If7282)

  • Multipreview ফিচার যোগ করার প্রথম ধাপ হিসেবে @Preview সহ অ্যানোটেশন ক্লাস অ্যানোটেট করার সুবিধা যোগ করা হয়েছে। এই ধরনের অ্যানোটেশন, কম্পোজ করা যায় এমন মেথড বা অন্যান্য অ্যানোটেশন ক্লাসে অ্যানোটেশন যোগ করতে ব্যবহার করা যেতে পারে, যা পরে প্রদত্ত @Preview-এর মাধ্যমে পরোক্ষভাবে অ্যানোটেশন যোগ করা হয়েছে বলে বিবেচনা করা যেতে পারে। (I12eff)

  • @Preview-এর জন্য ডিভাইসের তালিকায় রেফারেন্স ডিভাইস যোগ করা হয়েছে (I071c9)

সমস্যার সমাধান

  • @UiComposable-এর পরিবর্তে সঠিক কম্পোজ করার উপযুক্ত অ্যানোটেশন @VectorComposable ব্যবহার করতে, ভেক্টর গ্রাফিক্স API আপডেট করা হয়েছে (I942bc)
  • AnnotatedString.Builder.withStyle থেকে crossinline সরান (If84d5)

এক্সটার্নাল কন্ট্রিবিউশন

  • compose-ui: GraphicsLayerScope-এ ambientShadowColor ও spotShadowColor প্রপার্টি যোগ করুন (I1ba1a, b/160665122)
  • pluralStringResource ফাংশনের মাধ্যমে এখন প্লুরাল রিসোর্স কাজ করে। (Ib2f23, b/191375123)

ভার্সন 1.2.0-alpha05

৯ মার্চ, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.2.0-alpha05-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • TextToolbar এখন ActionCallback-এর পরিবর্তে lambda আর্গুমেন্ট নেয়। (Ib2eb9, b/197950089)
  • Tiramisu DP2 (I0cbb7)-এর সাথে ম্যাচ করাতে, কোর ও অ্যাপকম্প্যাটের নালিবিলিটি আপডেট করা হয়েছে
  • পরিমাপ করা ইন্টারফেস এখন parentData প্রপার্টি (I3313f) এক্সপোজ করে
  • Modifier.onPlaced এবং OnPlacedModifier ইন্টারফেস এখন স্থিতিশীল। (Ib5482)
  • কি মজা! Compose অ্যানিমেশন এখন ডেভেলপার বিকল্প থেকে 'অ্যানিমেটর ডিউরেশন স্কেল' সেটিং কাজ করে। (I5a4fc, b/161675988)
  • BeyondBoundsLayout মডিফায়ার লোকাল (If8b51, b/184670295) যোগ করা হয়েছে
  • টেক্সট: includeFontPadding এখন ডিফল্ট হিসেবে বন্ধ করা আছে। includeFontPadding=false-এর ফলে হওয়া ক্লিপিং সংক্রান্ত সমস্যা সমাধান করা হয়েছে এবং লম্বা স্ক্রিপ্টের ক্ষেত্রে কোনও ক্লিপিং হওয়া উচিত নয়। (I31c84, b/171394808)

সমস্যার সমাধান

  • আগে থেকেই কন্টেন্ট থাকলে, আপনি কন্টেন্ট সেট করার চেষ্টা করলে, ComposeContentTestRule.setContent এখন একটি IllegalStateException দেখাবে। (I888a5, b/199631334)
  • Android-এ ক্লিপবোর্ড থেকে রিড করার সময় ক্লিপবোর্ড কন্টেন্টের কারণে হওয়া ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I06020, b/197769306)
  • RSB স্ক্রল করার স্যাম্পেল উন্নত করুন। (I6a596)

এক্সটার্নাল কন্ট্রিবিউশন

  • Kotlinx coroutines 1.6.0 (I3366d) ব্যবহার করার জন্য আপডেট করা হয়েছে

ভার্সন 1.2.0-alpha04

২৩ ফেব্রুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha04 রিলিজ করা হয়েছে। 1.2.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ComposableTarget, ComposableTargetMarker এবং ComposableOpenTarget যোগ করা হয়েছে যা কম্পাইল করার সময় রিপোর্ট করার অনুমতি দেয় যখন কোনও কম্পোজেবল ফাংশন এমন কোনও অ্যাপ্লায়ারকে টার্গেট করে কল করা হয় যা ব্যবহার করার জন্য ডিজাইন করা হয়নি।

    বেশিরভাগ ক্ষেত্রে, কম্পোজ কম্পাইলার প্লাগ-ইন থেকে অ্যানোটেশন অনুমান করা যেতে পারে, তাই এই অ্যানোটেশন সরাসরি ব্যবহার করা বিরল হওয়া উচিত। যেসব ক্ষেত্রে অনুমান করা যায় না তার মধ্যে রয়েছে কাস্টম অ্যাপ্লায়ার তৈরি ও ব্যবহার করা, অ্যাবস্ট্র্যাক্ট কম্পোজ করার উপযুক্ত ফাংশন (যেমন ইন্টারফেস পদ্ধতি), ফিল্ড বা গ্লোবাল ভেরিয়েবল যা কম্পোজ করার উপযুক্ত ল্যাম্বডা (লোকাল ভেরিয়েবল ও প্যারামিটার অনুমান করা হয়), অথবা ComposeNode বা সম্পর্কিত কম্পোজ করার উপযুক্ত ফাংশন ব্যবহার করার সময়।

    কাস্টম অ্যাপ্লায়ারের জন্য, কম্পোজ করা যায় এমন ফাংশন যা ComposeNode বা ReusableComposeNode কল করে, সেগুলিকে ফাংশন ও যেকোনও কম্পোজ করা যায় এমন ল্যামডা প্যারামিটার ComposableTarget টাইপের জন্য অ্যানোটেশন যোগ করতে হবে। তবে, এটি সাজেস্ট করা হয় যে, ComposableTargetMarker দিয়ে অ্যানোটেট করা একটি অ্যানোটেশন তৈরি করুন এবং তারপরে সরাসরি ComposableTarget-এর পরিবর্তে চিহ্নিত অ্যানোটেশন ব্যবহার করুন। ComposableTargetMarker চিহ্নিত কম্পোজ করার উপযুক্ত অ্যানোটেশন হল ComposbleTarget, যার মধ্যে অ্যাপ্লায়ার প্যারামিটার হিসেবে অ্যাট্রিবিউট ক্লাসের সম্পূর্ণ কোয়ালিফায়েড নাম থাকে। ComposableTargetMarker ব্যবহারের উদাহরণ দেখতে anroidx.compose.ui.UiComposable দেখুন। (I38f11)

  • Font(resId, ...) এখন স্টেবল API-তে loadingStrategy নেয়। (Ief3d2)

  • FontLoadingStrategy এখন স্টেবল API. (I1ee35, b/174162090)

  • Text-এ অ্যাসিঙ্ক ফন্ট লোডিং কাজ করে (I77057, b/214587005)

  • কাস্টম Font.ResourceLoader-কে FontFamily.Resolver-এ কনভার্ট করার জন্য ব্রিজ API যোগ করুন। (Ia0060)

সমস্যার সমাধান

  • প্রদত্ত FontFamily.Resolver পপ-আপের মতো সাবকম্পোজিশনে পাস করা হয়।
  • প্রদত্ত Font.ResourceLoader পপ-আপের মতো সাবকম্পোজিশনে পাস করা হয়। (I48fa5)

ভার্সন 1.2.0-alpha03

৯ ফেব্রুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha03 রিলিজ করা হয়েছে। 1.2.0-alpha03 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • TextInputSession ও TextInputService-এ notifyFocusedRect পদ্ধতি এখন অবচিত করা হয়েছে এবং আর কল করা হবে না। এর পরিবর্তে BringIntoViewRequester ব্যবহার করুন। (Ia4302, b/192043120, b/216842427, b/178211874)
  • RenderNode স্টাব ক্লাসে destroyDisplayListData মেথড যোগ করা হয়েছে (I1e659, b/216660268)
  • নতুন API যোগ করা হয়েছে যা আপনাকে আগে থেকে কম্পোজ করা SubcomposeLayout বাচ্চাদের আগে থেকে পরিমাপ করার অনুমতি দেয়। (I857ea)
  • movableContentOf যোগ করা হয়েছে যা কম্পোজ করা যায় এমন lambda-কে এমন lambda-তে কনভার্ট করে যা সেটির স্টেট এবং সংশ্লিষ্ট নোডকে যে নতুন লোকেশন থেকে কল করা হয় সেখানে সরিয়ে দেয়। আগের কলটি কম্পোজিশন থেকে বেরিয়ে গেলে সেটির স্টেট সাময়িকভাবে সেভ করা হয় এবং যদি নতুন কল কম্পোজিশনে প্রবেশ করে, তাহলে স্টেট ও সংশ্লিষ্ট নোড নতুন কলের লোকেশনে সরিয়ে দেওয়া হয়। নতুন কোনও কল যোগ করা না হলে, স্টেটটি স্থায়ীভাবে সরিয়ে দেওয়া হয় এবং মনে রাখবেন, পর্যবেক্ষকদের এই বিষয়ে জানানো হয়।

    একই কম্পোজিশনে একাধিকবার movableContentOf lambda কল করা হলে, প্রতিটি কলের জন্য নতুন স্টেট ও নোড তৈরি করা হয় এবং কল কম্পোজিশন থেকে বেরিয়ে গেলে ও নতুন কল প্রবেশ করলে, কল করার ক্রম অনুযায়ী প্রথম বেরিয়ে যাওয়া কল থেকে প্রবেশ করা কলে স্টেট সরিয়ে দেওয়া হয়। নতুন কলের মাধ্যমে দাবি করা হয়নি এমন সব স্টেট স্থায়ীভাবে সরিয়ে দেওয়া হয়। (Ib4850)

  • FontFamilyResolver এখন LocalFontFamilyResolver.current-এর মাধ্যমে উপলভ্য

  • কম্পোজ ব্যবহারের বাইরে নতুন FontFamily রিসলভার তৈরি করতে createFontFamilyResolver(context) ও createFontFamilyResolver(context, coroutineScope) যোগ করা হয়েছে।

  • Paragraph ও MultiParagraph এখন FontFamily.Resolver নেয়

  • TextLayoutResult.layoutInput.fontFamilyResolver-এ এখন এই লেআউটের জন্য ব্যবহৃত রেজোলভার আছে, এটি আর ব্যবহার করা হয় না বলে TextLayoutResult.layoutInput.resourceLoader সরিয়ে দেওয়া হয়েছে। (Id5a45, b/174162090)

  • ফলব্যাক বিহেভিয়ার সহ অ্যাসিঙ্ক ও ঐচ্ছিক ফন্ট লোডিংয়ের জন্য সহায়তা। এই পাথটি Text ও TextField ব্যবহার করে এবং FontFamilyResolver-এর মাধ্যমে এক্সপোজ করা হয়

  • FontFamilyResolver.preload-এর মাধ্যমে ফন্ট প্রি-লোডিংয়ের সুবিধা

  • FontFamilyResolver.setAsyncLoadContext অ্যাসিঙ্ক ফন্ট লোড করার জন্য ব্যবহৃত গ্লোবাল কোরাউটিন কন্টেক্সট সেট করার অনুমতি দেয়। (I87fe8, b/174162090)

  • Android-এ নতুন ধরনের ফন্ট রিসোর্স ডেসক্রিপ্টর প্রদান করার জন্য AndroidFont, একটি নতুন লো-লেভেল API যোগ করা হয়েছে। যেমন, কোনও অ্যাপ-নির্দিষ্ট ব্যাকএন্ড থেকে ফন্ট লোড করা, ডিভাইসে আগে থেকে ইনস্টল করা ফন্ট ঐচ্ছিকভাবে লোকেট করা অথবা বর্তমান ফন্ট ফ্যাক্টরি দ্বারা প্রদান করা হয়নি এমন কোনও রিসোর্স থেকে ফন্ট লোড করা।

  • ঐচ্ছিক ও অ্যাসিঙ্ক ফন্ট লোডিংয়ের জন্য আরও উন্নত Font.ResourceLoaded API. অ্যাপ্লিকেশন ডেভেলপারদের এই API সরাসরি ব্যবহার করার জন্য সাজেস্ট করা হয় না। নতুন ধরনের ফন্ট যোগ করতে AndroidFont দেখুন।

  • Font.AndroidResourceLoader এক্সটেনশন ফাংশন, কম্পোজিশনের বাইরে Font.ResourceLoader তৈরি করার অনুমতি দেয়।

  • রিসোর্স-ভিত্তিক ফন্টে loadingStrategy প্যারামিটার যোগ করা হয়েছে, যাতে রিসোর্স ফন্ট ডাউনলোড করা যায় এমন ফন্ট XML-এর রেফারেন্স দিলে অ্যাসিঙ্ক লোডিং করা যায়। (Ie5aea, b/174162090)

  • Typeface(FontFamily) কনস্ট্রাক্টর অননুমোদিত হয়েছে। এটি আগে ফন্ট প্রি-লোড করার জন্য ব্যবহার করা হত, যা ডাউনলোড করা যায় এমন ফন্টের ক্ষেত্রে ১০ সেকেন্ড পর্যন্ত সময় নিতে পারে। ডাউনলোড করা যায় এমন ফন্ট থাকলে, এই কল ১০ সেকেন্ডের জন্য ব্লক হয়ে যেতে পারে। এর পরিবর্তে FontFamilyResolver.preload ব্যবহার করুন।

  • fontResource(FontFamily): Typeface বন্ধ করা হয়েছে। এটি আগে ফন্ট প্রি-লোড করার জন্য ব্যবহার করা হত, যা ডাউনলোড করা যায় এমন ফন্টের ক্ষেত্রে ১০ সেকেন্ড পর্যন্ত সময় নিতে পারে। পরিবর্তে FontFamilyResolver.preload ব্যবহার করুন (If8e7c, b/174162090)

  • SubcomposeLayoutState কনস্ট্রাক্টর maxSlotsToRetainForReuse গ্রহণ করা এখন বন্ধ করা হয়েছে। এর পরিবর্তে, SubcomposeSlotReusePolicy গ্রহণকারী একটি নতুন কনস্ট্রাক্টর আছে - একটি নতুন ইন্টারফেস যা ভবিষ্যতে আবার ব্যবহারের জন্য কোন স্লটগুলি ধরে রাখা উচিত তার উপর আরও গ্র্যানুলার কন্ট্রোল প্রদান করে। (I52c4d)

  • Color-এ HSV ও HSL ফাংশনকে এক্সপেরিমেন্টাল নয় এমন API হিসেবে প্রকাশ করে। Oklab কালার স্পেস এখন পাবলিক API. (I08fb6, b/180731008)

  • পুরনো হয়ে যাওয়া AndroidComposeTestRule.AndroidComposeStatement, যা পাবলিক API-তে থাকার কথা ছিল না এবং আপনার জন্য যাইহোক কোনও কাজ করেনি। (Ibc46b)

  • ইন্টার্নাল জেনারেটেড kt ক্লাসের নাম পরিবর্তন (Ia0b9e, b/174162090)

  • সরানো হয়েছে FontLoadingStrategy.values (I42a9d, b/174162090)

  • গ্লোবাল ফন্ট লোডারকে এখন FontFamilyResolver বলা হয়। (I4f773, b/174162090)

  • ডেস্কটপের জন্য নতুন ফন্ট লোডিং সিস্টেম ব্যবহার করুন। (I9ce5c, b/174162090)

  • FontFamily.Resolver.resolve ফেরত State<Any> (I4406c, b/174162090)

সমস্যার সমাধান

  • TextField এখন কীবোর্ডের উপরে রাখা হবে, যদি সেটি ফোকাস করা থাকে এবং কীবোর্ড দেখানো হয়, যদি সফ্ট ইনপুট মোড ADJUST_PAN হয়। (I8eaeb, b/190539358, b/192043120)
  • ডেস্কটপ FontFamily.Resolver-এর জন্য কম্পোজিশন লোকাল ব্যবহার করে
  • ডেস্কটপ FontLoader বন্ধ করে দেওয়া হয়েছে
  • ডেস্কটপে নতুন createFontFamilyResolver ফ্যাক্টরি (I6bbbb, b/174162090)
  • টেক্সট ফিল্ডের মধ্যে ফোকাস পরিবর্তন করার সময় সফ্ট কীবোর্ড ইনপুট টাইপ আর ফ্লিকার করে না। (I1bf50, b/187746439)

ভার্সন 1.2.0-alpha02

২৬ জানুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha02 রিলিজ করা হয়েছে। 1.2.0-alpha02 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • রোটেটিং সাইড বোতাম (I18bf5, b/210748686) সহ পরিধানযোগ্য ডিভাইসের জন্য Modifier.onRotaryScrollEvent() ও Modifier.onPreRotaryScrollEvent() যোগ করা হয়েছে
  • এক্সপেরিমেন্টাল View.createLifecycleAwareRecomposer এক্সটেনশন (I0cde6) যোগ করুন

এক্সটার্নাল কন্ট্রিবিউশন

  • PointerEvent.scrollDelta.y এখন Android-এ ইনভার্ট করা হয়েছে (এখন আমরা মাউস হুইল ডানদিকে কাত করলে -১-এর পরিবর্তে ১ রিটার্ন করে) (Ia9811)

ভার্সন 1.2.0-alpha01

১২ জানুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.2.0-alpha01 রিলিজ করা হয়েছে। 1.2.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পুরনো হয়ে গেছে FontFamily.canLoadSynchronously। এই প্রপার্টির কোনও শব্দার্থগত অর্থ নেই। (Ica5ef)
  • লেআউট ইন্সপেক্টরে ইনভেরিয়েন্ট আইডি জেনারেট করার জন্য CompositionData-এ পরিচয় ফিল্ড যোগ করা হয়েছে। (Ic116e)
  • প্রিভিউ ডিভাইসের তালিকায় Wear OS ডিভাইস আইডি যোগ করা হয়েছে (I93232)

নির্ভরতা সংক্রান্ত আপডেট

  • এখন Kotlin 1.6.10-এর উপর নির্ভর করে।

ভার্সন 1.1

ভার্সন 1.1.1

২৩ ফেব্রুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.1.1 রিলিজ করা হয়েছে। 1.1.1 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • androidx.compose.ui.platform.RenderNodeLayer.updateDisplayList-এ NullPointerException সংক্রান্ত সমস্যার সমাধান করুন (aosp/1947059, b/206677462)
  • Android-এ ক্লিপবোর্ড থেকে রিড করার সময় ক্লিপবোর্ড কন্টেন্টের কারণে হওয়া ক্র্যাশ সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (I06020, b/197769306)
  • LazyVerticalGrid-এ RTL সংক্রান্ত সমস্যা সমাধান করা হয়েছে (aosp/1931080, b/207510535)

ভার্সন 1.1.0

৯ ফেব্রুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.1.0 রিলিজ করা হয়েছে। 1.1.0 ভার্সনে এইসব কমিট রয়েছে।

1.0.0 ভার্সনের পর থেকে গুরুত্বপূর্ণ পরিবর্তন

  • Android 12-এর জন্য স্থিতিশীল সহায়তা ওভারস্ক্রল এফেক্ট
  • টাচ টার্গেটের সাইজ সংক্রান্ত উন্নতি
    • মনে রাখবেন, Compose 1.0-এর ক্ষেত্রে, মেটেরিয়াল কম্পোনেন্ট, টাচ টার্গেট সাইজের জন্য মেটেরিয়াল অ্যাক্সেসিবিলিটি নির্দেশিকা মেনে চলতে, লেআউট স্পেস বাড়াবে। যেমন, আপনি বোতামের সাইজ ছোট করে সেট করলেও, বোতামের টাচ টার্গেট কমপক্ষে ৪৮x৪৮dp সাইজে প্রসারিত হবে। এটি মেটেরিয়াল ডিজাইন কম্পোনেন্টের একই আচরণে Compose Material-কে অ্যালাইন করে, এর ফলে আপনি ভিউ ও Compose মিশিয়ে ব্যবহার করলেও আচরণে কোনও পরিবর্তন হয় না। এছাড়াও, এই পরিবর্তন নিশ্চিত করে যে আপনি Compose Material কম্পোনেন্ট ব্যবহার করে UI তৈরি করলে, টাচ টার্গেট অ্যাক্সেসিবিলিটির ন্যূনতম প্রয়োজনীয়তা পূরণ হবে।
  • নেভিগেশন রেলের জন্য স্থিতিশীল সহায়তা
  • আগে পরীক্ষামূলক API-এর সংখ্যাকে স্থিতিশীল করে
  • Kotlin-এর নতুন ভার্সনের জন্য সহায়তা

ভার্সন 1.1.0-rc03

২৬ জানুয়ারি, ২০২২

androidx.compose.ui:ui-*:1.1.0-rc03 রিলিজ করা হয়েছে। Version 1.1.0-rc03-এ এইসব কমিট আছে।

সমস্যার সমাধান

  • Compose Material 1.1.0-rc03 ভার্সনে কাজ করার জন্য আপডেট করা হয়েছে

ভার্সন 1.1.0-rc01

১৫ ডিসেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-rc01 রিলিজ করা হয়েছে। 1.1.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • অ্যাক্সেসিবিলিটি স্ক্রল অ্যাকশন (I7cbfb) মিসিং হওয়ার কারণে হওয়া সমস্যার সমাধান করা হয়েছে
  • SemanticsNodeInteraction.captureToImage() এখন HardwareRenderer.isDrawingEnabled() false হলেও কাজ করবে, কল চলাকালীন এটি চালু করে (Idf3d0)

ভার্সন 1.1.0-beta04

১ ডিসেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-beta04 রিলিজ করা হয়েছে। 1.1.0-beta04 ভার্সনে এইসব কমিট আছে।

নতুন ফিচার

  • Kotlin 1.6.0-এর সাথে মানানসই করে আপডেট করা হয়েছে

API-তে পরিবর্তন

  • androidx.core.view-এ নাল ভ্যালু সংক্রান্ত সমস্যা সমাধান করা হয়েছে (I7078a, b/204917439)
  • পরীক্ষামূলক API যোগ করা হয়েছে যা ব্যবহারকারীদের PointerInputchange সম্পূর্ণভাবে ব্যবহার করতে দেয় অথবা এটি ব্যবহার করা হয়েছে কিনা তা চেক করে। (I2e59d)
  • UI লেয়ারে মাউস স্ক্রল হুইল ইভেন্টের জন্য সহায়তা যোগ করে। (Ia14eb, b/198214718)
  • পরীক্ষামূলক Modifier.composed ওভারলোড যোগ করুন যা সমান কিনা তা তুলনা করার জন্য কী গ্রহণ করে এবং অপ্টিমাইজেশন এড়িয়ে যাওয়ার জন্য উপযুক্ত হয়। (Ice799, b/205851704)
  • ComposeNotIdleException এখন Throwable থেকে সরাসরি না গিয়ে Exception থেকে যায়। মনে রাখবেন, এর অর্থ হল, যে ক্যাচ ক্লজ Exception-কে ক্যাচ করছিল, সেটি এখন ComposeNotIdleException-কে ক্যাচ করতে পারে, যেখানে আগে সেটি তা করত না। (I9c217)

সমস্যার সমাধান

  • IME দৃশ্যমানতা পরিবর্তন হলে টেক্সট হ্যান্ডেল না সরানোর সমস্যা সমাধান করা। (I25f2e)

ভার্সন 1.1.0-beta03

১৭ নভেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-beta03 রিলিজ করা হয়েছে। 1.1.0-beta03 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • প্লেসমেন্ট পরিবর্তন পর্যবেক্ষণ করার অনুমতি দিতে নতুন মডিফায়ার Modifier.onPlaced যোগ করা হয়েছে। তাই, দেখা গেছে যে প্লেসমেন্টে পরিবর্তন হয়েছে তার উপর ভিত্তি করে চাইল্ড মডিফায়ারের অফসেটে অতিরিক্ত পরিবর্তন করা যেতে পারে। (I558fd)
  • InjectionScope.flush() এবং InjectionScope.dispose() সরানো হয়েছে। আগেকার মতো, কল করা perform*Input() মেথডের শেষে এখন সব ইভেন্ট ফ্ল্যাশ করা হয় এবং স্কোপ ডিসপোজ করা হয়। (I2bed8)
  • MultiModalInjectionScope.Touch এবং MultiModalInjectionScope.Mouse সরানো হয়েছে। মাল্টি-মডাল জেসচারের জন্য টাচ ও মাউস ইভেন্ট ইনজেক্ট করতে, আপনি এখন MultiModalInjectionScope.touch() ও MultiModalInjectionScope.mouse() ব্যবহার করতে পারবেন, এই দু'টিই এমন ল্যাম্বডা গ্রহণ করে যেটির সেই মডালিটির রিসিভার স্কোপ আছে। (Idde18)

সমস্যার সমাধান

  • durationMillis-এর ডিফল্ট ভ্যালু এখন এমনভাবে গণনা করা হয় যাতে TouchInjectionScope.swipeWithVelocity-এ সোয়াইপ করা যায়। (I19deb)

ভার্সন 1.1.0-beta02

৩ নভেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-beta02 রিলিজ করা হয়েছে। 1.1.0-beta02 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পরীক্ষামূলক BringIntoView API যোগ করা হয়েছে যা আপনাকে অভিভাবকের কাছে অনুরোধ পাঠাতে দেয় যাতে তারা স্ক্রল করে কোনও আইটেমকে ভিউতে আনতে পারেন (Ib918d, b/195353459)
  • টুলিংয়ের জন্য নতুন অ্যানিমেশন API. বিশেষ করে, তারা ট্রানজিশনে অ্যানিমেশন ও তার কনফিগারেশন পরিদর্শন করার জন্য টুলিংয়ের অনুমতি দেয়। (I4116e)

এক্সটার্নাল কন্ট্রিবিউশন

  • Added Modifier.pointerHoverIcon (I95f01)

ভার্সন 1.1.0-beta01

২৭ অক্টোবর, ২০২১

androidx.compose.ui:ui-*:1.1.0-beta01 রিলিজ করা হয়েছে। 1.1.0-beta01 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • পরীক্ষামূলক BringIntoView API যোগ করা হয়েছে যা আপনাকে অভিভাবককে অনুরোধ পাঠাতে দেয় যাতে তারা স্ক্রল করে কোনও আইটেমকে ভিউতে আনতে পারেন (Ib918d, b/195353459)
  • টুলিংয়ের জন্য নতুন অ্যানিমেশন API. বিশেষ করে, তারা ট্রানজিশনে অ্যানিমেশন ও তার কনফিগারেশন পরিদর্শন করার জন্য টুলিংয়ের অনুমতি দেয়। (I4116e)

ভার্সন 1.1.0-alpha06

১৩ অক্টোবর, ২০২১

androidx.compose.ui:ui-*:1.1.0-alpha06 রিলিজ করা হয়েছে। 1.1.0-alpha06 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • ViewRootForInspector ও LayoutInfo.ownerViewId (I5c2e3) থেকে ExperimentalComposeUiApi সরিয়ে দিন
  • লেআউটের জন্য চাইল্ড-লেস ওভারলোড যোগ করা হয়েছে, যার ফলে কার্যকারিতা উন্নত হয়েছে (Ib0d9a)
  • ক্রস-মডিউল কল করার জন্য প্রয়োজনীয় InternalCompilerApi কম্পোজার পদ্ধতি থেকে সরানো হয়েছে (I1aa0b)
  • SemanticsNodeInteraction.performSemanticsAction এখন যে SemanticsNodeInteraction-এ ফাংশন কল করা হয়েছে সেটি রিটার্ন করে। (I9e5db)
  • টাচমোড/ননটাচমোড শনাক্ত করতে LocalInputModeManager-এ CompositionLocal যোগ করা হয়েছে। (I6a83c, b/175899786)
  • viewConfiguration: ViewConfiguration-এ LayoutInfo যোগ করা হয়েছে যাতে গ্রাহকরা লং প্রেস টাইম-আউটের মতো জিনিসের সঠিক ভ্যালু পান। (I76ca6)
    • দীর্ঘক্ষণ প্রেস করার টাইমআউট বা টাচ স্লপের মতো বিষয়গুলির উপর ভিত্তি করে ইনপুট ইনজেকশন অ্যাডজাস্ট করার জন্য viewConfiguration: ViewConfiguration-এর সাথে InjectionScope যোগ করা হয়েছে।
    • টাচ ও মাউস ইনপুট, দু'টির ক্ষেত্রেই বেশিক্ষণ প্রেস করা ও ডবল ট্যাপ করার ডিফল্ট সময়সীমা পরিবর্তন করে InjectionScope.viewConfiguration-এর ভ্যালুর উপর ভিত্তি করে সেট করা হয়েছে।
  • TextField ও DropdownMenu সহ ExposedDropdownMenuBox-এর উপর ভিত্তি করে ExposedDropdownMenu-এর প্রয়োগ (If60b2)
  • dismissOnOutsideClick-কে PopupProperties-এ যোগ করা হয়েছে, এর ফলে deprecate করা dismissOnClickOutside-কে সরিয়ে দেওয়া হয়েছে। নতুন প্রপার্টি ক্লিক পজিশন ও অ্যাঙ্কর বাউন্ড পায়, এর ফলে onDismissRequest ইনভোক করা উচিত কিনা সেই বিষয়ে আরও ভাল কন্ট্রোল পাওয়া যায়। যেমন, অ্যাঙ্করে টাচ করার ফলে অ্যাঙ্কর ডিসমিস হওয়া আটকাতে এটি কাজে লাগতে পারে।
    • PopupProperties-এ updateAndroidWindowManagerFlags যোগ করা হয়েছে, এর ফলে পপ-আপের মাধ্যমে Android WindowManager-এ পাস করা ফ্ল্যাগগুলির উপর লো-লেভেল কন্ট্রোল পাওয়া যায়। lambda-এর প্যারামিটার হল PopupProperties ভ্যালু থেকে গণনা করা ফ্ল্যাগ যা WindowManager ফ্ল্যাগের ফলাফল দেয়: যেমন, focusable। lambda-এর ফলাফল হল চূড়ান্ত ফ্ল্যাগ যা Android WindowManager-এ পাস করা হবে। ডিফল্ট হিসেবে, updateAndroidWindowManagerFlags প্যারামিটার থেকে গণনা করা ফ্ল্যাগ অপরিবর্তিত রাখবে। এই API সাবধানে ব্যবহার করা উচিত, শুধুমাত্র সেইসব ক্ষেত্রে যেখানে পপ-আপের খুব নির্দিষ্ট আচরণ সংক্রান্ত প্রয়োজনীয়তা রয়েছে। (I6e9f9)
  • Recomposer.state-এর ব্যবহার বন্ধ করে দেওয়া হয়েছে এবং এর পরিবর্তে Recomposer.currentState ব্যবহার করা হচ্ছে, যাতে এর ধরন পরিবর্তন করে StateFlow (Ic2ab3, b/197773820) করা যায়
  • InjectionScope-এ flush() ও dispose()-কে যোগ করেছেন। আপনি যখনই সমস্ত সারিবদ্ধ ইভেন্ট অবিলম্বে ফ্ল্যাশ করতে চান এবং যখনই স্কোপ ডিসপোজ করতে চান, তখনই এগুলি ব্যবহার করুন। (Ifb73a)
  • performScrollToNode(matcher: SemanticsMatcher) যোগ করা হয়েছে যা প্রদত্ত ম্যাচারের মাধ্যমে ম্যাচ করা কন্টেন্টে স্ক্রল করা যায় এমন কন্টেনারকে স্ক্রল করে। (Ic1cb8)
  • InjectionScope এখন Density প্রয়োগ করে, যার ফলে আপনি performTouchInput ও বন্ধুদের মধ্যে সহজেই px ও dp-এর মধ্যে কনভার্ট করতে পারবেন। (I8fe1f)

সমস্যার সমাধান

  • AndroidView এখন ViewTreeLifecycleOwner এবং ViewTreeSavedStateRegistryOwner-এর মাধ্যমে LocalLifecycleOwner ও LocalSavedStateRegistryOwner-কে এর ভিউতে প্রোপাগেট করে। (I38f96, b/179708470)
  • WearOS SwipeToDismissBox কখনও কখনও সোয়াইপ হ্যান্ডেল না করার সমস্যা সমাধান করা হয়েছে। (I9387e)
  • ইনপুট ইভেন্ট ইনজেক্ট করার মধ্যে ডিফল্ট সময় ১০মিলি সেকেন্ড থেকে ১৬মিলি সেকেন্ডে পরিবর্তন করা হয়েছে। এটি ইনপুট জেসচার পারফর্ম করে এমন টেস্টের ফলাফলকে সম্ভাব্যভাবে পরিবর্তন করে যেমন, নির্দিষ্ট সোয়াইপ। (I829fd)

ভার্সন 1.1.0-alpha05

২৯ সেপ্টেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-alpha05 রিলিজ করা হয়েছে। 1.1.0-alpha05 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ইন্টার-মডিফায়ার কমিউনিকেশনের জন্য সহায়তা যোগ করা হয়েছে (Id5467, b/198826874)
  • PointerEventChange-এ এক্সপেরিমেন্টাল ঐতিহাসিক পয়েন্টার যোগ করা হয়েছে। (Ic1fd8, b/197553056, b/199921305)
  • LayoutInfo-এ density: Density ও layoutDirection: LayoutDirection-কে যোগ করেছেন। এর ফলে LayoutInfo গ্রাহকরা LayoutInfo এ দেখানো ডাইমেনশন ও পজিশন সঠিকভাবে বুঝতে পারেন। (I002f1)
  • মাউস ইভেন্ট ইনজেক্ট করার জন্য পরীক্ষামূলক সহায়তা যোগ করা হয়েছে। মাউস ইভেন্ট পাঠানো শুরু করতে performMouseInput ব্যবহার করুন অথবা performMultiModalInput-এর সাথে মাল্টি মোডাল ইনপুট জেসচারের সময় MultiModalInjectionScope-এর Mouse প্রপার্টির মাধ্যমে মাউস ইভেন্ট পাঠান। উপলভ্য API-এর ডকুমেন্টেশনের জন্য MouseInjectionScope দেখুন। (Iaa4a8, b/190493367)

সমস্যার সমাধান

  • স্ক্রল করার ক্ষেত্রে স্ক্রল করা যায় এমন কন্টেন্টের (লেজি ও নন-লেজি, দু'টিই) অ্যাক্সেসিবিলিটি সংক্রান্ত সহায়তা সম্পর্কিত সমস্যা সমাধান করা হয়েছে (I6cdb0)
  • TouchInjectionScope.swipeWithVelocity-এ উন্নত করা হয়েছে। এটি এখন ইনপুট ভেরিয়েবলের একটি বিস্তৃত রেঞ্জ গ্রহণ করে এবং কোনও সোয়াইপ তৈরি করা না গেলে ইনপুটে পরিবর্তন সাজেস্ট করবে (I40fbe, b/182477143)

ভার্সন 1.1.0-alpha04

১৫ সেপ্টেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-alpha04 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha04-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • PointerEvent-এ এখন PointerEventType হভার ইভেন্ট কাজ করে। (I091fa)
  • বাচ্চাদের অভিভাবকের পয়েন্টার ইনপুট বাউন্ডের বাইরে পয়েন্টার ইনপুট গ্রহণ করার অনুমতি দিন। অভিভাবক প্রপার্টি PointerInputScope.alwaysInterceptChildEvents (I9eae3, b/192479655) সহ সেইসব কল ইন্টারসেপ্ট করতে পারেন
  • performGesture ও GestureScope বাতিল করা হয়েছে, যেগুলি performTouchInput ও TouchInjectionScope দ্বারা প্রতিস্থাপিত হয়েছে। (Ia5f3f, b/190493367)
  • touchBoundsInRoot থেকে SemanticsNode-এ যোগ করা হয়েছে, যার মধ্যে ন্যূনতম টাচ টার্গেট সাইজ অন্তর্ভুক্ত, যাতে ডেভেলপাররা নিশ্চিত করতে পারেন যে টাচ টার্গেট অ্যাক্সেসিবিলিটি সংক্রান্ত ন্যূনতম প্রয়োজনীয়তা পূরণ করে। (I2e14b, b/197751214)
  • পরিদর্শনযোগ্য (I927bc, b/191017532) আইটেমের প্রয়োগ আবার করা
  • কম্পোজ করা প্যারামিটারের সাথে ম্যাচ করার জন্য 'ইনস্পেক্টেবল' প্যারামিটারের নাম পরিবর্তন করা হয়েছে (I3a482, b/191017532)
  • performTouchInput ও TouchInjectionScope-এর পরিবর্তে performTouchInput ও TouchInjectionScope চালু করা হয়েছে। এর ফলে অন্যান্য মোডালিটি (যেমন মাউস) ব্যবহার করা যাবে।

    TouchInjectionScope-এর পদ্ধতি GestureScope-এর মতোই, তবে movePointerTo ও movePointerBy-এর নাম পরিবর্তন করে updatePointerTo ও updatePointerBy করা হয়েছে। অন্যান্য সব পদ্ধতি একই।

    TouchInjectionScope-এর আচরণ প্রায় GestureScope-এর মতোই, তবে দুটি ছোট ছোট পার্থক্য আছে:

    1. পয়েন্টার সরানো হয়েছে, কিন্তু কোনও মুভ ইভেন্ট পাঠানো হয়নি, এমন অবস্থায় ডাউন ইভেন্ট পাঠানো হলে (অন্যভাবে বলতে গেলে, updatePointerTo() ব্যবহার করা হয়েছে, কিন্তু move() নয় এবং তারপরে down() কল করা হয়েছে), আগের ইমপ্লিমেন্টেশন ইভেন্টের সময় এগিয়ে নিয়ে যাবে এবং ডাউন ইভেন্ট পাঠানোর আগে একটি মুভ ইভেন্ট পাঠাবে। নতুন ইমপ্লিমেন্টেশন এখনও move ইভেন্ট পাঠায়, কিন্তু এই নির্দিষ্ট পরিস্থিতিতে ইভেন্টের সময় এগিয়ে নিয়ে যায় না।
    2. পয়েন্টার সরানো হয়েছে অথচ কোনও মুভ ইভেন্ট না পাঠিয়ে (উপরের মতো) কোনও আপ ইভেন্ট পাঠানো হলে, আগের ইমপ্লিমেন্টেশন ইভেন্টের সময় এগিয়ে দিত এবং আপ ইভেন্ট পাঠানোর আগে একটি মুভ ইভেন্ট পাঠাত। নতুন ইমপ্লিমেন্টেশন এগুলির কোনওটিই করে না: পয়েন্টারের নতুন পজিশন শুধুমাত্র 'আপ' ইভেন্টের মাধ্যমে রিফ্লেক্ট করা হবে।

    সবশেষে, TouchInjectionScope প্রদত্ত পয়েন্টারের বর্তমান পজিশন পাওয়ার জন্য currentPosition(pointerId: Int) একটি নতুন পদ্ধতি নিয়ে এসেছে। (If1191, b/190493367)

সমস্যার সমাধান

  • ন্যূনতম টাচ টার্গেট সংক্রান্ত উদ্দেশ্যে ক্লিপের অঞ্চল ছাড়িয়ে টাচ টার্গেট বাউন্ড এক্সটেন্ড করার অনুমতি দিন। (I43e10, b/171509422)
  • Android 12 ডিভাইসে স্ট্রেচ ওভারস্ক্রল করার সুবিধা যোগ করা হয়েছে। (Iccf3c, b/171682480)

ভার্সন 1.1.0-alpha03

১ সেপ্টেম্বর, ২০২১

androidx.compose.ui:ui-*:1.1.0-alpha03 রিলিজ করা হয়েছে। 1.1.0-alpha03 ভার্সনে এইসব কমিট আছে।

নতুন ফিচার

  • Compose 1.1.0-alpha03-কে Kotlin 1.5.30-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে। (I74545)

API-তে পরিবর্তন

  • অন্যান্য মডিফায়ার র‍্যাপ করার জন্য Modifier.inspectable যোগ করা হয়েছে। (I1909b, b/191017532)
  • BlurredEdgeTreatment API যোগ করা হয়েছে যাতে ব্লার ব্যবহারের ক্ষেত্রে ক্লিপ ফ্ল্যাগ ও TileMode-এর আরও সাধারণভাবে ব্যবহৃত কম্বিনেশন ব্যবহার করা যায়। বেশিরভাগ ব্যবহারিক প্রয়োগের ক্ষেত্রে অস্পষ্ট কন্টেন্টকে আসল কন্টেন্টের সীমানার বাইরে রেন্ডার করতে দেওয়া হয় এবং এই সীমানার বাইরের অংশগুলিকে স্বচ্ছ কালো রঙ দিয়ে অস্পষ্ট করা হয় অথবা কন্টেন্টকে কন্টেন্টের সীমানায় ক্লিপ করা হয়। এর জন্য, কন্টেন্টের সীমানার বাইরে থাকা অস্পষ্ট কার্নেলের জন্য সবচেয়ে কাছের প্রান্ত স্যাম্পেল করা হয়। (I6b4b7, b/166927547)
  • কম্পোজ ডেস্কটপে RenderEffect-এর জন্য সহায়তা যোগ করা হয়েছে। অফসেট এফেক্ট এবং কম্পোজিশন হায়ারার্কির একটি অংশে ব্লার ভিজ্যুয়াল এফেক্ট যোগ করার সহজ উপায় হিসেবে ব্লার মডিফায়ার চালু করা হয়েছে। (I0f6aa, b/166927547)
  • RenderEffect API চালু করা হয়েছে যা Modifier.graphicsLayer-এ ঐচ্ছিকভাবে কনফিগার করা যায় এবং এর মাধ্যমে লেয়ারের কন্টেন্ট পরিবর্তন করা যায়। এটি কম্পোজ করা যায় এমন কন্টেন্ট এবং কম্পোজিশন হায়ারার্কির মধ্যে চাইল্ড কম্পোজ করা যায় এমন কন্টেন্টকে অস্পষ্ট করতে ব্যবহার করা যায়। (I47c4d, b/166927547)
  • AwaitPointerEventScope-এ এখন withTimeout() এবং withTimeoutOrNull() আছে (I507f0, b/179239764, b/182397793)
  • অ্যাক্সেসিবিলিটি নিশ্চিত করতে, সিম্যান্টিক্স ও পয়েন্টার ইনপুটে ব্যবহারের জন্য ViewConfiguration -এ ন্যূনতম টাচ টার্গেট সাইজ যোগ করা হয়েছে। (Ie861c)
  • TileMode.Decal সাপোর্ট যোগ করুন যা ব্লার ভিত্তিক RenderEffects-এর জন্য এজ বিহেভিয়ার নির্ধারণ করতে কাজে লাগে। (I7e8ed, b/166927547)
  • performScrollToIndex, performScrollToKey, hasScrollToIndexAction ও hasScrollToKeyAction এখন স্থিতিশীল API (I142ae, b/178483889)
  • ক্লিপ করা বাউন্ড পাওয়ার জন্য টেস্ট পদ্ধতি যোগ করা হয়েছে। (I6b28e)

সমস্যার সমাধান

  • isBounded মেথড সরিয়ে দেওয়া হয়েছে এবং তার পরিবর্তে BlurredEdgeTreatment-এ শেপ প্যারামিটার নাল কিনা তা স্পষ্টভাবে চেক করা হয়েছে। (I85d68)

ভার্সন 1.1.0-alpha02

১৮ আগস্ট, ২০২১

androidx.compose.ui:ui-*:1.1.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.1.0-alpha02-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • PointerEvent এখন মাউস বোতামের স্টেট ও কীবোর্ড মডিফায়ার স্টেট পড়তে পারে। (I6310c, b/180075467)
  • ইনজেক্ট করা জেসচার এখন MainTestClock-এর সময়কে সময়ের সত্যের সোর্স হিসেবে ব্যবহার করে। ইনজেক্ট করা ইভেন্টের বর্তমান সময় performGesture-এ MainTestClock-এর বর্তমান সময়ের সাথে ইনিশিয়ালাইজ করা হবে। (Ifb364, b/192064452)
  • DpRect(DpOffset, DpSize) কনস্ট্রাক্টর যোগ করা হয়েছে (I2cf16, b/194219828)
  • DpSize ক্লাস যোগ করা হয়েছে (I7abb1, b/194219828)

সমস্যার সমাধান

  • VectorDrawables-এ রুট কালার টিন্ট প্রপার্টি হিসেবে ColorStateLists-কে সাপোর্ট করার জন্য আপডেট করা ভেক্টর গ্রাফিক্স xml পার্সিং। (I86915, b/195668138)

ভার্সন 1.1.0-alpha01

৪ আগস্ট, ২০২১

androidx.compose.ui:ui-*:1.1.0-alpha01 রিলিজ করা হয়েছে। 1.1.0-alpha01 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • RelocationRequester.bringIntoView এখন প্যারামিটার হিসেবে একটি আয়তাকার অংশ গ্রহণ করে যা আমাদের কম্পোজ করার উপযুক্ত আইটেমের একটি অংশকে ভিউতে আনতে সাহায্য করে (Ice2c5, b/194330245)
  • AnimatedImageVector এবং সম্পর্কিত API এখন নতুন androidx.compose.animation:animation-graphics মডিউলে আছে। (I60873)
  • সরিয়ে দেওয়ার অনুরোধ ম্যানেজ করার জন্য পরীক্ষামূলক মডিফায়ার যোগ করা হয়েছে। (I65a97, b/178211874)
  • ColorPainter-এর মতো Painter-এর মধ্যে যেকোনও Brush আঁকার সুবিধা দিতে BrushPainter API চালু করা হয়েছে

    BrushPainter-এর মধ্যে কোয়েরি করা একটি ইন্ট্রিনসিক সাইজ প্যারামিটার পেতে Brush API আপডেট করা হয়েছে (Ia2752, b/189466433)

  • DrawScope#drawImage মেথড আপডেট করা হয়েছে যা ঐচ্ছিক FilterQuality প্যারামিটার ব্যবহার করার জন্য সোর্স ও ডেস্টিনেশন রেক্ট ব্যবহার করে। পিক্সেল আর্টের ক্ষেত্রে এটি উপযোগী, কারণ পিক্সেল ভিত্তিক আর্টের জন্য স্কেল আপ করা হলে এটি পিক্সেল আর্ট হিসেবেই দেখা যাবে। এছাড়াও, BitmapPainter + Image composable আপডেট করে ঐচ্ছিক FilterQuality প্যারামিটার (Ie4fb0, b/180311607) ব্যবহার করা হয়েছে

  • জেসচারে ইভেন্টের টাইমিংয়ের উপর আরও কন্ট্রোল দিতে GestureScope.advanceEventTime পদ্ধতি যোগ করা হয়েছে (Ibf3e2)

সমস্যার সমাধান

  • ড্র মডিফায়ার চেইন করার ক্ষেত্রে আরও ভাল সহায়তা পেতে, নিশ্চিত করুন যে Modifier.paint ইমপ্লিমেন্টেশন drawsContent কল করে। আগে Modifier.paint-কে মডিফায়ার চেনের একটি লিফ নোড হতে হত, তবে এটি করলে, এটি কম্পোজ করা যায় এমন কন্টেনারে (যেমন, বক্স) কনফিগার করা বা উপরে অতিরিক্ত সজ্জা যোগ করা থেকে Modifier.paint().border() আটকায়। প্রদত্ত পেইন্টারের কন্টেন্ট আঁকার পরে Modifier.paint কল drawContent ব্যবহার করার মাধ্যমে, আমরা মডিফায়ার প্যাটার্নের সাথে আচরণে আরও ভাল আচরণগত ধারাবাহিকতা পেয়েছি। (Ibb2a7, b/178201337, b/186213275)
  • ডায়ালগ এখন প্ল্যাটফর্মের সাইজ সংক্রান্ত আচরণ মেনে চলে। এই আচরণ ওভাররাইড করতে usePlatformDefaultWidth-এর মান false হিসেবে সেট করুন। (Iffaed, b/192682388)
  • InfiniteAnimationPolicy-কে :compose:ui-তে সরানো হয়েছে (I5eb09, b/160602714)
  • লেজি লিস্ট ও সাধারণ স্ক্রলিং কম্পোনেন্টের জন্য সিম্যান্টিক অ্যাকশনের মাধ্যমে স্ক্রল করার সুবিধা এখন অ্যানিমেটেড (Id9066, b/190742024)

ভার্সন ১.০

ভার্সন 1.0.5

৩ নভেম্বর, ২০২১

androidx.compose.ui:ui-*:1.0.5 রিলিজ করা হয়েছে। 1.0.5 ভার্সনে এই কমিটগুলি রয়েছে।

সমস্যার সমাধান

  • ক্র্যাশ ট্র্যাকিং derivedStateOf ইনস্ট্যান্স সংক্রান্ত সমস্যার সমাধান করা হয়েছে। (aosp/1792247)

ভার্সন 1.0.4

১৩ অক্টোবর, ২০২১

androidx.compose.ui:ui-*:1.0.4 রিলিজ করা হয়েছে। 1.0.4 ভার্সনে এইসব কমিট রয়েছে।

নির্ভরতা সংক্রান্ত আপডেট

  • Kotlin 1.5.31-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে

ভার্সন 1.0.3

২৯ সেপ্টেম্বর, ২০২১

androidx.compose.ui:ui-*:1.0.3 রিলিজ করা হয়েছে। 1.0.3 ভার্সনে এইসব কমিট রয়েছে।

নির্ভরতা সংক্রান্ত আপডেট

  • Kotlin 1.5.30-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে

ভার্সন 1.0.2

১ সেপ্টেম্বর, ২০২১

androidx.compose.ui:ui-*:1.0.2 রিলিজ করা হয়েছে। 1.0.2 ভার্সনে এইসব কমিট রয়েছে।

Compose 1.0.2 রিলিজের সাথে কাজ করার জন্য আপডেট করা হয়েছে। Compose 1.0.2 এখনও Kotlin 1.5.21-এর সাথে মানানসই।

ভার্সন 1.0.1

৪ আগস্ট, ২০২১

androidx.compose.ui:ui-*:1.0.1 রিলিজ করা হয়েছে। 1.0.1 ভার্সনে এইসব কমিট রয়েছে।

নির্ভরতা সংক্রান্ত আপডেট

  • Kotlin 1.5.21-এর উপর নির্ভর করার জন্য আপডেট করা হয়েছে।

ভার্সন 1.0.0

২৮ জুলাই, ২০২১

androidx.compose.ui:ui-*:1.0.0 রিলিজ করা হয়েছে। ভার্সন 1.0.0-এ এইসব কমিট আছে।

1.0.0 ভার্সনের প্রধান ফিচার

Compose-এর এটিই প্রথম স্থিতিশীল রিলিজ। আরও বিবরণের জন্য অফিসিয়াল Compose রিলিজ ব্লগ দেখুন!

পরিচিত সমস্যা

  • আপনি Android Studio Bumblebee Canary 4 বা AGP 7.1.0-alpha04/7.1.0-alpha05 ব্যবহার করলে, নিম্নলিখিত ক্র্যাশ হতে পারে:

      java.lang.AbstractMethodError: abstract method "void androidx.lifecycle.DefaultLifecycleObserver.onCreate(androidx.lifecycle.LifecycleOwner)"
    

    এটি সমাধান করতে, আপনার build.gradle ফাইলে সাময়িকভাবে minSdkVersion বাড়িয়ে 24+ করুন। Android Studio Bumblebee এবং AGP 7.1-এর পরবর্তী ভার্সনে এই সমস্যার সমাধান করা হবে। (b/194289155)

ভার্সন 1.0.0-rc02

১৪ জুলাই, ২০২১

androidx.compose.ui:ui-*:1.0.0-rc02 রিলিজ করা হয়েছে। 1.0.0-rc02 ভার্সনে এইসব কমিট রয়েছে।

সমস্যার সমাধান

  • ডায়ালগ এখন প্ল্যাটফর্মের সাইজ সংক্রান্ত আচরণ মেনে চলে। এই আচরণ ওভাররাইড করতে usePlatformDefaultWidth-এর মান false হিসেবে সেট করুন। (Iffaed, b/192682388)

ভার্সন 1.0.0-rc01

১ জুলাই, ২০২১

androidx.compose.ui:ui-*:1.0.0-rc01 রিলিজ করা হয়েছে। 1.0.0-rc01 ভার্সনে এইসব কমিট রয়েছে।

নতুন ফিচার

  • ui-tooling মডিউলকে ui-tooling এবং ui-tooling-preview-এ ভাগ করুন (Iefa28, b/190649014)

API-তে পরিবর্তন

  • পুরনো হয়ে যাওয়া এক্সপেরিমেন্টাল FocusManager#moveFocusIn ও FocusManager#moveFocusOut সরিয়ে দেওয়া হয়েছে (I227d7, b/170154986, b/186567354, b/168510304)
  • Canvas এখন অ্যাক্সেসিবিলিটির জন্য contentDescription প্যারামিটার ব্যবহার করতে পারে। (Ib547c)
  • PopupProperties-এর useDefaultMaxWidth-এর নাম পরিবর্তন করে usePlatformDefaultWidth করা হয়েছে। (I05710)
  • ডায়ালগ এখন স্ক্রিনের সম্পূর্ণ প্রস্থ ব্যবহার করতে পারবে। (I83929, b/190810877)
  • HSV ও HSL কালার রেপ্রেজেন্টেশনের জন্য পরীক্ষামূলক সহায়তা যোগ করা হয়েছে। (Id7cf8, b/180731008)

আচরণে পরিবর্তন

  • Compose @Preview এখন এমন একটি LocalActivityResultRegistryOwner প্রদান করে যা আপনাকে এমন Composables-এর প্রিভিউ দেখতে দেয় যা rememberLauncherForActivityResult()-এর মতো API ব্যবহার করে এবং যা সেই মালিকের অস্তিত্বের উপর নির্ভর করে। (Ib13d1, b/185693006)
  • Compose @Preview এখন এমন একটি LocalOnBackPressedDispatcherOwner প্রদান করে যা আপনাকে এমন কম্পোজ করার মতো আইটেমের প্রিভিউ দেখতে দেয় যা BackHandler-এর মতো API ব্যবহার করে যা সেই মালিকের বিদ্যমান থাকার উপর নির্ভর করে। (Ia1c05, b/185693006)

সমস্যার সমাধান

  • InfiniteAnimationPolicy থেকে androidx.compose.ui:ui-এ সরানো হয়েছে (I5eb09, b/160602714)
  • মডিউল স্ট্রাকচার পরিবর্তন করার জন্য AnimatedImageVector সাময়িকভাবে সরিয়ে দেওয়া হয়েছে। (I41906, b/160602714)

ভার্সন 1.0.0-beta09

১৬ জুন, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta09 রিলিজ করা হয়েছে। 1.0.0-beta09 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • প্রাইভেট কনস্ট্রাক্টর (Id1890) সহ enum Role ও LiveRegionMode-কে ইনলাইন ক্লাসে পরিবর্তন করুন
  • KeyboardCapitalization ইনলাইন ক্লাসে কনভার্ট করা হয়। (Id5a1c)
  • HapticFeedbackType পরিবর্তন করে ইনলাইন ক্লাস করুন। (I255ec)
  • Modifier.pointerInteropFilter হল @ExperimentalComposeUiApi. (Iede6c)
  • TextAlign, FontSynthesis ও TextDirection এখন ইনলাইন ক্লাস। (I212fe)
  • TextOverflow-কে ইনলাইন ক্লাসে পরিবর্তন করা হয়েছে। (I433af)
  • FontStyle এখন একটি ইনলাইন ক্লাস। (I9e48b)

সমস্যার সমাধান

  • এখনকার জন্য মূল কনস্ট্যান্ট হল @ExperimentalComposeUiApi। ব্যবহারকারী কোড স্থিতিশীল হওয়ার আগে ব্যক্তিগত ধ্রুবক ঘোষণা করতে পারে। (Ia5d48)
  • Compose টেস্ট এখন Robolectric-এ চালানো যাবে। নিম্নলিখিত সীমাবদ্ধতাগুলি এখনও পর্যন্ত শনাক্ত করা হয়েছে:
    • কোনও নেটিভ বিটম্যাপ নেই, তাই ImageBitmap() থেকে NullPointerException হয়।
    • কোনও ড্রয়িং নেই, তাই captureToImage() অনির্দিষ্টকালের জন্য পরবর্তী ড্র পাসের জন্য অপেক্ষা করবে (অর্থাৎ, এটি ডেডলক হয়ে যাবে)।
    • কোনও ফন্ট লোড করা নেই, তাই যেকোনও টেক্সট ভুলভাবে পরিমাপ করা হবে। সব ক্যারেক্টারের নির্দিষ্ট উচ্চতা ২০ পিক্সেল ও প্রস্থ ১ পিক্সেল।
    • ComposeTestRule.waitUntil {} অপেক্ষা করার সময় মূল থ্রেড রান করে না, ফলে এটি ComposeTestRule.mainClock.advanceTimeUntil {}-এর মতোই কাজ করে ভবিষ্যতে আরও সীমাবদ্ধতা শনাক্ত করা হতে পারে। (I284fa)

যোগ করা প্রোফাইল সংক্রান্ত নিয়ম

এই রিলিজে নিম্নলিখিত কম্পোজ মডিউলে প্রোফাইল সংক্রান্ত নিয়ম যোগ করা হয়েছে (I14ed6):

  • androidx.compose.animation
  • androidx.compose.animation-core
  • androidx.compose.foundation
  • androidx.compose.foundation-layout
  • 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

প্রোফাইল সংক্রান্ত নিয়ম কী কী?

  • লাইব্রেরির প্রোফাইল সংক্রান্ত নিয়ম src/main বা সমতুল্য ডিরেক্টরিতে থাকা baseline-prof.txt টেক্সট ফাইলে উল্লেখ করা থাকে। ফাইলটি প্রতি লাইনে একটি করে নিয়ম নির্দিষ্ট করে, যেখানে এই ক্ষেত্রে নিয়ম হল লাইব্রেরিতে মেথড বা ক্লাসের সাথে ম্যাচ করার একটি প্যাটার্ন। এইসব নিয়মের সিনট্যাক্স হল মানুষের-পঠনযোগ্য ART প্রোফাইল ফর্ম্যাটের একটি সুপারসেট যা adb shell profman --dump-classes-and-methods ... ব্যবহার করার সময় ব্যবহার করা হয়। এইসব নিয়ম পদ্ধতি বা ক্লাস টার্গেট করার জন্য দু'টি ফর্মের মধ্যে একটি নেয়।

  • একটি পদ্ধতি সংক্রান্ত নিয়মের নিম্নলিখিত প্যাটার্ন থাকবে:

    <FLAGS><CLASS_DESCRIPTOR>-><METHOD_SIGNATURE>
    
  • এবং ক্লাস নিয়মের নিম্নলিখিত প্যাটার্ন থাকবে:

    <CLASS_DESCRIPTOR>
    
  • এখানে <FLAGS> হল এক বা একাধিক অক্ষর H, S ও P যা এই পদ্ধতিকে "হট", "স্টার্ট-আপ" বা "পোস্ট স্টার্ট-আপ" হিসেবে ফ্ল্যাগ করা উচিত কিনা তা নির্দেশ করে।

  • <CLASS_DESCRIPTOR> হল সেই ক্লাসের ডেসক্রিপ্টর যার সাথে টার্গেট করা পদ্ধতি সম্পর্কিত। যেমন, androidx.compose.runtime.SlotTable ক্লাসের ডেসক্রিপ্টর Landroidx/compose/runtime/SlotTable; হবে।

  • <METHOD_SIGNATURE> হল পদ্ধতির সিগনেচার এবং এতে পদ্ধতির নাম, প্যারামিটারের ধরন ও রিটার্ন ধরন অন্তর্ভুক্ত থাকে। যেমন, LayoutNode-এর fun isPlaced(): Boolean পদ্ধতিতে isPlaced()Z সিগনেচার আছে।

  • একাধিক পদ্ধতি বা ক্লাসকে একটি নিয়মের মধ্যে অন্তর্ভুক্ত করার জন্য এইসব প্যাটার্নে ওয়াইল্ডকার্ড (**, * ও ?) থাকতে পারে।

নিয়ম কী করে?

  • যে পদ্ধতিতে H ফ্ল্যাগ আছে, সেটি "হট" পদ্ধতি এবং এটি আগে থেকেই কম্পাইল করা উচিত।

  • S ফ্ল্যাগ থাকা কোনও পদ্ধতি থেকে বোঝা যায় যে এটি এমন একটি পদ্ধতি যা স্টার্ট-আপে কল করা হয় এবং স্টার্ট-আপের সময় পদ্ধতি কম্পাইল ও ইন্টারপ্রেট করার খরচ এড়াতে আগে থেকেই কম্পাইল করা উচিত।

  • P ফ্ল্যাগ আছে এমন কোনও পদ্ধতি থেকে বোঝা যায় যে এটি এমন একটি পদ্ধতি যা স্টার্ট-আপের পরে কল করা হয়।

  • এই ফাইলে উপস্থিত কোনও ক্লাস ইঙ্গিত করে যে এটি স্টার্ট-আপের সময় ব্যবহার করা হয় এবং ক্লাস লোডিংয়ের খরচ এড়াতে হিপে আগে থেকেই বরাদ্দ করা উচিত।

এটি কীভাবে কাজ করে?

  • লাইব্রেরি এইসব নিয়ম নির্ধারণ করতে পারে যা AAR আর্টিফ্যাক্টে প্যাকেজ করা হবে। এইসব আর্টিফ্যাক্ট অন্তর্ভুক্ত করে কোনও অ্যাপ তৈরি করা হলে, এইসব নিয়ম একসাথে মার্জ করা হয় এবং মার্জ করা নিয়মগুলি অ্যাপ-নির্দিষ্ট কম্প্যাক্ট বাইনারি ART প্রোফাইল তৈরি করতে ব্যবহার করা হয়। অ্যাপ ডিভাইসে ইনস্টল করা হলে, ART এই প্রোফাইল ব্যবহার করতে পারে যাতে অ্যাপ্লিকেশনের পারফর্ম্যান্স, বিশেষ করে প্রথমবার রান করার সময়, উন্নত করতে অ্যাপ্লিকেশনটির নির্দিষ্ট সাবসেট আগে থেকেই কম্পাইল করা যায়। মনে রাখবেন, এটি ডিবাগ করা যায় এমন অ্যাপ্লিকেশনের উপর কোনও প্রভাব ফেলবে না।

ভার্সন 1.0.0-beta08

২ জুন, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta08 রিলিজ করা হয়েছে। 1.0.0-beta08 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • NestedScrollSource enum-এর পরিবর্তে ইনলাইন ক্লাস ব্যবহার করা হয়েছে। (Ie321b, b/187055290)
  • FocusManager.clearFocus(forcedClear = true)-এর নাম পরিবর্তন করে FocusManager.clearFocus(force = true) করা হয়েছে (Ia0c41)
  • নতুন enum ভ্যালু যোগ করা হলে, <0x0A>when স্টেটমেন্টের সাথে এক্সহস্ট করার ক্ষেত্রে সমস্যা এড়াতে <0x0A>ইনলাইন ক্লাসে রিফ্যাক্টর করা enum ব্যবহার। (I2b5eb)
  • PopupProperties থেকে @ExperimentalComposeUiApi সরান। (I01fa6)
  • PointerType-কে এনুম থেকে ইনলাইন ক্লাসে (If5058) পরিবর্তন করা হয়েছে
  • ContentDescription এবং Text সিম্যান্টিক্স প্রপার্টি আর সিঙ্গেল ভ্যালু নয়, এখন তালিকা। এটি সেগুলিকে কনক্যাটেনেশনের পরিবর্তে যেমন আছে তেমনই মার্জ করতে দেয়। এছাড়াও, এই পরিবর্তনগুলি ব্যবহার করার জন্য আরও ভাল টেস্টিং API প্রদান করা হয়েছে (Ica6bf, b/184825850)
  • Modifier.focusModifier() বন্ধ করে দেওয়া হয়েছে এবং Modifier.focusTarget() (I6c860) দিয়ে প্রতিস্থাপন করা হয়েছে
  • Modifier.onSizeChanged() এবং Modifier.onGloballyPositioned() আর ইনলাইন ফাংশন নয় (I727f6, b/186109675)
  • KeyboardType enum-এর পরিবর্তে ইনলাইন ক্লাস ব্যবহার করা হয়েছে। (I73045, b/187055290)
  • FocusState enum-এর পরিবর্তে FocusState ইন্টারফেস ব্যবহার করা হয়েছে (Iccc1a, b/187055290)
  • ImeAction enum-এর পরিবর্তে ইনলাইন ক্লাস ব্যবহার করা হয়। (I18be5, b/187055290)
  • PlaceholderVerticalAlign-কে ইনলাইন ক্লাসে কনভার্ট করা হয়েছে। (If6290)
  • TextUnitType এখন একটি ইনলাইন ক্লাস। (I4cba9)
  • AnnotatedString.withAnnotation ফাংশনগুলি এখন ExperimentalComposeApi-এর পরিবর্তে ExperimentalTextApi. (I0cd0a)
    • TextUnitType সহ TextUnit কনস্ট্রাক্টর এখন ExperimentalComposeApi-এর পরিবর্তে ExperimentalTextApi.

সমস্যার সমাধান

  • beta07-এ হওয়া বাগটি সমাধান করা হয়েছে, যেখানে স্ক্রল করার পরে LazyColumn/Row আইটেম আংশিকভাবে দেখানো হচ্ছিল (I8c9ac, b/188566058)
  • এখন detectDragGesures, detectVerticalGestures ও detectHorizontalGestures অটোমেটিক পজিশন পরিবর্তন কনজিউম করবে, onDrag কলব্যাকে change.consumePositionChange কল করার প্রয়োজন নেই (I42fc4, b/185096350, b/187320697)
  • অ্যালাইনমেন্ট লাইন প্রদানকারী LayoutModifiers সংক্রান্ত সমস্যা সমাধান করা হয়েছে। বাচ্চাদের অ্যালাইনমেন্ট লাইন পরিবর্তন করার সময় পেরেন্টকে আবার পরিমাপ না করার কারণ হওয়া বাগটি সমাধান করা হয়েছে। (I4401f, b/174315652)
  • Modifier.onGloballyPositioned() পরিবর্তন করে মডিফায়ার চেনে এই মডিফায়ারের কোঅর্ডিনেট রিপোর্ট করা হয়েছে, সব মডিফায়ার প্রয়োগ করার পরে লেআউট কোঅর্ডিনেট নয়। এর অর্থ হল, এখন মডিফায়ারদের ক্রম নির্ধারণ করছে যে কোন কোঅর্ডিনেট রিপোর্ট করা হবে। (Ieb67d, b/177926591)

ভার্সন 1.0.0-beta07

১৮ মে, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta07 রিলিজ করা হয়েছে। 1.0.0-beta07 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • ইনস্পেক্টরে ব্যবহারের জন্য ViewRootForInspector ইন্টারফেস যোগ করা হয়েছে (Ib70df)
  • SubcomposeLayoutState এখন আবার ব্যবহারযোগ্য স্লটের সংখ্যা সেট করার সুবিধা দেয়। লেআউট এই সংখ্যা পর্যন্ত স্লট অ্যাক্টিভ রাখবে, যাতে পরের বার নতুন স্লটের প্রয়োজন হলে আমরা সেটি আবার ব্যবহার করতে পারি (Ieb981)
  • KeyEventType enum-এর পরিবর্তে ইনলাইন ক্লাস ব্যবহার করা হয়। (Id670a, b/187055290)
  • FocusDirection enum-এর পরিবর্তে ইনলাইন ক্লাস ব্যবহার করা হয়েছে। (Ib6d03, b/187055290, b/184086802)
  • SubcomposeLayout স্টেট হোয়েস্ট করার ক্ষমতা যোগ করে যা আপনাকে প্রয়োজনীয় slotId-তে কন্টেন্ট আগে থেকেই কম্পোজ করতে দেয়। এর ফলে পরবর্তী মেজার পাস আরও দ্রুত হয় কারণ প্রদত্ত slotId-এর সাথে সাবকম্পোজ করার চেষ্টা করার সময় কম্পোজ করার প্রয়োজন হয় না। (I42580, b/184940225)
  • Added Clip Selection Handle (Iff80d, b/183408447)
  • LayoutInspector সাপোর্ট সংক্রান্ত অব্যবহৃত API সরিয়ে দেওয়া হয়েছে। (I2ac78)

সমস্যার সমাধান

  • LazyColumn/Row এখন আগে থেকে দৃশ্যমান থাকা সর্বাধিক ২টি আইটেম অ্যাক্টিভ (ডিসপোজ করা হয়নি) রাখবে, এমনকি সেগুলি স্ক্রল করে সরিয়ে দেওয়া হলেও। এর ফলে, নতুন আইটেম কম্পোজ করার প্রয়োজন হলে কম্পোনেন্ট অ্যাক্টিভ সাবকম্পোজিশন আবার ব্যবহার করতে পারে, যা স্ক্রল করার পারফর্ম্যান্স উন্নত করে। (Ie5555)
  • AnnotatedString-এ TextGeomerticTransform ও TextDecoration প্রয়োগ করা হবে। (I61900, b/184760917)

ভার্সন 1.0.0-beta06

৫ মে, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta06 রিলিজ করা হয়েছে। 1.0.0-beta06 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • নেভিগেশন জেসচারের সাথে কনফ্লিক্ট সমাধান করা (I1145e)
  • @ComposeCompilerApi আর @RequiresOptIn (Iab690)
  • অ্যাক্সেসিবিলিটি API-এর CollectionInfo ও CollectionItemInfo যোগ করা হয়েছে যা অ্যাক্সেসিবিলিটি পরিষেবার জন্য সংগ্রহ ও এর আইটেমকে চিহ্নিত করার অনুমতি দেয় (Id54ef, b/180479017)
  • নির্দিষ্ট ইন্ডেক্স সহ আইটেমে ইন্ডেক্স করা আইটেম সহ তালিকা স্ক্রল করতে SemanticsActions.ScrollToIndex যোগ করা হয়েছে এবং কীযুক্ত আইটেম সহ তালিকায় আইটেমের ইন্ডেক্স পেতে SemanticsProperties.IndexForKey যোগ করা হয়েছে। LazyList-এর মাধ্যমে দুটি অ্যাকশনই প্রয়োগ করা হয়।
    • SemanticsNodeInteraction.performScrollToIndex যোগ করা হয়েছে যা প্রদত্ত ইনডেক্সে একটি তালিকা স্ক্রল করে এবং SemanticsNodeInteraction.performScrollToKey যা প্রদত্ত কী সহ আইটেমে একটি তালিকা স্ক্রল করে। (I4fe63, b/178483889, b/161584524)
  • GraphicLayerInfo-তে ownerViewId যোগ করা হয়েছে (I19f62)
  • অ্যাসেট, ফাইল ও FileDescriptor থেকে ফন্ট লোড করার জন্য Added Font() ওভারলোড (I5d382)
  • অ্যাক্সেসিবিলিটি API error যোগ করা হয়েছে যা ভুল ইনপুট (I12997, b/180584804, b/182142737) থাকা নোডকে চিহ্নিত করার অনুমতি দেয়
  • অ্যাসেট, ফাইল ও FileDescriptor থেকে ফন্ট লোড করার জন্য Font() ওভারলোড যোগ করা হয়েছে (I43007)
  • AnnotatedString সেভ করার সুবিধা TextFieldValue.Saver-এ আছে। addTtsAnnotation যোগ করা হয়েছে এবং withAnnotation ইউটিলিটি ফাংশন সহ AnnotatedString.Builder (I8cbdc, b/178446304)
  • TextUnit কনস্ট্রাক্টর ফাংশন যোগ করা হয়েছে TextUnit(value: Float, type: TextUnitType) (I7ecce, b/178446304)

ভার্সন 1.0.0-beta05

২১ এপ্রিল, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta05 রিলিজ করা হয়েছে। 1.0.0-beta05 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • এক্সপেরিমেন্টাল FocusManager.moveFocus(In) ও FocusManager.moveFocus(Out) যোগ করা হয়েছে (Ic5534, b/183746743)
  • পরীক্ষামূলক performTextInputSelection API যোগ করা হয়েছে (I2dcbb, b/178510628)
  • InputEventCallback ইন্টারফেস বন্ধ করে দেওয়া হয়েছে। কোনও পাবলিক API-তে ইন্টারফেস ব্যবহার করা সম্ভব ছিল না; এবং কোডে এটি ব্যবহার করা হয়নি। (I34a02, b/184003208)
  • পুরনো হয়ে যাওয়া TextLayoutResult/createTextLayoutResult ফাংশন। এটি একটি অব্যবহৃত পাবলিক ফাংশন যা পরীক্ষা করার জন্য যোগ করা হয়েছে। এই ফাংশনটি Compose text API-এর জন্য ব্যবহারযোগ্য কিছু করে না। এই ফাংশনটি এখন বন্ধ করা হয়েছে এবং পরে এটি সরিয়ে দেওয়া হবে। (I80413)

সমস্যার সমাধান

  • ACTION_SCROLL_FORWARD, ACTION_SCROLL_BACKWARD, accessibilityActionScrollLeft, accessibilityActionScrollUp, accessibilityActionScrollRight এবং accessibilityActionScrollDown অ্যাক্সেসিবিলিটি স্ক্রল অ্যাকশন সংক্রান্ত সমস্যা সমাধান করা হয়েছে। স্ক্রল করার মতো কন্টেন্টের শেষ পর্যন্ত স্ক্রল না করে, এটি এখন প্রদত্ত দিকে একটি স্ক্রিন স্ক্রল করবে। (Ieccb0)
  • ui-test-manifest এবং ui-tooling-data থেকে AndroidManifest ফাইল এখন Android 12-এর সাথে মানানসই (I6f9de, b/184718994)

ভার্সন 1.0.0-beta04

৭ এপ্রিল, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta04 রিলিজ করা হয়েছে। 1.0.0-beta04 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • SoftwareKeyboardController-এ hideSoftwareKeyboard ও showSoftwareKeyboard-এর নাম পরিবর্তন করে যথাক্রমে hide() ও show() করুন।
    • LocalSoftwareKeyboardController-এর জন্য সম্পূর্ণ CompositionLocal ইন্টারফেস প্রদান করুন, যাতে এটি সেট করা যায় (বিশেষ করে পরীক্ষার ক্ষেত্রে এটি কাজে লাগে) (I579a6)
  • LiveRegion অ্যাক্সেসিবিলিটি API যোগ করা হয়েছে। কোনও নোডকে লাইভ অঞ্চল হিসেবে চিহ্নিত করা হলে, অ্যাক্সেসিবিলিটি পরিষেবা সেটিতে হওয়া পরিবর্তন সম্পর্কে ব্যবহারকারীকে অটোমেটিক বিজ্ঞপ্তি পাঠাবে (Idcf6f, b/172590946)
  • TextOverflow.Visible যোগ করা হয়েছে। (Ic8f89)

সমস্যার সমাধান

  • দ্রুত ফ্লিং করার পরে, এজে থাকা LazyColumn/LazyRow আইটেম ভুলভাবে পজিশন করা হলে সেই সমস্যা সমাধান করা হয়েছে (Ie4d13, b/183877420)
  • AndroidViewBinding এখন কম্পোজ হায়রার্কি থেকে AndroidViewBinding সরিয়ে দেওয়া হলে FragmentContainerView-এর মাধ্যমে বড় করা ফ্র্যাগমেন্ট সঠিকভাবে সরিয়ে দেয়। (Ib0248, b/179915946)
  • AndroidViewBinding এখন FragmentContainerView-এর মাধ্যমে ইনফলেটেড ফ্র্যাগমেন্টকে সঠিকভাবে নেস্ট করে, যখন আপনার ComposeView Fragment-এর মধ্যে থাকে। এর ফলে ফ্র্যাগমেন্টের স্টেট সেভ ও রিস্টোর করা সংক্রান্ত সমস্যা সমাধান হয়। (I70eb0, b/179915946)
  • Compose ViewBinding এখন Fragment 1.3.2-এর উপর নির্ভর করে এবং কনফিগারেশনে পরিবর্তন করার পরে এখন FragmentContainerView-এর মাধ্যমে ইনফলেটেড ফ্র্যাগমেন্টকে ধারাবাহিকভাবে দেখায়। (I0743d, b/179915946)

ভার্সন 1.0.0-beta03

২৪ মার্চ, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta03 রিলিজ করা হয়েছে। 1.0.0-beta03 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • ComposeView-এর ViewTree নির্ভরতা ডিফার করা চেক (I8dbbf, b/182466548)
  • swipeUp/swipeDown/swipeLeft/swipeRight ফাংশনে GestureScope-এ ঐচ্ছিক startX/endX এবং startY/endY প্যারামিটার যোগ করা হয়েছে। (I49e2d, b/182063305)

ভার্সন 1.0.0-beta02

১০ মার্চ, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta02 রিলিজ করা হয়েছে। 1.0.0-beta02 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • TextField-এ আগের SoftwareKeyboardController ইন্টারফেস পরিবর্তন করতে নতুন LocalSoftwareKeyboardController composition local API যোগ করা হয়েছে। (I5951e, b/168778053)
  • TextField-এ আগের SoftwareKeyboardController ইন্টারফেস পরিবর্তন করতে নতুন LocalSoftwareKeyboardController composition local API যোগ করা হয়েছে। (I84472, b/168778053)
  • নিচের SemanticsMatcherগুলি সরিয়ে দেওয়া হয়েছে:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (If16bd)
  • নিম্নলিখিত SemanticsMatchers-কে @ExperimentalTestApi হিসেবে চিহ্নিত করা হয়েছে:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (Ia600c)
  • নিম্নলিখিত SemanticsMatchers যোগ করা হয়েছে:
    • hasWidth(width, tolerance)
    • hasHeight(height, tolerance)
    • hasLeftPosition(left, tolerance)
    • hasTopPosition(top, tolerance)
    • hasRightPosition(right, tolerance)
    • hasBottomPosition(bottom, tolerance) (I2f502)

সমস্যার সমাধান

  • এক্সপেরিমেন্টাল API-এর (I6aa29, b/174531520) সর্বজনীন ব্যবহারের উপর বিধিনিষেধ আরোপ করা
  • androidx.compose.ui:ui আর AppCompat বা Fragment-এর উপর নির্ভর করে না। আপনি যদি নিজের অ্যাপ্লিকেশনে ComposeView ব্যবহার করেন এবং Fragment এবং/অথবা AppCompat ব্যবহার করেন, তাহলে নিশ্চিত করুন যে আপনি AppCompat 1.3+ / Fragment 1.3+ ব্যবহার করছেন - ComposeView-এর জন্য প্রয়োজনীয় লাইফসাইকেল এবং সেভ করা স্টেট মালিকদের সঠিকভাবে সেট করার জন্য এই ভার্সনগুলি প্রয়োজন। (I1d6fa, b/161814404)
  • নেভিগেশন-কম্পোজের মধ্যে ব্যবহার করা হলে, ভাঙা rememberSaveable { mutableStateOf(0) } ঠিক করা হয়। (I1312b, b/180042685, b/180701630)
  • TextField-এ আগের SoftwareKeyboardController ইন্টারফেস পরিবর্তন করতে নতুন LocalSoftwareKeyboardController composition local API যোগ করা হয়েছে। (I658b6, b/168778053)
  • ComposeRootRegistry-এ NoSuchElementException সংক্রান্ত বিরল সমস্যা সমাধান করা হয়েছে tearDownRegistry() (Iddce1)

ভার্সন 1.0.0-beta01

২৪ ফেব্রুয়ারি, ২০২১

androidx.compose.ui:ui-*:1.0.0-beta01 রিলিজ করা হয়েছে। 1.0.0-beta01 ভার্সনে এইসব কমিট আছে।

এটি হল Compose 1.0.0 Beta-এর প্রথম রিলিজ।

API-তে পরিবর্তন

  • detectDragGestures-এ onStart কলব্যাক যোগ করা হয়েছে (I67269, b/179995594)
  • ইনট্রিনসিকের সাইজিংয়ের জন্য মডিফায়ার আর পরীক্ষামূলক নয়। (I15744)
  • MeasureBlocks-এর নাম পরিবর্তন করে MeasurePolicy রাখা হয়েছে, এটি একটি মজাদার ইন্টারফেস হয়ে গেছে। MeasurePolicy ব্যবহার করার জন্য লেআউট API আপডেট / সরল করা হয়েছে। (Icab48, b/167662468, b/156751158)
  • InteractionState-এর পরিবর্তে [Mutable]InteractionSource ব্যবহার করা হয়েছে
    • ইন্টার‍্যাকশন ইভেন্ট নির্গমন / সংগ্রহের জন্য ইন্টারফেস দায়ী।
    • Button ও Modifier.clickable()-এর মতো কম্পোনেন্টে interactionState = remember { InteractionState() } পাস করার পরিবর্তে, interactionSource = remember { MutableInteractionSource() } ব্যবহার করুন।
    • এর পরিবর্তে: Interaction.Pressed in interactionState এর পরিবর্তে, আপনাকে InteractionSource-এ এক্সটেনশন ফাংশন ব্যবহার করতে হবে, যেমন InteractionSource.collectIsPressedAsState()।
    • জটিল ব্যবহারের ক্ষেত্রে, ইন্ট্যার‍্যাকশনের স্ট্রিম পর্যবেক্ষণ করতে আপনি InteractionSource.interactions ব্যবহার করতে পারেন। আরও তথ্যের জন্য InteractionSource ডকুমেন্টেশন ও নমুনা দেখুন।
    • (I85965, b/152525426, b/171913923, b/171710801, b/174852378)
  • CompositionLocals-এ AccessibilityMananger ইন্টারফেস এবং LocalAccessibilityMananger যোগ করুন (I53520)
  • পুরনো হয়ে যাওয়া LayoutCoordinates পদ্ধতি সরানো হয়েছে, positionInParent ও boundsInParent-এর জন্য প্রপার্টির পরিবর্তে ফাংশন ব্যবহার করুন (I580ed, b/169874631, b/175142755)
  • আন্ডারলায়িং টাইপ দিয়ে টাইপএলিয়াস প্রতিস্থাপন করা হয়েছে:
    • ColorStop এখন Pair<Float, Color> হয়ে গেছে
    • SpanStyleRange এখন `AnnotatedString.Range
    • ParagraphStyleRange এখন AnnotatedString.Range<ParagraphStyle> হয়ে গেছে
    • StringAnnotation এখন AnnotatedString.Range<String> হয়ে গেছে
    • (I8dd1a)
  • CoreTextField-এর মতো লো লেভেল টেক্সট কম্পোনেন্ট থেকে ইনপুট সেশনের জন্য নতুন TextInputSession তৈরি করা হয়েছে। (I8817f, b/177662148)
  • Placeable এখন measuredSize দেখায়, এটি সেই সাইজ যা চাইল্ড লেআউট আসলে পরিমাপ করে। এই সাইজ পরিমাপ সংক্রান্ত বিধিনিষেধ মেনে নাও চলতে পারে। (Ib2729, b/172560206, b/172338608)
  • অ্যাক্সেসিবিলিটির উদ্দেশ্যে ট্যাব বা রেডিও বোতামের সংগ্রহকে চিহ্নিত করার অনুমতি দেয় এমন selectionGroup মডিফায়ার যোগ করুন (Ie5c29)
  • compositionLocalOf ও staticCompositionLocalOf-এর জন্য defaultFactory এখন প্রয়োজন, ঐচ্ছিক নয়।

    যেখানে কোনও ডিফল্ট ফ্যাক্টরি প্রদান করা হয়নি, সেখানে এই পরিবর্তনটি নন-নাল টাইপের জন্য সম্ভাব্য টাইপ সংক্রান্ত সমস্যা সরিয়ে দেয়। আগে এটি নন-নাল ধরনের জন্য একটি নাল রেফারেন্স প্রদান করত।

    নাল হতে পারে এমন ধরনের জন্য, { null } কে ডিফল্ট ফ্যাক্টরি হিসেবে সাপ্লাই করার কথা বিবেচনা করুন।

    আমরা নাল মান গ্রহণ করে না এমন ধরনের লোকাল ভেরিয়েবল ব্যবহার করার সাজেশন দিই না, যদি না কোনও যুক্তিসঙ্গত ডিফল্ট মান প্রদান করা যায়। কোনও উপযুক্ত ডিফল্ট না থাকলে, defaultFactory lambda-কে একটি ব্যতিক্রম দেখাতে হবে। তবে, কোনও ব্যতিক্রম ঘটানো মানে হল যে লোকালের কনজিউমারদের এটি প্রদান করার উপর একটি অন্তর্নিহিত নির্ভরতা থাকবে যা টাইপ সিস্টেম দ্বারা এনফোর্স করা হয় না। (Ifbd2a)

  • ui মডিউল থেকে পুরনো হয়ে যাওয়া পদ্ধতি সরিয়ে দেওয়া হয়েছে (I646f6)

  • সাইজ মডিফায়ারগুলির নাম পরিবর্তন করা হয়েছে। Modifier.width/height/size-এর নাম পরিবর্তন করে requiredWidth/requiredHeight/requiredSize করা হয়েছে। Modifier.preferredWidth/preferredHeight/preferredSize-এর নাম পরিবর্তন করে width/height/size করা হয়েছে। (I5b414)

  • Modifier.tapGestureFilter সরানো হয়েছে৷ পরিবর্তে Modifier.pointerInput { detectTapGestures(...) } ব্যবহার করুন। (I266ed, b/175294473)

  • পয়েন্টার ইনপুট সিস্টেম থেকে আংশিক কনজাম্পশন সরিয়ে দেওয়া হয়েছে। আংশিক কনজাম্পশন কোঅর্ডিনেট করার সাজেস্ট করা উপায় হল Modifier.nestedScroll. (Ie9c9b)

  • ওরিয়েন্টেশন ফাউন্ডেশন প্যাকেজে সরিয়ে দেওয়া হয়েছে। VelocirtTracker ui.gesture থেকে ui.input.pointer-এ সরানো হয়েছে। (Iff4a8, b/175294473)

  • imageResource এবং vectorResource এখন ImageBitmap এবং ImageVector কম্প্যানিয়নের এক্সটেনশন ফাংশন হিসেবে কাজ করে। load{Image,Vector,Font}Resource ফাংশন মুছে দেওয়া হয়েছে। (I89130)

  • AnimationClockObservable ও এর সাবক্লাস সরিয়ে দেওয়া হয়েছে। AnimatedFloat সরিয়ে দেওয়া হয়েছে। (Icde52, b/177457083)

  • Providers-এর নাম পরিবর্তন করে CompositionLocalProvider করা হয়েছে

    • Composition কনস্ট্রাক্টর আর কোনও কী প্যারামিটার গ্রহণ করে না এবং এটি বন্ধ করে দেওয়া হয়েছে।
    • currentCompositeKeyHash-কে কম্পোজেবল টপ লেভেল ফাংশনের পরিবর্তে কম্পোজেবল টপ লেভেল প্রপার্টিতে পরিবর্তন করা হয়েছে।
    • CompositionData ও CompositionGroup-কে androidx.compose.runtime.tooling নেমস্পেসে সরানো হয়েছে
    • ComposableLambda-কে কনক্রিট ক্লাসের পরিবর্তে ইন্টারফেস করা হয়েছে এবং এতে আর কোনও টাইপ প্যারামিটার নেই।
    • ComposableLambdaN-কে কনক্রিট ক্লাসের পরিবর্তে ইন্টারফেস করা হয়েছে এবং এতে আর কোনও টাইপ প্যারামিটার নেই।
    • snapshotFlow ফাংশনটি androidx.compose.runtime নেমস্পেসে সরানো হয়েছে
    • SnapshotMutationPolicy-এর মার্জ করার পদ্ধতি আর পরীক্ষামূলক নয়
    • @TestOnly টপ লেভেল clearRoots ফাংশন সরিয়ে দেওয়া হয়েছে। এটি আর প্রয়োজনীয় নয়।
    • keySourceInfoOf ও resetSourceInfo ফাংশন সরিয়ে দেওয়া হয়েছে। সেগুলির আর প্রয়োজন নেই।
    • Composer.collectKeySourceInformation সরিয়ে দেওয়া হয়েছে। এটি আর প্রয়োজনীয় নয়।
    • isJoinedKey, joinedKeyLeft এবং joinedKeyRight পদ্ধতি সরিয়ে দেওয়া হয়েছে। সেগুলির আর প্রয়োজন নেই।
    • বিভিন্ন টপ লেভেল API সরিয়ে দেওয়া হয়েছে এবং আলাদা আলাদা ফাইলে নতুন করে সাজানো হয়েছে। Kotlin-এর ফাইল ক্লাস সিম্যান্টিক্সের কারণে, এটি বাইনারি কম্প্যাটিবিলিটি ভেঙে দেবে, তবে সোর্স কম্প্যাটিবিলিটি ভাঙবে না, তাই বেশিরভাগ ব্যবহারকারীর জন্য এটি কোনও সমস্যা হওয়ার কথা নয়।
    • (I99b7d, b/177245490)
  • compose:ui থেকে ComponentActivity.setContent() সরিয়ে দেওয়া হয়েছে। androidx.activity:activity-compose:1.3.0-alpha01 থেকে একটি ব্যবহার করুন। compose:ui থেকে viewModel() ও LocalViewModelStoreOwner সরিয়ে দেওয়া হয়েছে। androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 (I6f36b) থেকে নেওয়াগুলি ব্যবহার করুন

  • Modifier.scrollable-এর উপর নতুন করে কাজ করা হয়েছে। এখন এটি ScrollableController ক্লাসের পরিবর্তে স্ক্রল করা যায় এমন ইন্টারফেস ব্যবহার করে (I4f5a5, b/174485541, b/175294473)

  • PointerInputModifier থেকে CustomEvens সংক্রান্ত সহায়তা সরিয়ে দেওয়া হয়েছে (I02707, b/175294473)

  • SnapshotStateObserver আর পরীক্ষামূলক নয় (Id2e6a)

  • আগে বাতিল করা কিছু API মুছে দেওয়া হয়েছে (Ice5da, b/178633932)

  • longPressGestureFilter ও doubleClickGestureFilter সরিয়ে দেওয়া হয়েছে। helper ফাংশন সহ Modifier.pointerInput ব্যবহার করুন, যেমন detectTapGestures (I2fedf, b/175294473)

  • String.format API সরিয়ে দেওয়া হয়েছে বিভিন্ন toString পদ্ধতিতে রিফ্যাক্টর করা ব্যবহার String.format ইন্টার্নালি ব্যবহার না করার জন্য। (Id1290)

  • সরানো dp অ্যাসার্শন (I798d2)

  • androidx.compose.runtime:runtime-dispatch সরানো হয়েছে (I55feb)

  • টেক্সট অ্যাকশন এখন অটোমেটিক ফোকাস চেক করে (I13777, b/179648629)

  • সরানো হয়েছে runBlockingWithManualClock (I15cdc, b/179664814)

  • Modifier.verticalScroll()/horizontalScroll()-এ স্ক্রল পজিশন এখন Ints দিয়ে দেখানো হয় (I81298)

  • FlingConfig-এর নাম পরিবর্তন করে FlingBehavior করা হয়েছে। এখন এটি পূর্বনির্ধারিত Decays-এর পরিবর্তে সাসপেন্ড অ্যানিমেশন কাস্টমাইজ করার অনুমতি দেয়। (I02b86, b/175294473)

  • একটি হেল্পার ফাংশন যোগ করা হয়েছে যা সব ImeAction কলব্যাকের জন্য একই অ্যাকশন সেট করতে সাহায্য করে (I63447, b/179226323)

  • নতুন API শীঘ্রই প্রকাশ করা হবে, তাই সব টেক্সট ফিল্ড থেকে SoftwareKeyboardController কলব্যাক সরিয়ে দেওয়া হয়েছে। (Iae869, b/168778053)

  • FontSpan ও FontWeigthStyleSpan আর ব্যবহার করা হয় না এবং সরিয়ে দেওয়া হয়েছে। (Ie5b56, b/177423444)

  • নিম্নলিখিত Material API পরিবর্তন করা হয়েছে:

    • ডিফল্ট প্যাডিং কাস্টমাইজ করার অনুমতি দিতে Top/BottomAppBar-এ contentPadding প্যারামিটার যোগ করা হয়েছে।
    • প্রয়োজনীয় প্যারামিটারকে ঐচ্ছিক প্যারামিটারের আগে রাখার জন্য API নির্দেশিকা মেনে BackdropScaffold-এ প্যারামিটারগুলি আবার সাজানো হয়েছে।
    • selected ও onClick-এর পরে BottomNavigationItem-এ icon প্যারামিটার সরানো হয়েছে।
    • BottomNavigationItem-এ alwaysShowLabels প্যারামিটারের নাম পরিবর্তন করে alwaysShowLabel করা হয়েছে।
    • কয়েকটি কম্পোনেন্টে bodyContent প্যারামিটারের নাম পরিবর্তন করে শুধু content করা হয়েছে।
    • ButtonDefaults.buttonColors()-এ প্যারামিটার আবার সাজানো হয়েছে। মনে রাখবেন, প্যারামিটারের ধরন পরিবর্তন না হওয়ার কারণে, এটি আপনার কোডে কোনও সমস্যা সৃষ্টি করবে না - আপনি যে নামযুক্ত প্যারামিটার ব্যবহার করছেন তা নিশ্চিত করুন অথবা ম্যানুয়ালি অর্ডারিং আপডেট করুন, অন্যথায় আপনার কোড আগের মতো কাজ করবে না।
    • darkColors()-এ secondaryVariant প্যারামিটার যোগ করা হয়েছে। এই রঙটি সাধারণত ডার্ক থিমে secondary-এর মতো একই রকম, তবে সামঞ্জস্য এবং আরও কাস্টমাইজেশনের জন্য যোগ করা হয়েছে।
    • পাবলিক API সারফেস থেকে ElevationDefaults এবং animateElevation() সরিয়ে দেওয়া হয়েছে কারণ সেগুলি সাধারণত ব্যবহার করা হয় না / প্রয়োজনীয় নয়।
    • Slider-এ onValueChangeEnd-এর নাম পরিবর্তন করে onValueChangeFinished করা হয়েছে এবং এটিকে নাল করা হয়েছে।
    • সামঞ্জস্য বজায় রাখতে Snackbar-এ text প্যারামিটারের নাম পরিবর্তন করে content করা হয়েছে।
    • ডিফল্ট প্যাডিং কাস্টমাইজ করার অনুমতি দিতে DropdownMenuItem-এ contentPadding প্যারামিটার যোগ করা হয়েছে এবং RowScope-এ content-কে এক্সটেনশন হিসেবে তৈরি করা হয়েছে।
    • ModalDrawerLayout-এর নাম পরিবর্তন করে ModalDrawer করা হয়েছে।
    • BottomDrawerLayout-এর নাম পরিবর্তন করে BottomDrawer করা হয়েছে।
    • (I1cc66)

সমস্যার সমাধান

  • Compose-এ AnimatedVectorDrawable রিসোর্স ব্যবহার করার জন্য API যোগ করা হয়েছে। AnimatedImageVector হিসেবে <animated-vector> XML লোড করতে এবং painterFor (I8ea91) দিয়ে সেটি অ্যানিমেট করতে animatedVectorResource ব্যবহার করুন
  • TextField-এ আগের SoftwareKeyboardController ইন্টারফেস পরিবর্তন করতে নতুন LocalSoftwareKeyboardController কম্পোজিশন local API যোগ করা হয়েছে। (I658b6, b/168778053)

ভার্সন 1.0.0-alpha12

১০ ফেব্রুয়ারি, ২০২১

androidx.compose.ui:ui-*:1.0.0-alpha12 রিলিজ করা হয়েছে। 1.0.0-alpha12 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • UiApplier থেকে ViewGroups-এর জন্য সহায়তা সরিয়ে দেওয়া হয়েছে। সিস্টেম থেকে বাতিল করা emitView কম্পোজ করার উপযুক্ত আইটেম সরিয়ে দেওয়া হয়েছে। (Ifb214)
  • Modifier.pointerInput-এর এখন মনে রাখার কী প্রয়োজন হয়, যাতে নতুন ডিপেন্ডেন্সির জন্য পয়েন্টার ইনপুট ডিটেকশন কোরাউটিন কখন রিস্টার্ট করতে হবে তা বোঝা যায়। (I849cd)
  • CompositionReference-এর নাম পরিবর্তন করে CompositionContext করা হয়েছে (I53fcb)
  • Bounds-এর নাম পরিবর্তন করে DpRect (I4b32a) করা হয়েছে
  • টেস্টিং আপডেট: hasText() টেক্সট ফিল্ডে ইনপুট ও লেবেল/হিন্ট/প্লেসহোল্ডার টেক্সট, দু'টিই চেক করবে (Iab803)
  • viewModel() composable এবং LocalViewModelStoreOwner-কে androidx.lifecycle.viewmodel.compose-এ সরানো হয়েছে। এটি ব্যবহার করার জন্য আপনাকে এখন androidx.lifecycle:lifecycle-viewmodel-compose:1.0.0-alpha01 নামে একটি আলাদা ডিপেন্ডেন্সি যোগ করতে হবে। (I7a374)
  • AccessibilityAction-এ নাল অ্যাকশনকে অনুমতি দিন, AccessibilityAction-এ অ্যাকশন লেবেল এবং CustomAccessibilityAction-এ CharSequence থেকে String-এ পরিবর্তন করুন (I0dc82)
  • ImageBitmap ও ImageVector-এর সাথে নামের কনভেনশন আরও ভালোভাবে ম্যাচ করানোর জন্য, ImagePainter-এর নাম পরিবর্তন করে BitmapPainter রাখা হয়েছে, যা VectorPainter-এর সমান্তরাল। (Iba381, b/174565889)
  • সাবস্ট্রিং এখন আর্গুমেন্ট হিসেবে (Icbe78) সহ আরও ভাল সাবস্ট্রিং টেস্ট API
  • এমন একটি Modifier.focusOrder() যোগ করা হয়েছে যা কাস্টম ফোকাস অর্ডার নির্দিষ্ট না করেই FocusRequester গ্রহণ করে। এটি তখন কাজে লাগে যখন আমাদের শুধুমাত্র একটি রেফারেন্স নির্দিষ্ট করতে হয় কিন্তু কম্পোজ করার উপযুক্ত আইটেমের (I4f52a, b/179180978) জন্য কাস্টম ফোকাস অর্ডার নয়
  • ComponentActivity.setContent androidx.activity:activity-compose মডিউলের মধ্যে androidx.activity.compose.setContent-এ সরানো হয়েছে। (Icf416)
  • ডিস্ট্রাকচারিং ও copy() পদ্ধতিকে বিভিন্ন ক্লাস থেকে সরিয়ে দেওয়া হয়েছে, কারণ সেগুলি খুব কমই ব্যবহার করা হত। (I26702, b/178659281)
  • পপ-আপ সরিয়ে প্ল্যাটফর্ম নির্দিষ্ট করা হয়েছে। AndroidPopupProperties-এর নাম পরিবর্তন করে PopupProperties করা হয়েছে এবং isFocusable-কে PopupProperties-এর (Ieeea5) focusable প্যারামিটারে সরানো হয়েছে
  • প্ল্যাটফর্ম নির্দিষ্ট করার জন্য ডায়ালগ সরানো হয়েছে। AndroidDialogProperties-এর নাম পরিবর্তন করে DialogProperties করা হয়েছে। (I4ef69, b/179138130)
  • LayoutNode ইন্টার্নাল করা হয়েছে (I8a7b1, b/175103944)
  • Constraints.enforce-এর পরিবর্তে Constraints.constrain ব্যবহার করা হয়েছে। (I8b8ea)
  • loadFontResource বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে fontResource ব্যবহার করুন। imageResource, loadImageResource, vectorResource এবং loadVectorResource বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে painterResource ব্যবহার করুন। (I6b809)
  • পারফর্ম্যান্সের কারণে, ScrollAxisRange সিম্যান্টিক এখন সরাসরি Float ভ্যালুর পরিবর্তে Float রিটার্ন করা ল্যাম্বডা নেয়। (If4a35, b/178657186)
  • অ্যাক্সেসিবিলিটির জন্য টেক্সট ফিল্ডের এডিট করা যায় এমন ইনপুট টেক্সট চিহ্নিত করতে EditableText সিম্যান্টিক্স এবং সিম্যান্টিক্স চেক করার জন্য সংশ্লিষ্ট টেস্ট পদ্ধতি যোগ করা হয়েছে (I8e07a)
  • Made OwnerLayer/OwnerScope/OwnerSnapshotObserver internal (I4ffaf, b/175103944)
  • toIntPx() ফাংশনের নাম পরিবর্তন করে roundToPx() করা হয়েছে। (I9b7e4, b/173502290)
  • IntBounds-এর নাম পরিবর্তন করে IntRect করা হয়েছে এবং API উন্নত করা হয়েছে। (I1f6ff)
  • API নির্দেশিকা মেনে চলার পাশাপাশি সর্বজনীন API থেকে ইন্টার্নাল ইমপ্লিমেন্টেশন ক্লাস লুকিয়ে রাখার জন্য Snapshot API আপডেট করা হয়েছে। (Id9e32)
  • 'বড় করুন' ও 'ছোট করুন' শব্দার্থ সংক্রান্ত অ্যাকশন যোগ করা হয়েছে। ModalBottomSheetState-এ expand ও halfExpand যোগ করা হয়েছে (Ib5064)
  • Modifier.dragGestureFilter ব্যবহার করা বন্ধ করে দেওয়া হয়েছে। পরিবর্তে Modifier.pointerInput { detectDragGestures (...)} ব্যবহার করুন। অথবা, এক অ্যাক্সিস ড্র্যাগ করার জন্য Modifier.draggable ব্যবহার করুন (I0ba93, b/175294473)
  • Ambient-এর নাম পরিবর্তন করে CompositionLocal-এর সাথে ম্যাচ করানো হয়েছে। আগে অ্যাম্বিয়েন্টকে AmbientFoo নামে ডাকা হত, এখন CompositionLocals-কে LocalFoo নামে ডাকা হয়। (I2d55d)
  • বন্ধ করে দেওয়া BaseTextField এখন সরিয়ে দেওয়া হয়েছে। এর পরিবর্তে BasicTextField ব্যবহার করুন। (I71368)
  • বেছে নেওয়া আইটেমটি ফাউন্ডেশনে সরানো হয়েছে। (I7892b)
  • আমরা যেভাবে আগে state { 0 } কম্পোজ করা যায় এমন ফিচার সরিয়ে দিয়ে remember { mutableStateOf(0) }-এর মতো ফিচার ব্যবহার করার জন্য প্রচার করেছি, ঠিক সেইভাবেই savedInstanceState { 0 } কম্পোজ করা যায় এমন ফিচার সরিয়ে দিতে চলেছি। আপনাকে rememberSaveable { mutableStateOf(0) } ব্যবহার করতে হবে এবং MutableState-এর মধ্যে ব্যবহৃত ধরন Bundle-এ সেভ করা গেলে এটি অটোমেটিক সেভ ও রিস্টোর করবে। আগে আপনি কাস্টম সেভার অবজেক্ট পাস করে থাকলে, এখন আপনাকে stateSaver প্যারামিটার সহ rememberSaveable-এর নতুন ওভারলোড ব্যবহার করতে হবে। ব্যবহারটি এইরকম দেখাবে: val holder = rememberSaveable(stateSaver = HolderSaver) { mutableStateOf(Holder(0)) } (Ib4c26, b/177338004)
  • অ্যাক্সেসিবিলিটির জন্য পাসওয়ার্ডের শব্দার্থ যোগ করা হয়েছে (I231ce)
  • অ্যাক্সেসিবিলিটির জন্য অনির্দিষ্ট প্রগ্রেস বার চিহ্নিত করতে ProgressBarRangeInfo.Indeterminate যোগ করা হয়েছে (I6fe05)
  • emptyContent() ও (@Composable () -> Unit).orEmpty() ইউটিলিটি আর ব্যবহার করা হয় না কারণ এগুলি আর কোনও ইতিবাচক পারফর্ম্যান্স প্রভাব বা ভ্যালু প্রদান করে না (I0484d)
  • snapshotFlow ও withMutableSnapshot আর পরীক্ষামূলক নয় (I6a45f)
  • এখন রিকম্পোজার বন্ধ করা যাবে। বন্ধ হয়ে যাওয়া রিকম্পোজাররা কম্পোজিশন চাইল্ড কোরাউটিন সম্পূর্ণ না হওয়া পর্যন্ত রিকম্পোজিশন চালিয়ে যাবে। Recomposer.shutDown-এর নাম পরিবর্তন করে cancel করা হয়েছে, যাতে close-এর সাথে এর পার্থক্য বোঝা যায়। (Ib6d76)
  • UiSavedStateRegistry-এর নাম পরিবর্তন করে SaveableStateRegistry রাখা হয়েছে, AmbientUiSavedStateRegistry-এর নাম পরিবর্তন করে AmbientSaveableStateRegistry রাখা হয়েছে এবং দুটিকেই androidx.compose.runtime.saveable প্যাকেজে সরানো হয়েছে। (I30224)
  • Artefact androidx:compose:runtime:runtime-saved-instance-state-এর নাম পরিবর্তন করে androidx:compose:runtime:runtime-saveable করা হয়েছে (I6dcac)
  • ui প্যাকেজে অনেক পুরনো বন্ধ হয়ে যাওয়া API মুছে দেওয়া হয়েছে। (I2f2dc)
  • compose:runtime-dispatch আর্টিফ্যাক্ট এখন বন্ধ করা হয়েছে। MonotonicFrameClock এখন compose:runtime-এ এবং AndroidUiDispatcher এখন compose:ui-এ পাওয়া যাবে। (Ib5c36)
  • Outline.* ক্লাস আর ডেটা ক্লাস নয় (I4879e, b/178001427)
  • কোনও রিপ্লেসমেন্ট ছাড়াই view.captureToImage() সরিয়ে দেওয়া হয়েছে। (I7fcd2)
  • সোর্স কন্টেন্টের rgb ভ্যালু পরিবর্তন করতে ColorMatrix API ব্যবহার করা হয় ColorFilter API-কে একটি ইন্টারফেস হিসেবে রিফ্যাক্টর করা হয়েছে এবং এটি PathEffect-এর প্রয়োগের সাথে ম্যাচ করে। (Ica1e8)
  • Shape-এর createOutline-এ layoutDirection প্যারামিটার যোগ করুন। এর ফলে লেআউট ডিরেকশন সচেতন শেপ তৈরি করা যায়। (I57c20, b/152756983)
  • onImeActionPerformed বাতিল করা হয়েছে। এর পরিবর্তে KeyboardActions ব্যবহার করুন (If0bbd, b/179071523)
  • InfiniteAnimationPolicy কোরাউটিন কনটেক্সট এলিমেন্ট যোগ করা হয়েছে যা অসীম অ্যানিমেশনে প্রয়োগ করা হবে। ComposeTestRule-এর সাথে পরীক্ষা চালানোর সময় ছাড়া ডিফল্ট হিসেবে কোনও নীতি ইনস্টল করা হয় না। (I50ec4, b/151940543)
  • Modifier.scrollable থেকে canDrag সরিয়ে দেওয়া হয়েছে। (Id66e7, b/175294473)
  • নতুন parentCoordinates প্রপার্টির জন্য অনুমতি দিতে LayoutCoordinates.parentCoordinates-এর নাম পরিবর্তন করে LayoutCoordinates.parentLayoutCoordinates করা হয়েছে। parentCoordinates প্রপার্টি এখন পেরেন্ট মডিফায়ারের LayoutCoordinates অফার করে। এর ফলে onSizeChanged() এবং onGloballyPositioned() (Idfbfd, b/177926591) আরও সম্পূর্ণভাবে ব্যবহার করা যাবে
  • tapGestureFilter, doubleTapGestureFilter, longPressGestureFilter এবং pressIndicaitonGestureFilter বন্ধ করা হয়েছে। এর পরিবর্তে detectTapGestures ফাংশনের সাথে Modifier.clickable বা Modifier.pointerInput ব্যবহার করুন। (I6baf9, b/175294473)
  • SaveableStateRegistry-এর unregisterProvider সরানো হয়েছে। এর পরিবর্তে, registerProvider() এখন SaveableStateRegistry.Entry অবজেক্ট রিটার্ন করে যা আপনি আনরেজিস্টার করতে ব্যবহার করতে পারেন (Ic4274, b/178583739)
  • rememberSavedInstanceState() ফাংশনের নাম পরিবর্তন করে rememberSaveable() করা হয়েছে এবং এটি androidx.compose.runtime.saveable প্যাকেজে সরানো হয়েছে। (I1366e, b/177338004)
  • পাবলিক API থেকে CoreText ও CoreTextField সরানো হয়েছে
    • পুরনো হয়ে যাওয়া SelectionContainer ওভারলোড সরানো হয়েছে
    • (I99c19)
  • যেসব টেস্টে Compose-কে এমন হায়ারার্কিতে ব্যবহার করা হয় যেগুলি WindowManager-এ সরাসরি যোগ করা/সরানো হয়, সেগুলি এখন আরও স্থিতিশীল। (Ie81ed, b/175765614)
  • Recomposer.current() সরানো হয়েছে। [Abstract]ComposeView এখন ডিফল্ট হিসেবে লেজি ক্রিয়েটেড, উইন্ডো-স্কোপড রিকম্পোজার ব্যবহার করে, যা উইন্ডোর জন্য ViewTreeLifecycleOwner দ্বারা পরিচালিত হয়। হোস্ট লাইফসাইকেল বন্ধ থাকাকালীন রিকম্পোজিশন এবং withFrameNanos-ভিত্তিক অ্যানিমেশন টিক পজ করা থাকে। (I38e11)
  • Recomposer.runningRecomposers এখন প্রসেসে চলমান কম্পোজিশন স্টেট পর্যবেক্ষণ করার জন্য রিড-অনলি RecomposerInfo-এর একটি গ্লোবাল StateFlow অফার করে। Recomposer.current()-এর পরিবর্তে এই API ব্যবহার করুন, এটি এখন অননুমোদিত। (If8ebe)
  • Saver, listSaver(), mapSaver(), autoSaver-কে androidx.compose.runtime.savedinstancestate থেকে androidx.compose.runtime.saveable-এ সরানো হয়েছে (I77fe6)
  • EditCommands AnnotatedString গ্রহণ করে। তবে এটি শুধুমাত্র API-তে করা পরিবর্তন এবং মাল্টি-স্টাইল টেক্সট এডিটিং এখনও কার্যকর করা হয়নি। (I4c3ea)
  • আপটাইম ও সময়সীমা সরিয়ে দেওয়া হয়েছে। (Ib9bf4, b/177420019)
  • CompositionData.asTree() ও সম্পর্কিত API আলাদা ui-tooling-data মডিউলে সরানো হয়েছে এবং এক্সপেরিমেন্টাল হিসেবে চিহ্নিত করা হয়েছে (Ic95b8)
  • RTL ডিরেকশনে শেপের অটোমেটিক মিররিং কাজ করানোর জন্য RounderCornerShape, CutCornerShape ও CornerBasedShape-এর প্যারামিটারগুলির নাম বাঁদিক/ডানদিক থেকে পরিবর্তন করে শুরু/শেষ করা হয়েছে। অটো-মিররিং না চাইলে, সেইসব ক্ষেত্রে AbsoluteRounderCornerShape এবং AbsoluteCutCornerShape ব্যবহার করা হয়। (I61040, b/152756983)
  • Compose কম্পাইলার প্লাগ-ইন যে API-কে টার্গেট করে সেটি রিফ্যাক্টর করা হয়েছে যাতে কংক্রিট ক্লাসের পরিবর্তে ইন্টারফেস ব্যবহার করা যায়। এছাড়াও, ইন্টারফেসটি আর কোনও টাইপ প্যারামিটার ব্যবহার করে না।

    এটি একটি ইন্টার্নাল পরিবর্তন যা সোর্স কোড কম্প্যাটিবিলিটির উপর প্রভাব ফেলবে না, তবে এটি একটি বাইনারি ব্রেকিং পরিবর্তন। (I3b922, b/169406779)

  • ভুলবশত পাবলিক করা StringBuilder.deleteAt ফাংশন সরিয়ে দেওয়া হয়েছে (Id6ed9)

সমস্যার সমাধান

  • ভিউ হায়ারার্কিতে প্লেস করা ComposeViews, যেগুলি অন্য কম্পোজিশনের চাইল্ড, সেগুলি এখন তাদের পূর্বপুরুষদের চাইল্ড কম্পোজিশন হোস্ট করে (I92883)
  • ImageBitmap অবজেক্ট লোড করার সময় রিসোর্স ড্রয়েবল ক্যাশে আবার ব্যবহার করতে, compose's imageFromResource API আপডেট করা হয়েছে। (If3627, b/178751994)

ভার্সন 1.0.0-alpha11

২৮ জানুয়ারি, ২০২১

androidx.compose.ui:ui-*:1.0.0-alpha11 রিলিজ করা হয়েছে। 1.0.0-alpha11 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • WithConstraints-এর নাম পরিবর্তন করে BoxWithConstraints করা হয়েছে এবং এটিকে foundation.layout-এ সরানো হয়েছে। (I9420b, b/173387208)
  • Key.DPadUp আর ব্যবহার করা হয় না। এর পরিবর্তে Key.DirectionUp ব্যবহার করুন। (Iab335, b/177954892)
  • এখন থেকে মালিকের ইন্টারফেস ইন্টার্নাল হবে। (If8e35)
  • প্রোগ্র্যামাটিক্যালি ফোকাস সরানোর জন্য FocusManager.moveFocus() API যোগ করা হয়েছে। (I045cb, b/177681839)
  • গ্লোবাল কোঅর্ডিনেটের পরিবর্তে উইন্ডো-রিলেটিভ কোঅর্ডিনেট ব্যবহার করার জন্য PopupPositionProvider পরিবর্তন করে। parentGlobalBounds-এর নাম পরিবর্তন করে anchorBounds করা হয়েছে এবং windowGlobalBounds-কে পরিবর্তন করে windowSize: IntSize করা হয়েছে (I2994a)
  • সময়সীমা ও আপটাইমকে বড় মিলিসেকেন্ড দিয়ে পরিবর্তন করা হবে, এবং এই ধাপটি সেইসব ক্লাসে পয়েন্টার ইনপুটের নির্ভরতা সরিয়ে দেয়। (Ia33b2, b/175142755, b/177420019)
  • আগে থেকেই থাকা AmbientLifecycleOwner ও AmbientViewModelStoreOwner-এর (I9a3e8, b/176756365) মতোই AmbientSavedStateRegistryOwner যোগ করা হয়েছে
  • ভেক্টর গ্রাফিক্সের মূল অংশে প্রয়োগ করা টিন্টিং পার্স করার সুবিধা দিতে API-এর ভেক্টর গ্রাফিক্স আপডেট করা হয়েছে। (Id9d53, b/177210509)
  • ডিভাইস আলাদা করার জন্য PointerInputChange-এ toolType যোগ করা হয়েছে (Iac787, b/175142755)
  • AmbientWindowManager-এর নাম পরিবর্তন করে AmbientWindowInfo করা হয়েছে (I2686a, b/177084714, b/177084983)
  • পুরনো গ্লোবাল কোঅর্ডিনেট পদ্ধতি সরিয়ে দিয়ে নতুন উইন্ডো-ভিত্তিক কোঅর্ডিনেট পদ্ধতি যোগ করা হয়েছে। (Iee284)
  • Added Modifier.toolingGraphicsLayer যা পরিদর্শন চালু করা হলে গ্রাফিক্স লেয়ার মডিফায়ার যোগ করে। (I315df)
  • FocusRequester.createRefs এখন পরীক্ষামূলক হিসেবে চিহ্নিত করা হয়েছে কারণ এটি পরিবর্তন হতে পারে। (I2d898, b/177000821)
  • SemanticsPropertyReceiver.hidden-এর নাম পরিবর্তন করে invisibleToUser করা হয়েছে এবং @ExperimentalComposeUiApi হিসেবে চিহ্নিত করা হয়েছে। AccessibilityRangeInfo-এর নাম পরিবর্তন করে ProgressBarRangeInfo করা হয়েছে। stateDescriptionRange-এর নাম পরিবর্তন করে progressBarRangeInfo করা হয়েছে। AccessibilityScrollState-এর নাম পরিবর্তন করে ScrollAxisRange করা হয়েছে। horizontalAccessibilityScrollState-এর নাম পরিবর্তন করে horizontalScrollAxisRange করা হয়েছে। verticalAccessibilityScrollState-এর নাম পরিবর্তন করে verticalScrollAxisRange করা হয়েছে। (Id3148)
  • PointerInputData সরিয়ে দেওয়া হয়েছে এবং PointerInputChange পরিবর্তন করে PointerInputData-এর সব ফিল্ড দেওয়া হয়েছে। PointerInputEvent ও PointerInputEventData ইন্টার্নাল করা হয়েছে কারণ সেগুলি কোনও পাবলিক API-তে ব্যবহার করা হয় না। (Ifff97, b/175142755)
  • dp-কে র পিক্সেল কনভার্ট করার জন্য GraphicsLayerScope implement density আপডেট করা হয়েছে। (Ied528, b/176819695)
  • সারি মেজর অর্ডারিং অনুসরণ করতে এবং বিভিন্ন ম্যাট্রিক্স উপস্থাপনার মধ্যে কনভার্সন করতে সাহায্য করার জন্য ইনডেক্স কনস্ট্যান্ট প্রদান করতে আপডেট করা ম্যাট্রিক্স API যা ইন্টার্নালি SkMatrix এবং Matrix4-এর মধ্যে ফ্রেমওয়ার্ক কনভার্সন লজিক ম্যাচ করে। (I432e6)
  • পরীক্ষামূলক monotonicFrameAnimationClockOf পদ্ধতি (Ib753f, b/170708374) সরানো হয়েছে
  • String.fintPrecedingBreak ও String.fingFollowingBreak-কে InternalTextApi-তে সরান। (I657c4)
  • পাবলিক API থেকে androidx.compose.ui.util.isSurrogatePair সরিয়ে দেওয়া হয়েছে। (Ia9494)
  • TransformedText.transformedText-এর নাম পরিবর্তন করে TransformedText.text
      রাখা হয়েছে
    • TransformedText আর ডেটা ক্লাস (Ie672a) নয়
  • নিম্নলিখিত ক্লাস থেকে data class সরানো হয়েছে:
    • InlineTextContent
    • LocaleList (I605c7)
  • নিম্নলিখিত ক্লাসগুলি আর ডেটা ক্লাস নয়:
    • AnnotatedString
    • ParagraphStyle
    • SpanStyle
    • TextStyle
    • FontWeight
    • TextDecoration
    • TextGeometricTransform
    • TextIndex
    • TextLayoutResult
    • TextLayoutInput (Iaff99)
  • VisualTransformation-কে ফাংশনাল ইন্টারফেস হিসেবে পরিবর্তন করা হয়েছে (I3bba4)
  • ফাংশন রেফারেন্স প্যারামিটার ধরন (I5e1bd) যোগ করা হয়েছে
  • InspectorNode-এ ট্রান্সফর্ম করা বাউন্ড যোগ করুন (Ice42f)

সমস্যার সমাধান

  • SideEffect এবং DisposableEffect API-এর (If760e) পরিবর্তে onCommit, onDispose এবং onActive বন্ধ করে দেওয়া হয়েছে
  • Font/FontFamily/Typeface-এর ফ্যাক্টরি ফাংশনে হওয়া পরিবর্তন

    • ক্যাপিটাল লেটার দিয়ে শুরু হওয়া ফ্যাক্টরি ফাংশন যোগ করা হয়েছে
    • ছোট হাতের অক্ষর দিয়ে শুরু হওয়া আগের ফ্যাক্টরি ফাংশন বন্ধ করা হয়েছে
    • নতুন ফ্যাক্টরি ফাংশন সাবক্লাসের পরিবর্তে FontFamily রিটার্ন করে
    • সাবক্লাসের কনস্ট্রাক্টর লুকানো হয়েছে, যাতে সেগুলি শুধুমাত্র ফ্যাক্টরি ফাংশনের মাধ্যমে কনস্ট্রাক্ট করা যায়।
    • Font.asFontFamily-এর নাম পরিবর্তন করে Font.toFontFamily করা হয়েছে (I42aa7)
  • ComposeContentTestRule চালু করা হয়েছে, যা ComposeTestRule-এর এক্সটেনশন এবং setContent-এর সংজ্ঞা দেয়, যা ComposeTestRule থেকে সরিয়ে দেওয়া হয়েছে। createEmptyComposeRule() এমন একটি ফ্যাক্টরি পদ্ধতি যোগ করা হয়েছে যা ComposeTestRule রিটার্ন করে এবং আপনার জন্য কোনও অ্যাক্টিভিটি লঞ্চ করে না। আপনি যখন নিজের পরীক্ষার সময় আপনার অ্যাক্টিভিটি লঞ্চ করতে চান তখন এটি ব্যবহার করুন, যেমন ActivityScenario.launch (I9d782, b/174472899) ব্যবহার করা

  • animateAsState এখন animateFooAsState, যেখানে Foo হল অ্যানিমেট করা ভেরিয়েবলের ধরন। যেমন, Float, Dp, Offset ইত্যাদি (Ie7e25)

  • ছবি ও আইকনে কন্টেন্টের বিবরণ সংক্রান্ত প্যারামিটার যোগ করা হয়েছে। অ্যাক্সেসিবিলিটি পরিষেবার (I2ac4c) বিবরণ প্রদান করতে এটি ব্যবহার করা হয়

  • displaySize সরিয়ে দিন কারণ এটি এড়িয়ে যাওয়া উচিত। সাধারণত, onRoot() বা উইন্ডো সাইজের সাইজ ব্যবহার করা ভাল। (I62db4)

  • OnSizeChanged লেআউটের কন্টেন্টের সাইজ সম্পর্কে রিপোর্ট করছিল। এটি এখন মডিফায়ার চেনের মধ্যে এর পজিশনে সাইজ রিপোর্ট করে। (I36b78, b/177562900)

  • emit() API এবং এর সব ওভারলোড বন্ধ করে দেওয়া হয়েছে এবং ComposeNode নামে রিনেম করা হয়েছে। APIগুলি একই রকম, শুধু Compose-এর (I4137b) নামকরণ সংক্রান্ত নিয়মাবলী মেনে চলার জন্য আলাদা নাম দেওয়া হয়েছে

  • TextFieldValue AnnotatedString গ্রহণ করে। তবে এটি শুধুমাত্র একটি API পরিবর্তন এবং মাল্টি-স্টাইল টেক্সট এডিটিং এখনও কার্যকর করা হয়নি।

    • EditingBuffer কনস্ট্রাক্টর প্যারামিটার থেকে initial সরানো হয়েছে। (I326d5)
  • invalidate এবং compositionReference() এখন যথাক্রমে currentRecomposeScope এবং rememberCompositionReference-এর পরিবর্তে ব্যবহার করা হয়। (I583a8)

  • kotlin.CharSequence থেকে এক্সটেন্ড করার জন্য AnnotatedString পরিবর্তন করা হয়েছে। তাই, length ও subSequence এখন ইনস্ট্যান্স ফাংশন, এবং এক্সটেনশন ফাংশন সরিয়ে দেওয়া হয়েছে। (Iaf429)

  • RememberObserver, CompositionLifecycleObserver -এর পরিবর্তে ব্যবহার করা হয় এবং CompositionLifecycleObserver এখন আর ব্যবহার করা হয় না।

    RememberObserver হল CompositionLifecycleObserver-এর একটি রিপ্লেসমেন্ট, যার পরিবর্তিত সিম্যান্টিক্স ও রিনেম করা পদ্ধতি রয়েছে। নতুন API-তে পরিবর্তন করার কাজটি মেকানিক্যালি করা যেতে পারে যেসব অবজেক্ট শুধুমাত্র একবার মনে রাখা হয়, এটি হল সাজেস্ট করা প্র্যাকটিস এবং এটি চালিয়ে যেতে হবে। তবে, কোনও রেফারেন্স যদি কম্পোজিশনে একাধিকবার মনে রাখা হয়, তাহলে onRemembered-কে প্রতিটি রেফারেন্সের জন্য কল করা হয়, যেখানে onEnter-কে শুধুমাত্র একবার কল করা হয়। onEnter সাবকম্পোজিশনে অবজেক্ট ব্যবহার করা হলে একাধিকবার কল করা হয়, যেমন WithConstraints ও Scaffold, এর ফলে সিঙ্গেল onEnter কল গ্যারান্টি নির্ভরযোগ্য থাকে না এবং এটি RememberObserver-এর জন্য সরিয়ে দেওয়া হয়েছে।

    RememberObserver, onAbandoned যোগ করে যা কল করা হয় যদি RememberObserver ইনস্ট্যান্স, remember-এ পাস করা কলব্যাক থেকে ফেরত আসে কিন্তু কম্পোজিশন স্টেটে মনে রাখা না হয় এবং সেই কারণে, onRemembered কখনও কল করা হবে না। কম্পোজিশন সম্পূর্ণ হওয়ার আগে কোনও ব্যতিক্রম সেটি বন্ধ করে দিলে অথবা কম্পোজিশন বাতিল করা হলে এটি হতে পারে, কারণ যে স্টেটের জন্য কম্পোজিশন তৈরি করা হচ্ছিল সেটি আর বর্তমান নেই অথবা অন্য কোনও কারণে আর প্রয়োজন নেই। RememberObserver উপরের একটি রেফারেন্স সংক্রান্ত সাজেশন অনুসরণ করার উদাহরণটি যদি কোনও এক্সটার্নাল রিসোর্স ট্র্যাক করে, তাহলে onForgotten ও onAbandoned দু'টিই ইঙ্গিত করে যে রিসোর্সটির আর প্রয়োজন নেই। অবজেক্টটি যদি onRemembered-এ শুরু হওয়া কাজ ট্র্যাক করে বা রিসোর্স বরাদ্দ করে, তাহলে onAbandoned এড়িয়ে যাওয়া যেতে পারে, কারণ onRemembered কল করা হলে এটি কল করা হবে না। (I02c36)

  • ২ বা তার বেশি TextUnit-এর মধ্যে বাতিল করা গাণিতিক অপারেশন। Int.sp এবং Int.em-এর মতো এক্সটেনশন ফাংশনের পরিবর্তে TextUnit.Sp এবং TextUnit.Em ফাংশন আর ব্যবহার করা হয় না। (I48369)

  • লাইব্রেরিতে স্পষ্টভাবে ঘোষণা করা পাবলিক রিসোর্স নেই (যেমন, public.xml-এর মাধ্যমে) এমন রিসোর্স এখন ডিফল্ট হিসেবে ব্যক্তিগত। (Ia1dcc, b/170882230)

  • ScrollableColumn/Row বন্ধ করা হয়েছে। আপনার কাছে অনেক বেশি স্ক্রল করার মতো কন্টেন্ট থাকলে, ScrollableColumn ব্যবহার করা LazyColumn-এর তুলনায় কম কার্যকর হয়, কারণ LazyColumn-এর মাধ্যমে আমরা শুধুমাত্র দৃশ্যমান এলিমেন্ট কম্পোজ/মাপ/ড্র করতে পারি। ব্যবহারকারীরা যাতে অদক্ষ উপায়ে কাজ না করেন, সেই জন্য আমরা ScrollableColumn ও ScrollableRow সরিয়ে দেওয়ার সিদ্ধান্ত নিয়েছি এবং পরিবর্তে LazyColumn ও LazyRow ব্যবহার করার জন্য উৎসাহিত করি। ব্যবহারকারীরা এখনও সিদ্ধান্ত নিতে পারেন যে তাদের অলস আচরণ প্রয়োজন নেই এবং সরাসরি এই ধরনের মডিফায়ার ব্যবহার করতে পারেন: Column(Modifier.verticalScroll(rememberScrollState())) (Ib976b, b/170468083)

  • LazyColumn/LazyRow/LazyVerticalGrid-এর স্কোপের জন্য নতুন items(count: Int) ফ্যাক্টরি মেথড। items(items: List) এবং itemsIndexed(items: List) এখন এক্সটেনশন ফাংশন, তাই ব্যবহার করার সময় আপনাকে ম্যানুয়ালি সেগুলি ইমপোর্ট করতে হবে। অ্যারের জন্য নতুন এক্সটেনশন ওভারলোড: items(items: Array) এবং itemsIndexed(Array) (I803fc, b/175562574)

  • ImeAction.NoAction-এর পরিবর্তে ImeAction.None ব্যবহার করুন

    • ImeAction.Unspecified (Ie1bcc)-এর পরিবর্তে ImeAction.Default ব্যবহার করুন
  • টেস্টিংয়ে TestCoroutineDispatcher ব্যবহার করা (I532b6)

  • TextInputService.onStateUpdated-এর নাম পরিবর্তন করে updateState করা হয়েছে (Id4853)

  • TransitionDefinition-ভিত্তিক ট্রানজিশন বন্ধ করা হয়েছে (I0ac57)

  • TextUnitType.Inherit সরিয়ে দেওয়া হয়েছে। পরিবর্তে TextUnitType.Unspecified ব্যবহার করুন। (I9ff64)

ভার্সন 1.0.0-alpha10

১৩ জানুয়ারি, ২০২১

androidx.compose.ui:ui-*:1.0.0-alpha10 রিলিজ করা হয়েছে। 1.0.0-alpha10 ভার্সনে এইসব কমিট রয়েছে।

ব্রেকিং পরিবর্তন

  • ইন্টার্নাল কম্পাইলারের রিস্ট্রাকচারিং API, কম্পোজিশনের ফলে তৈরি হওয়া নোডে করা পরিবর্তনগুলিকে কম্পোজিশনের "পরিবর্তন প্রয়োগ করুন" ফেজে ব্যাচ করতে দেয়, এটি সব @Composable ফাংশন সম্পূর্ণ হওয়ার পরে করা হয়।

    এটি একটি আচরণগত ব্রেকিং পরিবর্তন যা অ্যাপ্লিকেশন কোডকে প্রভাবিত করতে পারে কারণ পরিবর্তন প্রয়োগ না করা পর্যন্ত ইন্টার্নাল এবং পরীক্ষামূলক API থেকে নোড আর উপলভ্য নেই। এটি সাধারণত এই ধরনের ডিপেন্ডেন্সি সহ কোডকে SideEffect কম্পোজ করার মাধ্যমে সমাধান করা যেতে পারে, যাতে নোড তৈরি ও ইনিশিয়ালাইজ না হওয়া পর্যন্ত কোড এক্সিকিউট না হয়। (I018da)

API-তে পরিবর্তন

  • কাস্টম ফোকাস ট্রাভার্সাল অর্ডার (I90cf5, b/175899543, b/170155556, b/170155429) নির্দিষ্ট করতে ব্যবহার করা যেতে পারে এমন Added Modifier.focusOrder()
  • deprecated focusObserver সরানো হয়েছে, পরিবর্তে onFocusChanged বা onFocusEvent ব্যবহার করুন (I3ecb9, b/175156387)
  • EditOperations API-তে পরিবর্তন
    • EditOperation-এর নাম পরিবর্তন করে EditCommand করা হয়েছে
    • EditOperation কনক্রিট ইমপ্লিমেন্টেশনের জন্য কমান্ড সাফিক্স যোগ করা হয়েছে
    • EditCommand আর ডেটা ক্লাস নয়
    • EditOperation.process ফাংশনের নাম পরিবর্তন করে applyTo করা হয়েছে
    • InputEventListener-এর নাম পরিবর্তন করে InputEventCallback করা হয়েছে
    • (I0a366)
  • PxSquared, PxCubed, PxInverse ব্যবহার করা হয় না বলে সরিয়ে দেওয়া হয়েছে। Size.center()-কে প্রপার্টি হিসেবে পরিবর্তন করা হয়েছে। (I973f7)
  • ui-test মডিউল এখন পরীক্ষা করা হচ্ছে এমন UI-এর জন্য Recomposers তৈরি করা কনফিগার করতে পারবে (Ibebd8)
  • পরিবর্তিত ভেলোসিটিতে কম্পোনেন্ট পার্ট ও গাণিতিক অপারেশন থাকতে হবে। (Ib0447)
  • একই ধরনের এক্সপেরিমেন্টাল API অ্যানোটেশনের (Ia4502, b/171464963) সাথে সামঞ্জস্যপূর্ণ হতে @ExperimentalTesting-এর নাম পরিবর্তন করে @ExperimentalTestApi করা হয়েছে
  • Color.useOrElse()-এর নাম পরিবর্তন করে Color.takeOrElse() করা হয়েছে (Ifdcf5)
  • অব্যবহৃত DpInverse, DpSquared এবং DpCubed ক্লাস সরিয়ে দেওয়া হয়েছে। (I4d62b)
  • Constraints#satisfiedBy-এর নাম পরিবর্তন করে isSatisfiedBy করা হয়েছে। (I9cf5c)
  • layoutnode-এর বাউন্ড পরিবর্তন হলে মালিককে জানানোর জন্য একটি কলব্যাক যোগ করুন। (I72fd1)
  • নির্দিষ্ট করা নেই এমন কনস্ট্যান্ট সহ ইনলাইন ক্লাসের জন্য isSpecified, isUnspecified এবং useOrElse যোগ করা হয়েছে। (I93f7b, b/174310811)
  • [Abstract]ComposeView API-কে আরও উন্নত করে, কম্পোজ-ভিত্তিক ভিউ রিসাইকেল করার সুবিধা দেওয়া হয়েছে। এর ফলে, কম্পোজিশন ডিসপোজ করে পরে আবার সেটি রিক্রিয়েট করা যাবে। চাইল্ড কম্পোজিশন তৈরি করার জন্য উইন্ডো-স্কোপড রিকম্পোজার এবং কম্পোজিশন রেফারেন্স ইনস্টল ও ডিসকভার করার জন্য API যোগ করুন।

    [Abstract]ComposeViews-এর কম্পোজিশন ডিসপোজাল স্ট্র্যাটেজি কনফিগার করার জন্য ViewCompositionStrategy যোগ করুন; ডিফল্ট আচরণ হল উইন্ডো ডিটাচ করার সময় ডিসপোজ করা। (I860ab)

  • Removed Any.identityHashCode() public api (I025d7)

  • সরাসরি ব্যবহার করার পরিবর্তে String.format ব্যবহার করার জন্য toStringAsFixed API সরিয়ে দেওয়া হয়েছে। (Iaba6b)

  • Toggle to foundation Strings.kt (I4a5b7, b/172366489) যোগ করুন

  • nativeClass-কে ui মডিউলে সরানো হয়েছে এবং এটিকে ইন্টার্নাল করা হয়েছে। equals ইমপ্লিমেন্টেশনে nativeClass-এর আপডেট করা ব্যবহার পরিবর্তে 'is MyClass' ব্যবহার করা। (I4f734)

  • Modifier.focus() ও Modifier.focusRequester() বন্ধ করা হয়েছে। এর পরিবর্তে Modifier.focusModifier() এবং Modifier.focusReference() ব্যবহার করুন। (I75a48, b/175160751, b/175160532, b/175077829)

  • SelectionManager-কে বেছে নেওয়ার মতো আইটেম সংক্রান্ত আপডেট জানানোর জন্য SelectionRegistrar.notifySelectableChange চালু করা হয়েছে। (I6ff30, b/173215242)

  • বিভিন্ন আউটলাইন ইমপ্লিমেন্টেশনের জন্য বাউন্ডিং রেক্ট পাওয়ার জন্য Outline.bounds প্রপার্টি যোগ করা হয়েছে। (I16e74, b/175093504)

  • বাতিল করা TestUiDispatcher. এর পরিবর্তে Dispatchers.Main ব্যবহার করুন (Ic171f, b/175385255)

  • ImeOptions এবং KeyboardOptions আর ডেটা ক্লাস নয় (I3c898, b/168684531)

  • VisualTransformation API-তে পরিবর্তন

    • OffsetMap-এর নাম পরিবর্তন করে OffsetMapping করা হয়েছে
    • OffsetMapping.identityOffsetMap-এর নাম পরিবর্তন করে OffsetMapping.Identity করা হয়েছে
    • PasswordTransformation আর ডেটা-ক্লাস নয়
    • OffsetMapping-কে নিজস্ব ফাইলে সরানো হয়েছে
    • (I0bdf3)
  • Position-এর নাম পরিবর্তন করে DpOffset করা হয়েছে এবং getDistance() সরিয়ে দেওয়া হয়েছে (Ib2dfd)

  • Changed fun Dp.isFinite() to a val Dp.isFinite (I50e00)

সমস্যার সমাধান

  • Recomposer এখন তার বর্তমান অবস্থার একটি ফ্লো প্রকাশ করে, যা এর অ্যাক্টিভিটি এবং সংশ্লিষ্ট এফেক্টের অ্যাক্টিভিটি মনিটর করার অনুমতি দেয়। (Ifb2b9)
  • nativeKeyEvent এখন keyEvent.nativeKeyEvent (I87c57, b/173086397) থেকে অ্যাক্সেস করা যাবে
  • animate() এখন animateAsState() দিয়ে পরিবর্তন করা হয়েছে, যা T-এর পরিবর্তে State<T> রিটার্ন করে। এর ফলে আরও ভাল পারফর্ম্যান্স পাওয়া যায়, কারণ স্টেট ভ্যালু যেখানে রিড করা হয় সেখানে ইনভ্যালিডেশনের স্কোপ কমিয়ে আনা যায়। (Ib179e)
  • Semantics রোল API যোগ করুন এবং ক্লিক করা যায়, বেছে নেওয়া যায় ও টগল করা যায় এমন SemanticsModifier-এ প্যারামিটার হিসেবে রোল যোগ করুন। পরিবর্তিত Modifier.progressSemantics যাতে Slider-ও এটি ব্যবহার করতে পারে। (I216cd)
  • নতুন কোরাউটিন-ভিত্তিক API Animatable যা এর অ্যানিমেশনগুলির মধ্যে পারস্পরিক এক্সক্লুসিভনেস নিশ্চিত করে।
    • মাল্টি-ডাইমেনশনাল ক্ষয় অ্যানিমেশন কাজ করার জন্য নতুন DecayAnimationSpec
    • (I820f2, b/168014930)

ভার্সন 1.0.0-alpha09

১৬ ডিসেম্বর, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha09 রিলিজ করা হয়েছে। 1.0.0-alpha09 ভার্সনে এই কমিটগুলি রয়েছে।

API-তে পরিবর্তন

  • বন্ধ হয়ে যাওয়া KeyEvent.Alt এখন সরিয়ে দেওয়া হয়েছে। এর পরিবর্তে KeyEvent.isAltPressed ব্যবহার করুন। (Idd695)
  • Modifier.keyInputFilter ও Modifier.previewKeyInputFilter আর ব্যবহার করা হয় না, পরিবর্তে Modifier.onKeyEvent ও Modifier.onPreviewKeyEvent ব্যবহার করুন (Idbf1b, b/175156384)
  • Modifier.focusObserver বন্ধ করা হয়েছে। পরিবর্তে Modifier.onFocusChanged বা Modifier.onFocusEvent ব্যবহার করুন (I30f17, b/168511863, b/168511484)
  • পয়েন্টার ইনপুট API সাসপেন্ড করার জন্য, রিনেম করা হয়েছে HandlePointerInputScope-কে AwaitPointerEventScope এবং handlePointerInput()-কে awaitPointerEventScope() হিসেবে। (Idf0a1, b/175142755)
  • অটোফিল API এখন পরীক্ষামূলক API এবং এর জন্য অপ্ট-ইন করতে হবে (I0a1ec)
  • FocuSRequester ইনস্ট্যান্স তৈরি করতে ডিস্ট্রাকচারিং ঘোষণা যোগ করা (I35d84, b/174817008)
  • accessibilityLabel-এর নাম পরিবর্তন করে contentDescription করা হয়েছে। accessibilityValue-এর নাম পরিবর্তন করে stateDescription করা হয়েছে। (I250f2)
  • সাসপেন্ড করা পয়েন্টার ইনপুট API (Ia54d5, b/175142755) থেকে কাস্টম ইভেন্ট সরিয়ে দেওয়া হয়েছে
  • SelectionRegistrar-এ একাধিক নতুন ফাংশন যোগ করা হয়েছে এবং onPositionChange-এর নাম পরিবর্তন করে notifyPositionChange করা হয়েছে। (Ifbaf7)
  • LayoutNode-এর আরও মেম্বারকে আমরা ইন্টার্নাল হিসেবে চিহ্নিত করেছি (I443c6)
  • টুলিং ও টেস্টিংয়ের (I9b190) জন্য LayoutInfo চালু করা হয়েছে
  • AndroidOwner ইন্টার্নাল (Ibcad0, b/170296980)
  • ExperimentalPointerInput অ্যানোটেশন সরানো হয়েছে (Ia7a24)
  • নেস্টেড স্ক্রল সিস্টেম যোগ করা হয়েছে। আরও বিবরণের জন্য Modifier.nestedScroll দেখুন (I36e15, b/162408885)
  • subcomposeInto(LayoutNode) ইন্টার্নাল করা হয়েছে (Id724a)
  • Applier ইন্টারফেস পরিবর্তন করে ট্রি তৈরির প্রক্রিয়াকে আরও সহজ করা হয়েছে। এখন ট্রি উপর থেকে নিচে না তৈরি করে নিচ থেকে উপরে তৈরি করা হয়।

    insert() পদ্ধতির নাম পরিবর্তন করে insertTopDown() করা হয়েছে।

    insertBottomUp() নামে একটি নতুন পদ্ধতি যোগ করা হয়েছে।

    যে অ্যাপ্লায়ার এডিট করছে, সেটি insertTopDown() বা insertBottomUp() ব্যবহার করে ট্রি-তে নোড যোগ করে। কোনটি ভালো পারফর্ম করছে তার উপর নির্ভর করে এটি করা হয়।

    LayoutNode ও View-এর মতো কিছু ট্রি, টপ-ডাউন পদ্ধতির তুলনায় বটম-আপ পদ্ধতিতে অনেক বেশি দক্ষতার সাথে তৈরি করা যায়। এই পরিবর্তনের আগে, বটম-আপ প্রয়োগ করার জন্য ইনসার্ট স্ট্যাকের প্রয়োজন ছিল, যা প্রতিটি অ্যাপ্লায়ারে কপি করতে হত এবং পারফর্ম্যান্সের জন্য বটম-আপ কনস্ট্রাকশনের প্রয়োজন ছিল। এই পরিবর্তনের ফলে, Applier নিচ থেকে উপরে ট্রি তৈরি করতে insertBottomUp() এবং উপর থেকে নিচে ট্রি তৈরি করতে insertTopDown() ওভাররাইড করে। (Icbdc2)

  • AndroidDialogProperties-এ dismissOnBackPress ও dismissOnClickOutside প্রপার্টি যোগ করা হয়েছে। এগুলি ডায়ালগের onDismissRequest ল্যাম্বডা কখন ইনভোক করা হবে তা কনফিগার করার অনুমতি দেয়। (If5e17)

  • রাস্টারাইজড অ্যাসেট ফর্ম্যাট (যেমন PNG) বা VectorDrawables থেকে অস্বচ্ছভাবে লোড করা Painter অবজেক্ট ম্যানেজ করতে painterResource API যোগ করা হয়েছে। গ্রাহকদের আর আগে থেকে অ্যাসেটের ধরন নির্ধারণ করতে হবে না এবং Image composables বা painter modifiers-এ ব্যবহার করার জন্য Painter অবজেক্ট পেতে এই মেথড কল করতে পারবেন। (I2c703, b/173818471)

  • ডিসেন্ডেন্টদের semantics মুছে ফেলতে এবং নতুন semantics সেট করতে Modifier.clearAndSetSemantics যোগ করা হয়েছে। (I277ca)

  • DrawScope-এর সাথে থাকার জন্য ContentDrawScope-কে ui-graphics মডিউলে সরানো হয়েছে। (Iee043, b/173832789)

  • স্ট্রোক করা শেপে আলাদা আলাদা প্যাটার্ন দেওয়ার জন্য PathEffect গ্রাফিক্স API প্রকাশ করা হয়েছে। PathEffect-এর প্রত্যাশিত/বাস্তবিক প্রয়োগের পরিবর্তে NativePathEffect-এর বন্ধ করে দেওয়া ব্যবহার। (I5e976, b/171072166)

  • Compose-এ IdlingResource ইন্টারফেস যোগ করা হয়েছে, এটি হল Espresso-এর IdlingResource-এর Compose-এ কাজ করে এমন ভেরিয়েন্ট। ComposeTestRule (I433f3) ব্যবহার করে এগুলি রেজিস্টার ও আনরেজিস্টার করা যেতে পারে

  • ComposeIdlingResource থেকে গ্লোবাল (আন)রেজিস্ট্রেশন এবং ComposeIdlingResource-এ ক্লকের গ্লোবাল (আন)রেজিস্ট্রেশন সরানো হয়েছে (I32660)

সমস্যার সমাধান

  • অফসেট মডিফায়ারে ল্যাম্বডা এখন Float-এর পরিবর্তে IntOffset রিটার্ন করে। (Ic9ee5, b/174137212, b/174146755)
  • পাবলিক API থেকে SlotTable, SlotReader এবং SlotWriter সরানো হয়েছে। এগুলি আগে InternalComposeAPI হিসেবে চিহ্নিত করা হয়েছিল। এখন সেগুলি কম্পোজ মডিউলের অভ্যন্তরীণ।

    কম্পোজিশন সংক্রান্ত তথ্য এক্সট্র্যাক্ট করার জন্য ui-tooling API-এর পরিবর্তে CompositionData ও CompositionGroup যোগ করা হয়েছে। এগুলি সর্বজনীন হলেও ui-tooling API-এর বাইরে ব্যবহারের জন্য উদ্দেশ্যপূর্ণ নয় কারণ এগুলি ui-tooling API-এর ব্যাখ্যা করা কাঁচা তথ্য প্রদান করে (I31a9c)

  • ShaderBrush রিফ্যাক্টর করা হয়েছে যাতে ড্রয়িং এনভায়রনমেন্টের সাইজিং সংক্রান্ত তথ্য উপলভ্য হলে, অলসভাবে শেডার ইনস্ট্যান্স তৈরি করা যায়। এটি এমন গ্রেডিয়েন্টকে সংজ্ঞায়িত করার জন্য উপযোগী যা কম্পোজিশন টাইমে কম্পোজ করার উপযুক্ত আইটেমের সম্পূর্ণ ড্রয়িং বাউন্ড দখল করে, কাস্টম DrawModifier ইমপ্লিমেন্টেশন ইমপ্লিমেন্ট করার প্রয়োজন হয় না।

    Gradient অবজেক্টে ফ্যাক্টরি পদ্ধতির পরিবর্তে পুরনো হয়ে যাওয়া গ্রেডিয়েন্ট ফাংশন কনস্ট্রাক্টর API। (I511fc, b/173066799)

  • LazyColumnFor, LazyRowFor, LazyColumnForIndexed এবং LazyRowForIndexed শীঘ্রই বন্ধ করা হবে। এর পরিবর্তে LazyColumn ও LazyRow ব্যবহার করুন (I5b48c)

  • সিস্টেমের আর কাজ করে না এমন BuildCompat.isAtLeastR (Idb37e)

  • AnnotatedString তৈরি করার জন্য buildAnnotatedString ফ্যাক্টরি ফাংশন যোগ করা হয়েছে। deprecated annotatedString builder function. (Idfe0b)

  • রেডিয়ানে মান কনভার্ট করার জন্য Float ও Double থেকে এক্সটেনশন পদ্ধতি সরিয়ে দেওয়া হয়েছে। এটি প্রয়োগকারী PathParser-এর মধ্যে একটি ব্যক্তিগত ফাংশন হিসেবে সরানো হয়েছে যেখানে এটি একমাত্র ব্যবহার করা হত (I25f52)

ভার্সন 1.0.0-alpha08

২ ডিসেম্বর, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha08 রিলিজ করা হয়েছে। 1.0.0-alpha08 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Add semantics action Dismiss (I2b706)
  • DrawModifier API-কে androidx.compose.ui প্যাকেজ থেকে androidx.compose.ui.draw প্যাকেজে সরানো হয়েছে। বন্ধ হয়ে যাওয়া API থেকে বর্তমান API-তে মাইগ্রেশনের ব্যাপারে সাহায্য করতে টাইপএলিয়াস/সহায়ক পদ্ধতি অন্তর্ভুক্ত করার জন্য DrawModifierDeprecated.kt ফাইল তৈরি করা হয়েছে। (Id6044, b/173834241)
  • Modifier.drawLayer-এর নাম পরিবর্তন করে Modifier.graphicsLayer করা হয়েছে এছাড়াও, API ফিডব্যাক অনুযায়ী সম্পর্কিত ক্লাসকে GraphicsLayer-এ আপডেট করা হয়েছে। (I0bd29, b/173834241)
  • নতুন পদ্ধতি placeable.placeWithLayer() এবং placeable.placeRelativeWithLayer() যোগ করা হয়েছে যা কাস্টম লেআউট এবং লেআউট মডিফায়ারকে তাদের ড্রয়িংয়ের জন্য গ্রাফিক্স লেয়ার যোগ করার মাধ্যমে চাইল্ড প্লেস করতে দেয়। এর ফলে আমরা প্রথমে রিড্রয়িং অপ্টিমাইজ করতে পারি, তাই কোনও চাইল্ডকে সরাতে হলে আমাদের তার কন্টেন্ট রিড্রয় করতে হয় না, দ্বিতীয়ত আমরা কোনও চাইল্ডের জন্য ড্র ট্রান্সফর্মেশন প্রয়োগ করতে পারি (Ibd8f6, b/170296989, b/171493718, b/173030831)
  • SubcomposeLayout ঘোষণা থেকে <T> সরিয়ে দেওয়া হয়েছে। আপনি এখন কোনও ধরন উল্লেখ না করেই এটি ব্যবহার করতে পারবেন। (Ib60c8)
  • drawLayer-এর সুবিধার জন্য Modifier.scale/rotate API যোগ করা হয়েছে।
    • Modifier.drawOpacity-এর নাম পরিবর্তন করে Modifier.alpha করা হয়েছে
    • Modifier.drawShadow-এর নাম পরিবর্তন করে Modifier.shadow করা হয়েছে (I264ca, b/173208140)
  • PointerInputData-এর আপটাইম ও পজিশন ফিল্ডকে নন-নাল করা হয়েছে। (Id468a)
  • MaterialTheme এখন বেছে নেওয়ার হ্যান্ডেল ও বেছে নেওয়ার ব্যাকগ্রাউন্ডের জন্য সঠিক রঙ সেট করে। বেছে নেওয়ার জন্য ব্যবহৃত রঙ কাস্টমাইজ করতে, নন-ম্যাটেরিয়াল অ্যাপ ম্যানুয়ালি AmbientTextSelectionColors ব্যবহার করতে পারে। (I1e6f4, b/139320372, b/139320907)
  • হোস্ট উইন্ডো ফোকাসে আছে কিনা তা চেক করার জন্য WindowManager.isWindowFocused যোগ করা হয়েছে এবং WindowFocusObserver যা onWindowFocusChanged কলব্যাক প্রদান করে। (I53b2a, b/170932874)
  • pivotFractionX এবং pivotFractionY-কে component1 এবং component2 হিসেবে রিটার্ন করার জন্য ডিস্ট্রাকচারিং সিনট্যাক্স সহ আপডেট করা TransformOrigin API (If43c4, b/173586560)
  • Compose নির্দেশিকা অনুযায়ী সামঞ্জস্য আছে কিনা তা চেক করতে, কম্পোজ করা যায় এমন ল্যাম্বডা প্যারামিটারের নাম ও পজিশনের জন্য লিন্ট চেক যোগ করা হয়েছে। এছাড়াও, লিন্ট চেক ও নির্দেশিকা অনুযায়ী, কিছু API-এর ট্রেলিং ল্যাম্বডার নাম children থেকে content-এ মাইগ্রেট করা হয়েছে। (Iec48e)
  • Alt, Ctrl, Meta বা Shift মডিফায়ার কী প্রেস করা হয়েছে কিনা তা চেক করার জন্য API যোগ করা হয়েছে, যখন একটি 'কীইভেন্ট' ডিসপ্যাচ করা হয়েছে। (I50ed9)
  • নতুন Modifier.drawLayer() ওভারলোড যোগ করা হয়েছে। এটি নতুন GraphicsLayerScope-এ একটি ল্যাম্বডা ব্লক নেয় যেখানে আপনি লেয়ারের প্যারামিটার এমনভাবে ডিফাইন করেন যা স্টেট পরিবর্তন হলে রিকম্পোজিশন ও রিলেআউট এড়িয়ে যেতে দেয়। DrawLayerModifier এখন ইন্টার্নাল, এর লজিক LayoutModifier-এর placeable.placeWithLayer() পদ্ধতিতে (I15e9f, b/173030831) মাইগ্রেট করার প্রস্তুতি চলছে
  • Ambient নামের সাফিক্স সহ পুরনো হয়ে যাওয়া অ্যাম্বিয়েন্ট সরিয়ে দেওয়া হয়েছে এবং সেগুলির জায়গায় Ambient প্রিফিক্স সহ নতুন প্রপার্টি যোগ করা হয়েছে। এটি অন্যান্য অ্যাম্বিয়েন্ট ও Compose API নির্দেশিকা মেনে করা হয়েছে। (I33440)
  • androidx.compose.ui.text.Typeface-কে androidx.compose.ui.text.font.Typeface-এ সরানো হয়েছে (Ic2b81)
  • semantics আর্গুমেন্ট mergeAllDescendants-এর নাম পরিবর্তন করে mergeDescendants করা হয়েছে। (Ib6250)
  • নতুন ড্র্যাগ জেসচার ডিটেক্টর সাসপেন্ডিং পয়েন্টার ইনপুট API, যার মধ্যে ওরিয়েন্টেশন লকিং অন্তর্ভুক্ত। (Icef25)
  • VectorAsset-এর নাম পরিবর্তন করে ImageVector করা হয়েছে এবং VectorAsset-এর নাম পরিবর্তন করে Builder করা হয়েছে। এটি API নির্দেশিকা অনুযায়ী ImageVector-এর একটি ইন্টার্নাল ক্লাস। কম্প্যাটিবিলিটির জন্য ImageVector.Builder-এর সাথে লিঙ্ক করতে VectorAssetBuilder-এর typealias যোগ করা হয়েছে। (Icfdc8)
  • ImageBitmap-এ ImageAsset ও সম্পর্কিত পদ্ধতিগুলির নাম পরিবর্তন করা হয়েছে। (Ia2d99)
  • PlacementScope-এর place()-এর জন্য zIndex প্যারামিটার যোগ করুন যাতে Modifier.zIndex() এখন LayoutModifier হিসেবে কাজ করে এবং যেকোনও কাস্টম লেআউট প্লেসমেন্ট ব্লকে (I711f7, b/171493718) তার চিলড্রেনের জন্য zIndexes সেট করতে পারে
  • ui-তে ফাউন্ডেশন সিম্যান্টিক্স প্রপার্টি সরানো হয়েছে (I6f05c)
  • place(Offset) ও placeRelative(Offset) বাতিল করুন। এর পরিবর্তে int অফসেট সহ ওভারলোড ব্যবহার করুন (I4c5e7)
  • আগে বন্ধ হয়ে যাওয়া API সরিয়ে দেওয়া হয়েছে: Modifier.onPositioned সরিয়ে দেওয়া হয়েছে, Modifier.onGloballyPositioned ব্যবহার করুন। Modifier.onDraw সরিয়ে দেওয়া হয়েছে, Modifier.onDrawBehind ব্যবহার করুন। Modifier.plus সরিয়ে দেওয়া হয়েছে, Modifier.then ব্যবহার করুন। Color.Unset সরিয়ে দেওয়া হয়েছে, Color.Unspecified ব্যবহার করুন। PxBounds ক্লাস সরিয়ে দেওয়া হয়েছে, এর পরিবর্তে Rect ব্যবহার করুন। (Ie9d02, b/172562222)
  • অ্যালাইনমেন্ট ইন্টারফেস আপডেট করা হয়েছে এবং এটি এখন কাজ করছে। (I46a07, b/172311734)
  • নতুন সাসপেন্ডিং পয়েন্টার ইনপুট ব্যবহার করে ট্যাপ, ডবল ট্যাপ, লং প্রেস ও প্রেস ইন্ডিকেশনের জন্য জেসচার ডিটেক্টর যোগ করা হয়েছে। এছাড়াও, কিছু ইউটিলিটি যোগ করা হয়েছে, যা ডেভেলপারদের জন্য তাদের নিজস্ব জেসচার ডিটেক্টর লেখা আরও সহজ করে তোলে। (I00807)
  • LayoutIdParentData-এর জন্য id-এর নাম পরিবর্তন করে layoutId করা হয়েছে। Measurable.id-এর নাম পরিবর্তন করে Measurable.layoutId করা হয়েছে। (Iadbcb, b/172449643)
  • নতুন মাল্টিটাচ জেসচার ডিটেক্টর, যার মধ্যে রোটেট, জুম ও প্যান করার জন্য হেল্পার অন্তর্ভুক্ত। (Ic459d)
  • SweepGradientShader এবং SweepGradientBrush API চালু করা হয়েছে। (Ia22c1)
  • টেস্টে টাইম কন্ট্রোল (TestAnimationClock ও এর ব্যবহার) এখন পরীক্ষামূলক (I6ef86, b/171378521)
  • করুটিন-ভিত্তিক স্ক্রল করার API যোগ করুন:

    LazyListState.snapToItem এবং LazyListState.smoothScrollBy যোগ করে, সেইসাথে স্ক্রল কন্ট্রোলের জন্য লোয়ার-লেভেল API যোগ করে। এইসব API স্ক্রলিং কন্ট্রোল করার জন্য একটি সাসপেন্ড ইন্টারফেস প্রদান করে যা স্ক্রল শেষ না হওয়া পর্যন্ত অপেক্ষা করে তারপর রিটার্ন করে। (Ie5642)

  • Modifier.focusable-এ ফাউন্ডেশনে যোগ করার প্রয়োজন আছে। সঠিক শব্দার্থ ও অ্যাক্সেসিবিলিটি সহ কোনও কম্পোনেন্টে ফোকাস করার মতো আচরণ যোগ করতে এটি ব্যবহার করুন। (I41eb9, b/152525426, b/162865824)

  • clock (I7ea3d, b/173399709)

  • AndroidComposeTestRule এখন কাস্টম অ্যাক্টিভিটি লঞ্চার (Ib8288, b/153623653, b/154135019) গ্রহণ করতে পারে

  • TextLayoutResult.getLineVisibleEnd বন্ধ করা হয়েছে। পরিবর্ত হিসেবে, TextLayoutResult.getLineEnd-এ এখন একটি নতুন প্যারামিটার visibleEnd আছে। (I73282)

  • TextFieldValue API আপডেট করা হয়েছে

    • TextFieldValue.composition রিড-অনলি করা হয়েছে
    • ভুল বেছে নেওয়ার রেঞ্জের জন্য সরানো ব্যতিক্রম (I4a675, b/172239032)
  • টেক্সট-টু-স্পিচ ইঞ্জিনের জন্য TtsAnnotation কাজ করে। (I54cc6)

  • করুটিনে অ্যানিমেশন চালানোর জন্য নতুন API (Ied662)

সমস্যার সমাধান

  • Box-এর অ্যালাইনমেন্ট প্যারামিটারের নাম পরিবর্তন করে contentAlignment রাখা হয়েছে। (I2c957)
  • offsetPx মডিফায়ারগুলির নাম পরিবর্তন করে offset করা হয়েছে। এগুলি এখন State-এর পরিবর্তে ল্যাম্বডা প্যারামিটার নিচ্ছে। (Ic3021, b/173594846)
  • TextInputService#onStateUpdated-এ resetInput প্যারামিটার যোগ করা হয়েছে (I3e8f5, b/172239032, b/171860947)
  • Composable ফাংশনে মডিফায়ার প্যারামিটারের জন্য লিন্ট চেক যোগ করা হয়েছে। এই লিন্ট চেক, Compose নির্দেশিকা অনুযায়ী নামের ধরন, রিটার্ন টাইপ, ডিফল্ট ভ্যালু এবং প্যারামিটারের ক্রম চেক করে। (If493b)
  • TestAnimationClock-কে MonotonicFrameClock (I1403b, b/173402197) দ্বারা পরিচালিত হতে দেওয়ার জন্য সাময়িকভাবে যোগ করা বিকল্প
  • Android Typeface র‍্যাপার যোগ করা হয়েছে। আপনি typeface ফাংশনের মাধ্যমে Android Typeface লোড করতে পারবেন, যেমন typeface(Typeface.DEFAULT)। এছাড়াও, typefaceFromFontFamily()-এর নাম পরিবর্তন করে typeface() (I52ab7) করা হয়েছে
  • মডিফায়ার ফ্যাক্টরি ফাংশনগুলি মডিফায়ারের এক্সটেনশন হিসেবে ডিফাইন করা হয়েছে কিনা তা চেক করার জন্য লিন্ট চেক যোগ করা হয়েছে, যাতে সেগুলি সাবলীলভাবে একসাথে চেইন করা যায়। (I07981)
  • পুরনো ui-test মডিউল ও এর স্টাব (I3a7cb) সরিয়ে দিন
  • Recomposer আর EmbeddingContext গ্রহণ করে না; প্রয়োজনীয় শিডিউলিং সংক্রান্ত নির্ভরতা effectCoroutineContext থেকে পাওয়া যায়। FrameManager আর ব্যবহার করা হয় না; প্ল্যাটফর্ম ইন্টিগ্রেশনকে নিজস্ব গ্লোবাল স্ন্যাপশট হ্যান্ডলিং ইনিশিয়ালাইজ করতে হবে। (I02369)
  • অ্যাক্সেসিবিলিটি নোডে স্টাইল সংক্রান্ত তথ্য পাস করা। (If5e8d)
  • অন্যান্য ইউনিটের সাথে সামঞ্জস্য বজায় রাখতে TextUnit.Inherit-এর নাম পরিবর্তন করে TextUnit.Unspecified করা হয়েছে। (Ifce19)

Compose UI ভার্সন 1.0.0-alpha07

১১ নভেম্বর ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha07 রিলিজ করা হয়েছে। 1.0.0-alpha07 ভার্সনে এইসব কমিট আছে।

API-তে পরিবর্তন

  • নন-ইউনিফর্ম স্কেলিং ব্যবহারের ক্ষেত্রে সহায়তা করার জন্য হরাইজন্টাল ও ভার্টিকাল অক্ষের জন্য স্কেল ফ্যাক্টরকে আলাদা আলাদাভাবে দেখানোর জন্য inline class ScaleFactor যোগ করা হয়েছে।
    • ContentScale-এ computeScaleFactor মেথড যোগ করা হয়েছে
    • গন্তব্য সম্পূর্ণভাবে পূরণ করার জন্য src bounds-কে স্ট্রেচ করতে অসম স্কেলিং পারফর্ম করার জন্য ContentScale.FillBounds যোগ করা হয়েছে।
    • Size প্যারামিটারের সাথে ScaleFactor প্যারামিটার গণনা করতে অপারেটর পদ্ধতি যোগ করা হয়েছে।
    • (Ic96a6, b/172291582)
  • অ্যালাইনমেন্ট তৈরি করার জন্য BiasAlignment ও BiasAbsoluteAlignment ফ্যাক্টরি যোগ করা হয়েছে। (Iac836, b/169406772)
  • কোনও ডেভেলপারকে জোর করে ফোকাস সরিয়ে দেওয়ার অনুমতি দিন। (I90372)
  • Compose-এর মধ্যে ভিউয়ের জন্য এলিভেশন ড্র না করার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। (If7782)
  • Modifier.drawBehind-এর সাথে নামের কনভেনশন ম্যাচ করাতে ContentDrawScope -এর মধ্যে onDrawBehind API তৈরি করা হয়েছে। (I4fc3a, b/171955269)
  • লেয়ার API-তে 3D ট্রান্সফর্মেশন rotationX/rotationY-কে পরিপূরক করতে ক্যামেরা ডিস্ট্যান্সের জন্য সহায়তা যোগ করুন। (I40213, b/171492100)
  • কলব্যাক ছাড়া Added SelectionContainer (Ibfadb)
  • ExperimentalSubcomposeLayoutApi অ্যানোটেশন সরিয়ে দেওয়া হয়েছে। SubcomposeLayout এখন @OptIn যোগ না করেই ব্যবহার করা যাবে (I708ad)
  • FirstBaseline ও LastBaseline androidx.compose.ui.layout প্যাকেজে সরানো হয়েছে (Ied2e7)
  • drawShadow() মডিফায়ার থেকে অস্বচ্ছতা সরিয়ে দেওয়া হয়েছে, কারণ এটি বিভ্রান্তিকর ছিল। (I82c62, b/171624638)
  • MeasureResult-কে MeasureScope-এর বাইরে সরানো হয়েছে। (Ibf96d, b/171184002)
  • লেআউট সম্পর্কিত একাধিক চিহ্ন androidx.compose.ui থেকে androidx.compose.layout.ui-তে সরানো হয়েছে। (I0fa98, b/170475424)
  • পুরনো হয়ে যাওয়া FocusState2 সরানো হয়েছে (I686cb, b/168686446)
  • ZIndexModifier এখন ইন্টার্নাল (I1808b, b/171493718)
  • অপ্রয়োজনীয় বক্সিং এড়াতে Size প্যারামিটারে lerp মেথডের আপডেট করা রিটার্ন টাইপ নন-নাল Size রিটার্ন করে। (Ib0044)
  • যে কোড কম্পোজের MonotonicFrameClock-এর উপর নির্ভর করে, সেটির জন্য TestMonotonicFrameClock যোগ করা হয়েছে। এর মাধ্যমে kotlinx-coroutines-test-এর runBlockingTest ব্যবহার করে কম্পোজিশন ফ্রেম ইভেন্টের জন্য অপেক্ষা করা হয় (I4402f)
  • GestureScope.localToGlobal সরানো হয়েছে (I15299, b/171462785)
  • onAllNodesWithSubstring ফাইন্ডার যোগ করা হয়েছে (I81dd7, b/171462889)
  • androidx.ui.test মডিউল বন্ধ করা হয়েছে। androidx.compose.ui.test এবং androidx.compose.ui.test.junit4-এ মাইগ্রেট করুন (I452e8)

সমস্যার সমাধান

  • captureToBitmap, captureToImage-এ সরানো হয়েছে। (I86385)
  • foundation.Text আর ব্যবহার করা হয় না এবং এর পরিবর্তে material.Text ব্যবহার করা হয়। কোনও থিম থেকে ভ্যালু গ্রহণ করে না এমন সাধারণ, নিরপেক্ষ টেক্সট API-এর জন্য androidx.compose.foundation.BasicText দেখুন। (If64cb)
  • KeyboardOptions গ্রহণ করার জন্য TextField আপডেট করুন (Ida7f3)
  • KeyboardOptions-এর নাম পরিবর্তন করে ImeOptions করুন (I82f36)
  • KeyboardOptions-এ KeyboardType ও ImeAction সরানো হয়েছে (I910ce)
  • অ্যাম্বিয়েন্ট ভ্যালু দেওয়ার বিকল্প হিসেবে provideDefault যোগ করা হয়েছে এবং আগে কোনও অ্যাম্বিয়েন্ট ভ্যালু দেওয়া না থাকলে, শুধুমাত্র তখনই সেট করা হবে এমন অ্যাম্বিয়েন্ট ভ্যালু নির্দিষ্ট করতে এটি ব্যবহার করা যেতে পারে। (Id6635, b/171024925)
  • BaseTextField বন্ধ করা হয়েছে। এর পরিবর্তে BasicTextField ব্যবহার করুন। (I896eb)
  • ui-test-junit4 মডিউল যোগ করা হয়েছে (Ib91f8)
  • relativePaddingFrom-এর নাম পরিবর্তন করে paddingFrom করা হয়েছে। লেআউট বাউন্ড থেকে টেক্সট বেসলাইন পর্যন্ত দূরত্ব নির্দিষ্ট করার সুবিধার জন্য paddingFromBaseline মডিফায়ার যোগ করা হয়েছে। (I0440a, b/170633813)
  • SideEffect এবং DisposableEffect API-এর সাথে সামঞ্জস্য বজায় রাখতে LaunchedTask-এর নাম পরিবর্তন করে LaunchedEffect করা হয়েছে। পেশাদার পদ্ধতিকে উৎসাহিত করতে, কোনও সাবজেক্ট প্যারামিটার ছাড়া LaunchedEffect ব্যবহার করার অনুমতি দেওয়া হয় না। (Ifd3d4)
  • কনফিগারেশন আপডেট হলে আবার কম্পোজ করার জন্য কম্পোজ করা যায় এমন রিসোর্স চালু করা হয়েছে। (I6387c, b/167352819)
  • Recomposer-কে এখন কনস্ট্রাকশনের সময় CoroutineContext প্রয়োজন (Ic4610)
  • একাধিক Modifier.zIndex() প্রয়োগ করা হলে zIndex ভ্যালু যোগ করুন। আগে প্রথম জন জিততেন। (Ic514c, b/170623936)
  • ইন্টার্নাল SlotTable ইমপ্লিমেন্টেশনে পরিবর্তন করা হয়েছে যা পাবলিক API-কে প্রভাবিত করবে না। (If9828)
  • কীবোর্ডে অটোমেটিক সংশোধন করার IME বিকল্প যোগ করা হয়েছে (I57b8d)
  • androidx.ui.test androidx.compose.ui.test-এ সরানো হয়েছে (I9ffdb)
  • পাবলিক API থেকে KeyboardOptions.toImeOptions সরানো হয়েছে। (Ic2e45)

এক্সটার্নাল কন্ট্রিবিউশন

  • অভ্যন্তরীণ আর্টিফ্যাক্ট androidx.compose.ui:ui-text-android (Ib93fa) প্রকাশ করা বন্ধ করা হয়েছে

ভার্সন 1.0.0-alpha06

২৮ অক্টোবর, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha06 রিলিজ করা হয়েছে। 1.0.0-alpha06 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • Recomposer এখন একটি CompositionReference এবং একটি বৈধ কম্পোজিশন পেরেন্ট। এখন অনেক কম জায়গায় এক্সপ্লিসিট রিকম্পোজার প্রয়োজন হয়। (I4036f)
  • কম্পোজিশন জুড়ে ডেটা পারসিস্ট করার জন্য কম্পোজ করার উপযুক্ত API ইন্টার্নালি 'remember' ব্যবহার করে তা আরও ভালোভাবে বোঝাতে, rememberVectorPainter-এর পক্ষে VectorPainter-কে বাতিল করুন। (Ifda43)
  • ড্রয়িং কমান্ডের ক্রম পরিবর্তন করার ক্ষমতা প্রদান করার জন্য DrawScope-এর পরিবর্তে ContentDrawScope-কে রিসিভার স্কোপ হিসেবে এক্সপোজ করতে আপডেট করা Modifier.drawWithCache API। এটি ব্লেন্ডিং/টিন্টিং ব্যবহারের ক্ষেত্রে সহায়ক, যেখানে সংশ্লিষ্ট ব্লেন্ড মোড অ্যালগরিদম সঠিকভাবে প্রয়োগ করার জন্য কন্টেন্ট পিক্সেলকে প্রথমে রেন্ডার করতে হবে। (Ie7ec8)
  • SimpleContainer-কে PopupTestUtils.kt-তে সরান (I78c57)
  • ConsumedData আর ডেটা ক্লাস নয়। বিবরণের জন্য https://android-review.googlesource.com/c/platform/frameworks/support/+/1455219 দেখুন (I1737f)
  • Rtl হ্যান্ডেলের পজিশন ঠিক করুন। (I6e1e0)
  • DrawScope ও ContentDrawScope-কে রিফ্যাক্টর করে অ্যাবস্ট্রাক্ট ক্লাসের পরিবর্তে ইন্টারফেস করা হয়েছে
    • CanvasDrawScope-এর প্রয়োগ DrawScope তৈরি করা হয়েছে
    • CanvasScope-এর পরিবর্তে ব্যবহার করার জন্য DrawScope-এর রিফ্যাক্টর করা প্রয়োগ
    • DrawScope-এর জন্য নির্ভরতা র‍্যাপ করতে DrawContext তৈরি করা হয়েছে
    • DrawScope (I56f5e)-এ অবচিত পদ্ধতি সরানো হয়েছে
  • ব্রেকিং পরিবর্তন: PointerInputFilter.onPointerEvent(...) থেকে রিটার্ন ভ্যালু সরিয়ে দেওয়া হয়েছে, কারণ পয়েন্টার ইভেন্টে পরিবর্তন করা যায় এমন একমাত্র ভ্যালু হল কনজাম্পশন ডেটা। PointerInputFilter.onPointerEvent(...) থেকে ডেটা রিটার্ন করার পরিবর্তে, এখন আপনি শুধু পাস-ইন করা PointerEvents-এর কনজাম্পশন ডেটা মিউটেট করতে পারবেন। (I6acd0)
  • MeasureScope ও IntrinsicMeasureScope ইন্টারফেস হিসেবে তৈরি করা হয়েছে। (I1a087, b/170461665)
  • AlignmentLine-এর জন্য মার্জ ফাংশন লুকানো ছিল। (I9da1a, b/170612900, b/170611568)
  • কম্পোজ করা মডিফায়ারে পরিদর্শকের তথ্য নির্দিষ্ট করার ক্ষমতা যোগ করা হয়েছে (Idee08, b/163494569)
  • বেছে নেওয়ার মেনুতে 'সব বেছে নিন' বিকল্প যোগ করা হয়েছে (Ief02b)
  • ডকুমেন্টেশনের সাথে ম্যাচ করাতে DrawTransform.rotate-কে আপডেট করে সেন্টার পয়েন্টের ডিফল্ট পিভট প্যারামিটার নেওয়া হয়েছে।
    • অন্যান্য ট্রান্সফর্মেশন পদ্ধতির সাথে ম্যাচ করাতে, পিভট পয়েন্টের জন্য অফসেট ব্যবহার করতে আপডেট করা DrawScope.rotateRad।
    • সঞ্চালনের জন্য ফ্লোট গ্রহণ করে এমন অপ্রচলিত DrawScope.rotateRad ওভারলোড পিভটের x এবং y কোঅর্ডিনেট।
    • (Iffcbb, b/170434992)

সমস্যার সমাধান

  • androidx-এর জন্য MissingGetterMatchingBuilder-এর API লিন্ট চেক চালু করা আছে (I4bbea, b/138602561)
  • টেস্ট যোগ করুন। (I6b8ae)
  • ComposeTestRule-এ ট্রানজিশন চালু করুন; ComposeTestRule থেকে ব্লিঙ্ক করা কার্সর চালু করার বিকল্প সরান। (If0de3)
  • KeyboardCapitalization IME বিকল্প (I8ac38) যোগ করা হয়েছে
  • CoreTextField-এ সিঙ্গেল লাইন কীবোর্ড বিকল্প যোগ করা হয়েছে (I72e6d)
  • SimpleContainer-কে PopupTestUtils.kt-তে সরান (I65c3e)
  • Compose জুড়ে এটি কীভাবে ব্যবহার করা হয় তা আরও ভালভাবে প্রকাশ করতে Radius API-এর নাম পরিবর্তন করে CornerRadius করা হয়েছে। নেগেটিভ কোণার ব্যাসার্ধ শূন্যে ক্ল্যাম্প করা হয় তা বোঝাতে ডকুমেন্টেশন আপডেট করা হয়েছে। (I130c7, b/168762961)
  • ACTION_DOWN (I94c5a, b/170320973) ছাড়া সব অ্যাকশনের জন্য onTouchEvent-এর ক্ষেত্রে false রিটার্ন করে এমন চাইল্ড Android ভিউতে MotionEvents পাঠানো চালিয়ে যাওয়ার মাধ্যমে Android ইন্টার-অপারেশন উন্নত করা হয়েছে
  • Box-কে ইনলাইন ফাংশন হিসেবে তৈরি করা হয়েছে। (Ibce0c, b/155056091)

এক্সটার্নাল কন্ট্রিবিউশন

  • AnnotatedString.capitalize ও AnnotatedString.decapitalize-এর জন্য আলাদা আলাদা লোকেল কাজ করে (I4aa7f)

ভার্সন 1.0.0-alpha05

১৪ অক্টোবর, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha05 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha05-এ এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • পরিদর্শক সংক্রান্ত তথ্য নির্দিষ্ট করার জন্য DSL যোগ করুন (Ic9a22)
  • 'লংপ্রেস' বিকল্পটি টেক্সটে সরান। (Iff2bc)
  • এক্সপেরিমেন্টাল Modifier.pointerInput সাসপেন্ড করা ইনপুট মডিফায়ার (Ia77d2)
  • কপি/পেস্ট/কাট অ্যাক্সেসিবিলিটি অ্যাকশন যোগ করা হয়েছে (I6db4f)
  • AndroidOwner-এর পাবলিক কনস্ট্রাক্টর সরিয়ে দেওয়া হয়েছে (Iacaef)
  • পপ-আপ ও ডায়ালগ এখন প্যারেন্ট উইন্ডো থেকে FLAG_SECURE ইনহেরিট করে। এছাড়াও, এটি স্পষ্টভাবে কনফিগার করার বিকল্প যোগ করা হয়েছে (I64966, b/143778148, b/143778149)
  • ব্যবহার সংক্রান্ত ডেটা এখন পরিবর্তনযোগ্য। এছাড়াও এক্সটেনশন ফাংশনে কল করলে, যা কনজাম্পশন করে সেগুলি এখন আর নতুন PointerInputChange রিটার্ন করে না, তবে পরিবর্তে প্রদত্ত PointerInputChange-কে মিউট করে।

    PointerEvent ডেটা পরিবর্তনযোগ্য করে তোলার জন্য এটি ২-ধাপের প্রসেসের প্রথম ধাপ, যাতে ব্যবহারকারীর কোড অন্য পয়েন্টার ডেটা এডিট করতে না পারে। দ্বিতীয় ধাপ হল List<PointerInputChange> থেকে রিটার্ন PointerInputFilter.onPointerEvent(...) টাইপ সরিয়ে দেওয়া। (Id067e)

  • টেক্সট থেকে বেছে নেওয়ার বিকল্প বন্ধ করা এবং একটি ডেমো। (Ie7e97)

  • Made onGloballyPositioned an inline function (I15830)

  • OnPositionedModifier-এর নাম পরিবর্তন করে OnGloballyPositionedModifier এবং onPositioned()-এর নাম পরিবর্তন করে onGloballyPositioned() করা হয়েছে। (I587e8, b/169083903)

  • hasPendingMeasureOrLayout প্রপার্টিটি মালিকের সাথে যোগ করা হয়েছে, এটি বলে যে মালিকের কোনও লেআউট সংক্রান্ত কাজ বাকি আছে কিনা। (I3d9f8, b/169038599)

  • প্রোগ্রামাটিক উপায়ে ফোকাস মুছে দেওয়ার জন্য API যোগ করা হয়েছে (Ie1dc2, b/161487952)

  • PointerInputFilter.onPointerInput(...) সরানো হয়েছে। এর পরিবর্তে PointerInputFilter.onPointerEvent(...) ব্যবহার করা উচিত। (I6f04a)

  • সাইজে পরিবর্তন

    • Removed Size.getFlipped
    • Removed Size.rem
    • Removed Size.truncDiv (Ief44d, b/169790720)
  • ইনলাইন ক্লাসের জন্য স্ট্যান্ডার্ডাইজেশন অংশ হিসেবে, অন্যান্য ইনলাইন ক্লাসের (I97611, b/169797763) সাথে সামঞ্জস্য বজায় রাখতে Color.Unset-এর নাম পরিবর্তন করে Color.Unspecified করা হয়েছে

  • TextOverflow.None যোগ করা হয়েছে। ওভারফ্লো 'নেই' হলে, টেক্সট আর ওভারফ্লো ম্যানেজ করবে না এবং LayoutNode-কে এর আসল সাইজ জানাবে। (I175c9, b/158830170)

  • API-এর ধারাবাহিকতা বজায় রাখতে AnnotatedString.Builder.addStringAnnotation-এর মধ্যে থাকা স্কোপ প্যারামিটারের নাম পরিবর্তন করে ট্যাগ করা হয়েছে। (I7c8cb)

সমস্যার সমাধান

  • প্রতিটি স্ক্রল করার সময় সাবকম্পোজিশনে কম কাজ করার মাধ্যমে LazyColumn/Row-এর স্ক্রল করার পারফর্ম্যান্স উন্নত করা হয়। Composition ক্লাসে নতুন hasInvalidations() মেথড যোগ করা হয়েছে। Recomposer থেকে hasPendingChanges() মেথডের নাম পরিবর্তন করে hasInvalidations() করা হয়েছে (Ib2f32, b/168293643, b/167972292, b/165028371)
  • Size.Unspecified প্যারামিটার আপডেট করে Float.POSITIVE_INFINITY-এর পরিবর্তে Float.NaN করা হয়েছে। Size.Unspecified-এর পাশাপাশি অসীম নয় এমন সাইজের বিরুদ্ধেও চেক করার জন্য আপডেট করা Painter ইমপ্লিমেন্টেশন। (I95a7e)
  • কাস্টম লেআউটে place() কলের ক্রম এখন চিলড্রেনদের (Ibc9f6) ড্র করার ক্রম নির্ধারণ করে
  • অ্যাক্সেসিবিলিটির জন্য AnnotatedString থেকে SpannableString কনভার্সন কাজ করে। (Ief907)
  • সম্ভব হলে রিফ্লেকশন ব্যবহার এড়াতে, পুরানো প্ল্যাটফর্মে থাকা Android ক্লাসের জন্য স্টাব যোগ করা হয়েছে। (Ia1790)
  • সমস্যার সমাধান করা হয়েছে: সফ্টওয়্যার কীবোর্ড দেখানোর ফলে অ্যাপ ট্রান্সলেট করলে, পয়েন্টার ইনপুট কোঅর্ডিনেট ভুল হয়ে যেত। (Ic4cec, b/163077821)

ভার্সন 1.0.0-alpha04

১ অক্টোবর, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha04 রিলিজ করা হয়েছে। 1.0.0-alpha04 ভার্সনে এইসব কমিট রয়েছে।

API-তে পরিবর্তন

  • লেআউট ও ড্রয়িং অবজারভেশন স্কোপের মেয়াদ শেষ হয়ে গেলে সেগুলি সংগ্রহ করার অনুমতি দিতে OwnerScope যোগ করা হয়েছে। (Ic4cf8)
  • কন্টেন্ট লেআউট আবার পরিমাপ করা হলে এবং সাইজ পরিবর্তন করা হলে, কলব্যাক পাওয়ার জন্য OnRemeasuredModifier ও onSizeChanged() যোগ করা হয়েছে। (I657cf, b/154108792)
  • দীর্ঘক্ষণ ক্লিক করার অ্যাকশন যোগ করুন (I6281b, b/156468846)
  • FocusManager ব্যক্তিগত করা হয়েছে। (I7872f)
  • DrawModifier-এ ঐচ্ছিক প্রপার্টি যোগ করার পরিবর্তে একটি ডেডিকেটেড DrawCacheModifier ইমপ্লিমেন্টেশন তৈরি করার জন্য আপডেট করা ইমপ্লিমেন্টেশন।

    বিভিন্ন পদ্ধতির জন্য আপডেট করা ডকুমেন্টেশন (Ibd166)

  • অবজেক্ট তৈরি করা এড়াতে TextRange ইনলাইন করুন। (Id034b)

  • কাস্টম লেআউটের প্লেসমেন্ট ব্লক থেকে PlacementScope#parentWidth এবং PlacementScope#parentLayoutDirection আর পড়া যাবে না। (Icc1ae, b/168295623)

  • semantics প্রপার্টিতে AccessibilityScrollState যোগ করুন। (Ifeda9)

  • আকার/স্ট্যাটাস সংক্রান্ত তথ্যের উপর নির্ভর করে এমন ডিপেন্ডেন্সি কন্ডিশনালি রিক্রিয়েট করে এমন ড্রয়িং অবজেক্ট তৈরি করার সুবিধা দিতে Modifier.drawWithCache পরিচয় করানো হয়েছে (I376dc)

  • ParagraphConstraints সরিয়ে দেওয়া হয়েছে। প্রস্থ এখন সরাসরি প্যারাগ্রাফে পাস করা হয়। (Ica712)

সমস্যার সমাধান

  • অনেক গ্রাফিক্স API আপডেট করা হয়েছে
    • আপডেট করা স্কেল ও রোটেশন ট্রান্সফর্মেশন API, যা একটি সিঙ্গেল অফসেট প্যারামিটার ব্যবহার করে পিভট কোঅর্ডিনেটকে আলাদা আলাদা ফ্লোট প্যারামিটারের পরিবর্তে DrawScope ও DrawTransform-এ x/y কোঅর্ডিনেট হিসেবে দেখায়
    • Rect.expandToInclude এবং Rect.join মেথড সরিয়ে দেওয়া হয়েছে
    • উপবৃত্তাকার ছাড়াও ডিম্বাকার বলার জন্য ব্যাসার্ধ সংক্রান্ত ডকুমেন্টেশন আপডেট করা হয়েছে
    • ইনলাইন Radius ক্লাসের পাবলিক কনস্ট্রাক্টর সরাসরি কল করা যাবে না, তার পরিবর্তে Radius অবজেক্টকে সেটির ফাংশন কনস্ট্রাক্টরের মাধ্যমে ইনস্ট্যানশিয়েট করতে হবে তা বোঝাতে ডকুমেন্টেশন যোগ করা হয়েছে
    • topRight, bottomRight, bottomCenter, ইত্যাদির কোয়েরি করার জন্য RoundRect API সরিয়ে দেওয়া হয়েছে।
    • Rect.translate-এর পরিবর্তে Rect.shift ব্যবহার করা হয় না
    • RoundRect.grow ও Rect.shrink API সরিয়ে দেওয়া হয়েছে
    • RoundRect.outerRect-এর নাম পরিবর্তন করে Rect.boundingRect করা হয়েছে
    • Removed RoundRect.middleRect/tallMiddleRect/wideMiddleRect and Rect.isStadium methods
    • RoundRect.longestSide-এর নাম পরিবর্তন করে RoundRect.maxDimension করা হয়েছে
    • RoundRect.shortestSide-এর নাম পরিবর্তন করে RoundRect.minDimension করা হয়েছে
    • RoundRect.center-কে ফাংশনের পরিবর্তে প্রপার্টি হিসেবে পরিবর্তন করা হয়েছে
    • x/y ব্যাসার্ধের ভ্যালুর জন্য আলাদা প্যারামিটারের পরিবর্তে ব্যাসার্ধ প্রপার্টি ব্যবহার করার জন্য RoundRect কনস্ট্রাক্টর আপডেট করা হয়েছে
    • Size API সরিয়ে দেওয়া হয়েছে যা ধরে নিয়েছিল যে এটি একটি আয়তক্ষেত্র যার অরিজিন হল ০,০
    • Radius-এ ডেস্ট্রাক্টিং API যোগ করা হয়েছে
    • বিভিন্ন RoundRect এক্সটেনশন ফাংশন মাইগ্রেট করে পরিবর্তে প্রপার্টি করা হয়েছে
    • (I8f5c7, b/168762961)
  • foundation.Box আর ব্যবহার করা যাবে না। পরিবর্তে foundation.layout.Box ব্যবহার করুন। (Ie5950, b/167680279)
  • Stack-এর নাম পরিবর্তন করে Box করা হয়েছে। compose.foundation.layout-এ নতুন Box-এর জন্য আগে থেকে থাকা Box বাতিল করা হবে। নতুন বক্সের আচরণ হল, এতে একাধিক চাইল্ড থাকলে সেগুলিকে একটির উপরে একটি করে স্ট্যাক করা হয় - এটি আগের বক্সের থেকে আলাদা, আগের বক্সটি কলামের মতো আচরণ করত। (I94893, b/167680279)
  • Box decoration প্যারামিটার বন্ধ করে দেওয়া হয়েছে। আপনার বক্সে সজ্জা/প্যাডিং রাখতে চাইলে, পরিবর্তে মডিফায়ার ব্যবহার করুন (Modifier.background, Modifier.border, Modifier.padding) (Ibae92, b/167680279)
  • অনেক গ্রাফিক্স API আপডেট করা হয়েছে
    • স্কোপ করা ট্রান্সফর্মেশন পদ্ধতি সহ আপডেট করা DrawScope API, এটি বোঝাতে যে ট্রান্সফর্মেশন শুধুমাত্র কলব্যাকের মধ্যে প্রয়োগ করা হয় এবং কলব্যাক ইনভোক করার পরে সরিয়ে দেওয়া হয়
    • রাউন্ডেড রেক্ট্যাঙ্গেলের পরিবর্তে Path উল্লেখ করার জন্য clipPath ডকুমেন্টেশন আপডেট করা হয়েছে
    • clipPath-এ ডানদিকের প্যারামিটারের জন্য ডকুমেন্টেশনে নির্দিষ্ট স্পেসিং
    • DrawScope.drawCanvas-এর নাম পরিবর্তন করে drawIntoCanvas করা হয়েছে এবং সাইজ প্যারামিটার সরিয়ে দেওয়া হয়েছে
    • ইনসেট পদ্ধতিতে dx/dy প্যারামিটারের নাম পরিবর্তন করে হরাইজন্টাল ও ভার্টিক্যাল করা হয়েছে
    • ইনসেট ওভারলোড যোগ করা হয়েছে যা ৪টি বাউন্ডে একই ইনসেট ভ্যালু প্রদান করে
    • ইনসেট পদ্ধতি সম্পর্কে সরানো ডকুমেন্টেশন থেকে জানা যায় যে ইনসেট সব ৪টি দিকে প্রয়োগ করা হবে
    • Rect ক্লাসের জন্য আপডেট করা ডকুমেন্টেশন
    • kdoc স্টাইলের সাথে ম্যাচ করাতে Rect প্যারামিটার সম্পর্কিত কমেন্ট আপডেট করা হয়েছে
    • Rect.join ও Rect.expandToInclude সরানো হয়েছে
    • Rect.translate(offset)-এর জন্য ওভারলোড তৈরি করা হয়েছে এবং Rect.shift বাতিল করা হয়েছে
    • (If086a, b/167737376)
  • Annotated rootAnimationClockFactory, transitionsEnabled, blinkingCursorEnabled এবং textInputServiceFactory-কে @VisibleForTesting সহ ইন্টার্নাল API হিসেবে চিহ্নিত করুন এবং তাদের kdoc লুকান (I554eb, b/168308412)
  • ডিফল্ট বেছে নেওয়া বন্ধ করতে এবং অপ্রত্যাশিত আচরণ এড়াতে, সবচেয়ে উপরের SelectionContainer সরিয়ে দিন। এর পরিবর্তে বেছে নেওয়ার উপযুক্ত কন্টেন্টকে র‍্যাপ করার জন্য SelectionContainer ব্যবহার করা যেতে পারে। (I8dfe0, b/158459594)

ভার্সন 1.0.0-alpha03

১৬ সেপ্টেম্বর ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha03 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha03-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • 'ফরওয়ার্ড/ব্যাকওয়ার্ড স্ক্রল করা' সংক্রান্ত শব্দার্থের অ্যাকশন সরিয়ে দিন। AccessibilityRangeInfo-তে ধাপ যোগ করা হয়েছে। (Ia47b0)
  • Owner থেকে onInvalidate() সরানো হয়েছে -- OwnedLayer ইনভ্যালিডেশন ম্যানেজ করে। (Ica72b, b/162061312)
  • Size API-তে অফসেট প্যারামিটার ব্যবহার করে এমন অপারেটর পদ্ধতি সরিয়ে দেওয়া হয়েছে। এইসব অপারেশনের ফলাফল অস্পষ্ট এবং ফলাফলের ধরন এইসবের জন্য অপ্রত্যাশিত। যেমন, সাইজ - অফসেট রিটার্ন পার্থক্য সহ অফসেট বা সাইজের ফলাফল?

    এছাড়াও, Size ক্লাসে অপ্রচলিত পদ্ধতি সরিয়ে দেওয়া হয়েছে। (Iec902, b/166514214)

সমস্যার সমাধান

  • LazyColumn-এর আইটেম কখনও কখনও ভুলভাবে ড্র করা সংক্রান্ত সমস্যার সমাধান করা হয়েছে, এর ফলে কিছু ক্ষেত্রে ক্র্যাশও হচ্ছিল। (Ibcf17, b/163066980, b/165921895)
  • DpConstraints এবং এটি ব্যবহার করে এমন API-এর ব্যবহার বন্ধ করে দেওয়া হয়েছে। (I90cdb, b/167389835)
  • createAndroidComposeRule ও AndroidInputDispatcher-কে androidx.ui.test.android থেকে androidx.ui.test-এ সরানো হয়েছে (Idef08, b/164060572)
  • লেআউট API-তে অ্যালাইন বা অ্যালাইনমেন্টের সাথে সামঞ্জস্য রেখে গ্র্যাভিটি শব্দটির ব্যবহার ধারাবাহিকভাবে রিনেম করা হয়েছে। (I2421a, b/164077038)
  • ComposeTestRule-এ onNode ও অন্যান্য গ্লোবাল মেথড যোগ করা হয়েছে, কারণ বর্তমান গ্লোবাল মেথডগুলি আর ব্যবহার করা যাবে না। (Ieae36)

ভার্সন 1.0.0-alpha02

২ সেপ্টেম্বর, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha02 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha02-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • layoutnode-এর বাউন্ড পরিবর্তন হলে মালিককে জানানোর জন্য কলব্যাক সরান। (If654e, b/166106882)
  • evenOdd বা NonZero পাথ ফিল নিয়ম অনুযায়ী শেপের কাট-আউটকে সাপোর্ট করতে, ভেক্টর গ্রাফিক্স পাথে filltype প্যারামিটার যোগ করা হয়েছে। (I43dd2)
  • আপটাইম ও ভেলোসিটি এখন ইনলাইন ক্লাস (I48f4a)
  • সময়সীমা এখন একটি ইনলাইন ক্লাস (I565eb)
  • layoutnode-এর বাউন্ড পরিবর্তন হলে মালিককে জানানোর জন্য একটি কলব্যাক যোগ করুন। (Ic40b3)
  • অফসেট ও রেডিয়াস সহ Rect ফাংশন কনস্ট্রাক্টর যেখানে লেফট, রাইট, টপ, বটম অর্ডারে Rect তৈরি করত, সেখানে লেফট, টপ, রাইট, বটম অর্ডারে Rect তৈরি করার সমস্যা সমাধান করা হয়েছে।

    ফাংশন কনস্ট্রাক্টরের পক্ষে Rect-এ বাতিল করা কম্প্যানিয়ন পদ্ধতি সরানো হয়েছে।

    Rect.kt-তে পদ্ধতি যাচাই করার জন্য টেস্ট যোগ করা হয়েছে (I08460, b/165822356)

সমস্যার সমাধান

  • পরিবর্তনযোগ্য আয়তক্ষেত্র MutableRect যোগ করা হয়েছে। (I71bd2, b/160140398)
  • Matrix4-এর পরিবর্তে Matrix ব্যবহার করা হয়েছে। vectormath প্যাকেজের অন্যান্য সব অংশ সরিয়ে দেওয়া হয়েছে। (Ibd665, b/160140398)
  • কম্পোজেবল ফাংশনের কলিং কনভেনশন পরিবর্তিত হয়েছে। এটি বাইনারি ব্রেকিং পরিবর্তন। Compose কম্পাইলার প্লাগ-ইনের এই ভার্সনের সাথে কাজ করার জন্য সব লাইব্রেরি আবার কম্পাইল করতে হবে।

    এই পরিবর্তন সোর্স লেভেলে কোনও ব্রেকিং পরিবর্তন তৈরি করে না, কারণ পরিবর্তিত API হল কম্পাইলার API যেগুলিতে একটি স্পষ্ট অপ্ট-ইন আছে। (I7afd2, b/158123185)

  • PointerInputFilter-এ ডিসপ্যাচ করার সময় ক্র্যাশ হতে পারে এমন সমস্যার সমাধান করা হয়েছে। এর ফলে PointerInputFilter সিঙ্ক্রোনাসভাবে সরিয়ে দেওয়া হতে পারে। (I58f25)

ভার্সন 1.0.0-alpha01

২৬ আগস্ট, ২০২০

androidx.compose.ui:ui-*:1.0.0-alpha01 রিলিজ করা হয়েছে। ভার্সন 1.0.0-alpha01-এ এইসব কমিট আছে।

ভার্সন 0.1.0-dev

ভার্সন 0.1.0-dev17

১৯ আগস্ট, ২০২০

androidx.compose.ui:ui-*:0.1.0-dev17 রিলিজ করা হয়েছে। ভার্সন 0.1.0-dev17-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • emitView বন্ধ করে দেওয়া হয়েছে। Compose-এর মধ্যে ভিউ এমিট করার জন্য সম্ভব হলে AndroidView ব্যবহার করুন। মনে রাখবেন, কম্পোজিশন ট্রি-তে এগুলি লিফ না হলে, সরাসরি Views ও ViewGroups কম্পোজ করা ভবিষ্যতে কাজ করবে না। এই ক্ষেত্রে, AndroidView ব্যবহার করে এটি করা যেতে পারে। (I29b1e, b/163871221)
  • FocusState2 বাতিল করা হয়েছে এবং FocusState (Ia8b79, b/160822876, b/160923332) দিয়ে প্রতিস্থাপন করা হয়েছে
  • সিস্টেমের আর ব্যবহার করা হয় না এমন AndroidView ওভারলোড সরিয়ে দেওয়া হয়েছে। (I946b9, b/163802393)
  • কাস্টম এমিট এখন ঘোষণা করতে পারে যে এর এক বা একাধিক সেটার এমিট থেকে আলাদাভাবে এড়িয়ে যাওয়া ও আবার কম্পোজ করা যেতে পারে। (Ibbd13)
  • ভেক্টর ক্লাস পরিবর্তন করে আর ডেটা ক্লাস রাখা হয়নি, কারণ কম্পোজিশনের জন্য একই অবজেক্ট ইনস্ট্যান্স ব্যবহার করা হয়।

    VectorPainter -এর জন্য mutableStateOf ফ্ল্যাগ যোগ করা হয়েছে, যাতে ভেক্টরের কন্টেন্ট পরিবর্তন হলে কন্ডিশনাল ভিত্তিতে আবার আঁকা যায়।

    VectorComponent ইনস্ট্যান্সকে রিফ্যাক্টর করে VectorPainter-এর অংশ করা হয়েছে, কারণ এটি বিভিন্ন কম্পোজিশনে আবার ব্যবহার করা হয়।

    নাম ফিল্ড পরিবর্তনযোগ্য (Ieae45, b/151378808) করার জন্য GroupComponent ও PathComponent আপডেট করা হয়েছে

  • onChildPositioned ও OnChildPositionedModifier সরিয়ে দেওয়া হয়েছে। এর পরিবর্তে, ডেভেলপারদের চাইল্ড লেআউটে onPositioned এবং OnPositionedModifier ব্যবহার করা উচিত। (I4522e, b/162109766)

  • অফসেট ইনলাইন ক্লাস হয়ে গেছে (Iaec70)

  • SelectionContainer-এ মডিফায়ার প্যারামিটার যোগ করা হয়েছে (I4aada, b/161487952)

  • পুরনো হয়ে যাওয়া FocusModifier সরানো হয়েছে (I0b4ba, b/160922116, b/160821157, b/162441435, b/160822875, b/160921940)

  • SemanticsPropertyKey-এ mergePolicy ল্যাম্বডা যোগ করা হয়েছে। এটি mergeAllDescendants সিম্যান্টিক্স মার্জ করার জন্য কাস্টম নীতি নির্ধারণ করতে ব্যবহার করা যেতে পারে। ডিফল্ট নীতি হল, আগে থেকেই উপস্থিত থাকলে প্যারেন্ট ভ্যালু ব্যবহার করা, অন্যথায় চাইল্ড ভ্যালু ব্যবহার করা। (Iaf6c4, b/161979921)

  • Constraints এখন একটি ইনলাইন ক্লাস (I88736)

  • AndroidComposeView থেকে সাধারণ ফোকাস লজিক সরিয়ে FocusManager যোগ করা হয়েছে (I528ef, b/161487952, b/162206799)

  • আলফা রিলিজের জন্য আপডেট করা PointerEventPass নাম। (Ifda6f)

  • IntOffset এখন একটি ইনলাইন ক্লাস (Iac0bf)

  • IntSize এখন একটি ইনলাইন ক্লাস (I2bf42)

  • PlacementScope.placeAbsolute()-এর নাম পরিবর্তন করে PlacementScope.place() করা হয়েছে এবং আগের PlacementScope.place()-এর নাম পরিবর্তন করে PlacementScope.placeRelative() করা হয়েছে। এর ফলে, PlacementScope.place() পদ্ধতি আর বাঁদিক থেকে ডানদিকে কনটেক্সটে অটোমেটিক পজিশন মিরর করবে না। এটি করতে চাইলে, PlacementScope.placeRelative() ব্যবহার করুন। (I873ac, b/162916675)

  • AlertDialog এখন বোতামের জন্য FlowRow ব্যবহার করে (I00ec1, b/161809319, b/143682374)

  • কিছু টেস্ট ইউটিলিটি নন-পাবলিক করা হয়েছে কারণ সেগুলি যেখানে থাকার কথা সেখানে নেই। ভবিষ্যতে সর্বজনীন করা হবে। (I32ab1)

  • পয়েন্টার ইনপুট কোডের রিফ্যাক্টর করা অর্গানাইজেশন। (Ie3f45)

  • Rect-এর পরিবর্তে PxBounds ব্যবহার করা হয় না। rect সহ PxBounds-এর সব ব্যবহার আপডেট করা হয়েছে এবং মাইগ্রেশনে সহায়তা করার জন্য সঠিক deprecate/replace with অ্যানোটেশন যোগ করা হয়েছে। (I37038, b/162627058)

  • বাতিল হয়ে যাওয়া KeyEvent2 সরানো হয়েছে। এর পরিবর্তে KeyEvent ব্যবহার করুন। (Ied2d0, b/162097587)

  • KeyEvent-এ একটি ইউনিকোড প্রপার্টি আছে যা নির্দিষ্ট কী ও মেটা কী স্টেট কম্বিনেশন (If3afc) থেকে তৈরি হওয়া ইউনিকোড অক্ষর পেতে ব্যবহার করা যেতে পারে

  • DelayUp কাস্টম ইভেন্ট এবং সম্পর্কিত ক্লাসকে একটি অপ্ট-ইন API হিসেবে তৈরি করা হয়েছে কারণ এটি খুব সম্ভবত পরিবর্তিত হতে চলেছে। (I56d6f)

  • আর প্রয়োজন নেই এমন ২টি PointerEventPasses সরিয়ে দেওয়া হয়েছে। (I3dd9d)

  • Paragraph.paint-এ প্যারামিটার কালার, শ্যাডো ও TextDecoration যোগ করুন। অপ্রয়োজনীয় Paragraph রিক্রিয়েশন এড়াতে এই ফাংশনটি কাজে লাগে। (I81689)

সমস্যার সমাধান

  • TextField থেকে onFocusChanged কলব্যাক সরানো হয়েছে। এর পরিবর্তে Modifier.focusObserver ব্যবহার করুন। (I51089, b/161297615)
  • Modifier.drawBorder অবচিত করা হয়েছে। এর পরিবর্তে Modifier.border ব্যবহার করুন। BorderStroke (I4257d, b/158160576) দ্বারা বর্ডার ডেটা ক্লাস প্রতিস্থাপন করা হয়েছে
  • পুরনো হয়ে যাওয়া FrameManager কল সরানো হয়েছে।

    ইন্টার্নাল কম্পোজ API-তে পরিবর্তন করা হয়েছে যাতে mutableStateof() (I80ba6)-এর মতো স্টেট অবজেক্ট ট্র্যাক করার জন্য ওভারহেড কমানো যায়

  • VerticalScroller ও HorizontalScroller সরিয়ে দেওয়া হয়েছে। পরিবর্তে ScrollableColumn/Row ব্যবহার করুন। Modifier.drawBackground সরিয়ে দেওয়া হয়েছে। Modifier.background ব্যবহার করুন (I73b0d, b/163019183)

  • লুপের মধ্যে স্টেট সেভ করে এমন কিছু ব্যবহার করা হলে ক্র্যাশ হওয়ার সমস্যা সমাধান করা হয়েছে। এখন savedInstanceState()-এ একই কী থাকার অনুমতি দেওয়া হয়েছে, UiSavedStateRegistry-এর API এখন এই নতুন প্রয়োজনীয়তা অনুযায়ী অ্যাডজাস্ট করা হয়েছে (I4ab76, b/160042650, b/156853976, b/159026663, b/154920561)

  • state { ... } কম্পোজ করার উপযুক্ত এখন আর ব্যবহার করা হয় না, এর পরিবর্তে স্পষ্টতার জন্য remember { mutableStateOf(...) }-এ এক্সপ্লিসিট কল করা হয়। এটি স্টেট ম্যানেজমেন্টের জন্য সামগ্রিক API সারফেস ও কনসেপ্টের সংখ্যা কমিয়ে দেয় এবং ক্লাস প্রপার্টি ডেলিগেশনের জন্য by mutableStateOf() প্যাটার্নের সাথে ম্যাচ করে। (Ia5727)

  • RRect-এর নাম পরিবর্তন করে RoundRect করা হয়েছে যাতে কম্পোজের নামকরণের প্যাটার্নের সাথে আরও ভালোভাবে মানানসই হয় RRect-এর মতো একই ধরনের ফাংশন কনস্ট্রাক্টর তৈরি করা হয়েছে এবং RRect ফাংশন কনস্ট্রাক্টর (I5d325)-এর ব্যবহার বন্ধ করে দেওয়া হয়েছে

ভার্সন 0.1.0-dev16

৫ আগস্ট, ২০২০

androidx.compose.ui:ui-*:0.1.0-dev16 রিলিজ করা হয়েছে। ভার্সন 0.1.0-dev16-এ এইসব কমিট আছে।

API-তে পরিবর্তন

  • OnChildPositioned বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে চাইল্ডে OnPositioned ব্যবহার করুন। (I87f95, b/162109766)
  • setViewContent বন্ধ করা হয়েছে। এর পরিবর্তে setContent ব্যবহার করা উচিত। (I7e497, b/160335130)
  • ViewBinding-এর উপর ভিত্তি করে লেআউট রিসোর্স ইনফলেশন ও কম্পোজ করার জন্য AndroidViewBinding API যোগ করা হয়েছে। (I081c6)
  • KeyEvent2-এর পরিবর্তে KeyEvent ব্যবহার করা হয় (I2d770, b/162097585)
  • Alt হার্ডওয়্যার কী (I9036b)-এর জন্য সহায়তা যোগ করা হয়েছে
  • FocusManager বন্ধ করে দেওয়া হয়েছে। এর পরিবর্তে Modifier.focus(), Modifier.focusObserver() এবং Modifier.focusRequester() ব্যবহার করুন। (I74ae4, b/162211322)
  • loadVectorResource trimPath অ্যাট্রিবিউট (I808fe) সাপোর্ট করে
  • ডায়ালগকে UI-তে সরান (I47fa6)
  • আর প্রয়োজন নেই এমন ২টি PointerEventPasses সরিয়ে দেওয়া হয়েছে। (I33ca7)
  • PointerInteropModifier প্রয়োগ করা হয়েছে যা MotionEvents গ্রহণ করা এবং Compose-এর সাথে ইন্টার‍্যাক্ট করার ক্ষমতা প্রদান করে, যেন আপনি Android View-এর প্রয়োগ করছেন। (Ieb08c)
  • পুরনো হয়ে যাওয়া ট্যাগ মডিফায়ার সরিয়ে দেওয়া হয়েছে। পরিবর্তে layoutId ব্যবহার করুন। (Idaa05, b/162023919)
  • ডান-থেকে-বামে কাজ করার জন্য API আপডেট করা হয়েছে। LayoutDirectionAmbient যোগ করা হয়েছে, যা লেআউটের দিকনির্দেশ পড়তে ও পরিবর্তন করতে ব্যবহার করা যেতে পারে। Modifier.rtl এবং Modifier.ltr সরিয়ে দেওয়া হয়েছে। (I080b3)
  • ভেক্টর গ্রাফিক্সের পাথ ট্রিমিং কাজ করে (Ie16c9, b/158188351)
  • Modifier.layout() যোগ করা হয়েছে যা সহজে কাস্টম লেআউট মডিফায়ার তৈরি করতে দেয় (I73b69, b/161355194)
  • নতুন AndroidView API যোগ করা হয়েছে এবং আগে থেকে থাকা API সরিয়ে দেওয়া হয়েছে। (I5bcfd)
  • Modifier.plus বন্ধ করা হয়েছে, এর পরিবর্তে Modifier.then ব্যবহার করুন। 'তারপর' শব্দটির মধ্যে ক্রম নির্দেশ করার একটি শক্তিশালী সিগন্যাল আছে, একই সাথে এটি Modifier.padding().background() + anotherModifier টাইপ করাও নিষিদ্ধ করে, যা চেইন ভেঙে দেয় এবং পড়তে অসুবিধা হয় (Iedd58, b/161529964)
  • ভিউ হায়ারার্কিতে Compose কন্টেন্ট হোস্ট করার জন্য [Abstract]ComposeView View সাবক্লাস যোগ করুন। (I46357)
  • Row ও Column এখন ইনলাইন ফাংশন হিসেবে কাজ করে এবং এর ফলে এগুলি ব্যবহার করার ওভারহেড অনেক কমে যায়। (I75c10)
  • SubcomposeLayout যোগ করা হয়েছে। এটি একটি লো লেভেল প্রিমিটিভ যা পরিমাপ করার সময় চাইল্ডদের কম্পোজ করতে দেয় যদি আমরা সাবট্রি কম্পোজিশনের জন্য পরিমাপ করার সময় পরে উপলভ্য হওয়া কিছু ভ্যালু ব্যবহার করতে চাই। যেমন, WithConstraints, SubcomposeLayout ব্যবহার করে প্রয়োগ করা হয় না। (I25cc8)
  • Compose হায়ারার্কির রুটের সাথে সম্পর্কিত SemanticsNode-এর পজিশন পেতে SemanticsNode.positionInRoot যোগ করা হয়েছে (Icdf26, b/161336532)
  • Android থেকে Compose-এ এবং সেখান থেকে আবার Android-এ MotionEvents সম্পূর্ণভাবে পাস করা হয়েছে। (I14be8, b/158034713)
  • dropdownPopup সরানো হয়েছে। (I00430)
  • কাট-আউট ডিসপ্লেতে পপ-আপের পজিশন ঠিক করা হয়েছে। (Idd7dd)
  • TextLayoutResult (I9d6e6) পেতে অ্যাক্সেসিবিলিটি অ্যাকশন যোগ করুন
  • RemeasurementModifier যোগ করা হয়েছে। এটি লেআউটকে সিঙ্ক্রোনাসভাবে আবার পরিমাপ করার অনুমতি দেয়। সাধারণত, রিমজার/রিলেআউট অটোমেটিক হওয়ার কারণে আপনার এটি প্রয়োজন হয় না, তবে স্ক্রল করার সময় আমরা LazyColumnItems-এর মধ্যে এটি ব্যবহার করি। (I5f331, b/160791058)
  • getLineEllipsisOffset/getLineEllipsisCount সরিয়ে দিন। এর পরিবর্তে getLineVisibleEnd/getLineEnd/isLineEllipsized ব্যবহার করুন। (I85aa2)
  • পেশাদার পদ্ধতি মেনে চলার জন্য কিছু মার্ক/অ্যানোটেশন যোগ করুন। (I66b20)
  • TextLayoutResult-এ আরও লাইন API এক্সপোজ করা হয়েছে। (I79bd2)
  • বিল্ট-ইন ইউনিট কনভার্ট করার জন্য বিল্ট-ইন ভেক্টর কনভার্টার এখন Foo.VectorConverter-এর মাধ্যমে অ্যাক্সেস করা যাবে। যেমন, Dp.VectorConverter, Color.VectorConverter, Float.VectorConverter, ইত্যাদি (I3e273)

সমস্যার সমাধান

  • ঠিকানা সংক্রান্ত API-তে হওয়া বড় ধরনের সমস্যা সমাধান (I077bc)
    1. ব্যবহার না করা OffsetBase ইন্টারফেস সরিয়ে দেওয়া
    2. অফসেট ও IntOffset ক্লাসগুলিকে সারিবদ্ধ করে একটি সামঞ্জস্যপূর্ণ API সারফেস তৈরি করুন
    3. Offset API-এর সাথে সামঞ্জস্য বজায় রাখতে IntOffset.Origin-এর নাম পরিবর্তন করে IntOffset.Zero করুন
    4. গ্রাহকদের নিজেদের Canvas ইনস্ট্যান্স তৈরি করতে সাহায্য করার জন্য Canvas ইন্টারফেস থেকে nativeCanvas পদ্ধতি সরানো হয়েছে
    5. refactor DrawScope-এর জন্য EmptyCanvas ক্লাস তৈরি করা হয়েছে যাতে এটি lateinit-এর পরিবর্তে নন-নাল প্যারামিটার হয় এবং ফিল্ডের নন-নাল হওয়ার বিষয়টি নিশ্চিত করা যায়
    6. ClipOp এনুমের নাম পরিবর্তন করে পাস্কেল কেস করা হয়েছে
    7. FilterQuality এনুমের নাম পরিবর্তন করে পাসকেল কেস করা হয়েছে
    8. StrokeJoin এনুমের নাম পরিবর্তন করে পাস্কেল কেস করা হয়েছে
    9. PointMode এনুমের নাম পরিবর্তন করে পাস্কেল কেস করা হয়েছে
    10. রিনেম করা PaintingStyle enum-কে পাস্কেল কেস করা হয়েছে
    11. PathFillType এনুমের নাম পরিবর্তন করে পাস্কেল কেস করা হয়েছে
    12. StrokeCap এনুমের নাম পরিবর্তন করে পাস্কেল কেস করা হয়েছে
    13. DrawCache-এর আপডেট করা প্রয়োগ আর lateinit প্যারামিটার ব্যবহার করে না
    14. fillPaint ও strokePaint ইন্টার্নাল প্যারামিটারের জন্য লেজি ডেলিগেশন আর ব্যবহার না করতে DrawScope আপডেট করা হয়েছে
    15. কম ওভারহেডের জন্য Box ব্যবহার এড়াতে আপডেট করা ইমেজ কম্পোজযোগ্য
    16. @Immutable অ্যানোটেশন সহ আপডেট করা আউটলাইন ক্লাস
    17. প্রতিটি পাথ নির্দেশাবলীর জন্য @Immutable অ্যানোটেশন সহ আপডেট করা PathNode
    18. কম্পোজ যেহেতু ইতিমধ্যেই এগুলি ম্যানেজ করে, তাই সমান কিনা তা চেক করার জন্য অপ্রয়োজনীয় কন্ডিশনাল চেক সরিয়ে দিতে আপডেট করা ভেক্টর সাবকম্পোজিশন
    19. ফাংশন কনস্ট্রাক্টরের পরিবর্তে বন্ধ করে দেওয়া Rect কম্প্যানিয়ন কনস্ট্রাক্টর পদ্ধতি
    20. @Immutable এবং @Stable API সহ আপডেট করা ব্রাশ ক্লাস এবং ফাংশন কনস্ট্রাক্টর
    21. VertexMode enum-কে PascalCase হিসেবে আপডেট করা হয়েছে
    22. পরিবর্তিত হলে, ড্রস্কোপের selectPaint পদ্ধতিটি কন্ডিশনালভাবে পেইন্টের স্ট্রোক প্যারামিটার ওভাররাইট করার জন্য আপডেট করা হয়েছে
    23. ডেস্ট্রাকচারিং API যোগ করতে সাইজ আপডেট করা হয়েছে, নাম পরিবর্তন করে UnspecifiedSize-এর নাম Unspecified করা হয়েছে এবং অব্যবহৃত পদ্ধতি সরিয়ে দেওয়া হয়েছে
  • API লেভেলের উপর নির্ভর করে Android ফ্রেমওয়ার্ক BlendModes ও PorterDuff মোডের মধ্যে সঠিকভাবে ম্যাপ করার জন্য আপডেট করা কম্পোজ BlendMode API কনজাম্পশন। BlendMode#isSupported API চালু করা হয়েছে যা BlendMode ডিভাইসে কাজ করে কিনা তা নির্ধারণ করতে ব্যবহার করা হয়। (I0ef42)
  • LazyItemScope, লেজি লিস্টের itemContent প্যারামিটারের জন্য যোগ করা হয়েছে। এটি প্যারেন্ট সর্বাধিক সাইজ পূরণ করার জন্য মডিফায়ার প্রদান করে, এর ফলে আইটেম ভিউপোর্ট পূরণ করার সময় ব্যবহার করা যায় এবং সাধারণ Modifier.fillMaxSize() কাজ করে না কারণ আইটেমটি অসীম সীমাবদ্ধতার সাথে পরিমাপ করা হয়। (Ibd3b2, b/162248854)
  • SemanticsNodeInteraction.performPartialGesture সরানো হয়েছে। এর পরিবর্তে SemanticsNodeInteraction.performGesture ব্যবহার করুন। (Id9b62)
  • LazyColumnItems-এর নাম পরিবর্তন করে LazyColumnFor করা হয়েছে। LazyRowItems-এর নাম পরিবর্তন করে LazyRowFor করা হয়েছে (I84f84)
  • foundation.shape.corner প্যাকেজটি ফ্ল্যাটেন করে foundation.share করা হয়েছে (I46491, b/161887429)
  • AndroidComposeTestRule-এর নাম পরিবর্তন করে createAndroidComposeRule করা হয়েছে। (I70aaf)
  • TextLayoutResult-এ আরও API যোগ করা হয়েছে। (Id7e04)
  • সবচেয়ে সহজ কাঙ্ক্ষিত API যাতে সহজে খুঁজে পাওয়া ও ব্যবহার করা যায় সেই জন্য Material FilledTextField-এর নাম পরিবর্তন করে TextField এবং foundational TextField-এর নাম পরিবর্তন করে BaseTextField রাখা হয়েছে (Ia6242, b/155482676)
  • Modifier.drawBackground-এর নাম পরিবর্তন করে Modifier.background করা হয়েছে (I13677)

ভার্সন 0.1.0-dev15

২২ জুলাই, ২০২০

androidx.compose.ui:ui-*:0.1.0-dev15 রিলিজ করা হয়েছে। 0.1.0-dev15 ভার্সনে এইসব কমিট আছে।

ডিপেন্ডেন্সি আপডেট

  • Compose-এর 0.1.0-dev15 ভার্সন ব্যবহার করতে, আপনাকে ডিপেন্ডেন্সি ঘোষণা করা বিভাগে উপরে দেখানো নতুন কোড স্নিপেট অনুযায়ী ডিপেন্ডেন্সি আপডেট করতে হবে।

API-তে পরিবর্তন

  • FocusModifier-এর পরিবর্তে Modifier.focus, Modifier.focusRequester, Modifier.focusObserver ব্যবহার করা হয়। FocusState2 (I46919, b/160822875, b/160922136)-এর পরিবর্তে FocusState ও FocusDetailedState আর ব্যবহার করা হয় না
  • ফোকাস স্টেট পরিবর্তন লক্ষ্য করার জন্য একটি মডিফায়ার যোগ করা হয়েছে। (I05866, b/160924455, b/160923326)
  • ফোকাস পরিবর্তন করার অনুরোধে একটি মডিফায়ার যোগ করা হয়েছে (I8dd73, b/161182057, b/160924778)
  • কপি, কাট ও পেস্ট বিকল্পগুলি সঠিকভাবে দেখাতে টুলবার মেনু অ্যাডজাস্ট করুন। (Id3955)
  • সিঙ্গেল-ভ্যালু সিম্যান্টিক প্রপার্টি এখন কলিং স্টাইল ব্যবহার করে। যেমন, 'semantics { hidden = true }' এখন এইভাবে লেখা হয়: semantics { hidden() }. (Ic1afd, b/145951226, b/145955412)
  • Modifier.focus যোগ করা হয়েছে যা FocusModifier-এর পরিবর্তে ব্যবহার করা হবে। (Ib852a, b/160924778)
  • TextField বেছে নেওয়ার জন্য FloatingToolbar যোগ করুন। (Ie8b07)
  • কী ইনপুট সম্পর্কিত API-এর জন্য একটি পরীক্ষামূলক API টীকা যোগ করা হয়েছে (I53c0a)
  • ফোকাস সম্পর্কিত সব API-এর জন্য একটি এক্সপেরিমেন্টাল API অ্যানোটেশন যোগ করা হয়েছে (I53b24, b/160903352)
  • FocusState2 যোগ করা হয়েছে যা FocusDetailedState-কে সরিয়ে দেবে (I0a3ba, b/160822595)
  • ExperimentalFocus যোগ করা হয়েছে, এটি Focus API-এর জন্য @OptIn অ্যানোটেশন। (I1544b, b/160820961)
  • IntBounds ইউনিট ক্লাস যোগ করা হয়েছে, যা লেআউট থেকে পূর্ণসংখ্যা পিক্সেল বাউন্ড দেখায়। এটি ব্যবহার করার জন্য PopupPositionProvider-এর API আপডেট করা হয়েছে। (I0d8d0, b/159596546)
  • কম্পোজিশন ডিসপোজ করার জন্য এখন অ্যাপ্লায়ারের clear() মেথড প্রয়োজন হয় (Ibe697)
  • KeyEvent বন্ধ করা হয়েছে এবং KeyEvent2 (I68730) দিয়ে প্রতিস্থাপন করা হয়েছে
  • টেস্ট ফাইন্ডারে একটি নতুন ঐচ্ছিক ফ্ল্যাগ useUnmergedTree যোগ করা হয়েছে। (I2ce48)
  • Made LayoutNode experimental API (I4f2e9)
  • বিভিন্ন ইনলাইন ক্লাস ধরনের জন্য কপি করার পদ্ধতি যোগ করা হয়েছে, এর মধ্যে রয়েছে:

    • অফসেট
    • আকার
    • ব্যাসার্ধ
    • মোশন
    • TransformOrigin

    • সাজেস্ট করা হয়েছে এমন Size.copy কম্প্যানিয়ন অবজেক্ট মেথড ইনস্ট্যান্স কপি মেথডের (Ife290, b/159905651) পরিবর্তে

  • পপ-আপ, ডায়ালগ ও মেনু এখন প্রাসঙ্গিক MaterialTheme (Ia3665, b/156527485) থেকে ইনহেরিট করছে

  • TextDirection-এর নাম পরিবর্তন করে ResolvedTextDirection রাখা হয়েছে (I3ff38)

  • Layout() ফাংশনের মেজার ব্লক থেকে লেআউট ডিরেকশন প্যারামিটার সরানো হয়েছে। তবে, লেআউট ডিরেকশন, মেজার স্কোপ অবজেক্টের (Ic7d9d) মাধ্যমে কলব্যাকের মধ্যে উপলভ্য

  • আবার ব্যবহার করার জন্য SelectionHandles রিফ্যাক্টর করুন। (I420e0)

  • ক্লিক করা যায় এমন অংশটি সরিয়ে দেওয়া হয়েছে। Modifier.clickable (I84bdf) ব্যবহার করুন

  • TestTag ও Semantics মুছে দেওয়া হয়েছে। এর পরিবর্তে Modifier.testTag ও Modifier.semantics ব্যবহার করুন (I15ff0, b/158841414)

  • এই পরিবর্তনের আগে, @Composable ফাংশনের মধ্যে কনস্ট্রাক্টরদের কাছে কল ইন্টারসেপ্ট করার জন্য কম্পোজ কম্পাইলার প্লাগ-ইন ব্যবহার করা হত, যদি সেখানে (I5205a, b/158123804) থাকে

  • Modifier.testTag-এর সাথে বিভ্রান্তি এড়াতে Modifier.tag-এর নাম পরিবর্তন করে Modifier.layoutId করা হয়েছে। (I995f0)

  • Placeable#get(AlignmentLine) থেকে রিটার্ন করা অ্যালাইনমেন্ট লাইন Int পজিশন এখন নন-নাল। কোয়েরি করা অ্যালাইনমেন্ট লাইন না থাকলে, AlignmentLine.Unspecified রিটার্ন করা হবে। (I896c5, b/158134875)

  • AndroidView কম্পোজ করার উপযুক্ত আইটেমে একটি মডিফায়ার প্যারামিটার যোগ করা হয়েছে। (I48a88, b/158746303)

  • Semantics() বন্ধ করা হয়েছে। এর পরিবর্তে Modifier.semantics() ব্যবহার করুন। (I72407, b/158841414)

  • viewModel() কম্পোজ করার উপযুক্ত আইটেম যোগ করুন যা Activity বা Fragment-এ যেভাবে কাজ করে সেই একই পদ্ধতিতে আগে থেকেই তৈরি করা ViewModel তৈরি করতে বা পেতে সাহায্য করে (I5fdd1)

  • IntPx-এর ব্যবহার Int-এর সাথে পরিবর্তন করা হয়েছে। IntPxPosition -এর ব্যবহার IntOffset-এর সাথে পরিবর্তন করা হয়েছে। IntPxSize-এর পরিবর্তে IntSize ব্যবহার করা হয়েছে। (Ib7b44)

  • সাইজিং সংক্রান্ত তথ্য দেখানোর জন্য ব্যবহৃত ক্লাসের সংখ্যাকে একত্রিত করতে, PxSize-এর পরিবর্তে Size ক্লাসের ব্যবহারকে স্ট্যান্ডার্ডাইজ করুন। এটি একটি ইনলাইন ক্লাসের সুবিধা প্রদান করে যা একটি বড় মানকে ব্যবহার করে ২টি ফ্লোট ভ্যালুকে প্যাক করে এবং ফ্লোট হিসেবে প্রস্থ ও উচ্চতাকে দেখায়। (Ic0191)

  • পজিশনিং সংক্রান্ত তথ্য দেখানোর জন্য ব্যবহৃত ক্লাসের সংখ্যাকে একত্রিত করতে, PxPosition-এর পরিবর্তে Offset ক্লাসের ব্যবহারকে স্ট্যান্ডার্ডাইজ করুন। এটি ইনলাইন ক্লাসের সুবিধা প্রদান করে যা x এবং y অফসেটকে ফ্লোট হিসেবে দেখানোর জন্য ২টি ফ্লোট ভ্যালুকে প্যাক করতে একটি লং ভ্যালুকে লিভারেজ করে। (I3ad98)

  • পিক্সেল প্যারামিটারের জন্য শুধুমাত্র Dp ও আদিম ধরনের উপর নির্ভর করার জন্য বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের ব্যবহার বড় রিফ্যাক্টরিং এফর্টের অংশ হিসেবে পরিবর্তন করা হয়েছে। সম্পূর্ণ Px ক্লাস মুছে দেওয়া হয়েছে (I3ff33)

  • পিক্সেল প্যারামিটারের জন্য শুধুমাত্র Dp ও আদিম ধরনের উপর নির্ভর করার জন্য বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের ব্যবহার পরিবর্তন করা হয়েছে। এটি একটি বড় রিফ্যাক্টরিং প্রচেষ্টার অংশ (I086f4)

  • বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের ব্যবহার পরিবর্তন করা হয়েছে। এর ফলে পিক্সেল প্যারামিটারের জন্য Dp ও আদিম ধরনের উপর নির্ভর করা যাবে। এটি একটি বড় রিফ্যাক্টরিং এফর্টের অংশ (Id3434)

  • পিক্সেল প্যারামিটারের জন্য (I97a5a) শুধুমাত্র Dp ও আদিম ধরনের উপর নির্ভর করার জন্য বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের পরিবর্তিত ব্যবহার করা হয়েছে। এটি একটি বড় রিফ্যাক্টরিং এফোর্ট।

  • TestTag এখন আর ব্যবহার করা যাবে না। এর পরিবর্তে Modifier.testTag ব্যবহার করুন। (If5110, b/157173105)

  • ParentDataModifier#modifyParentData-এর ডিফল্ট, নো-অপ, ইমপ্লিমেন্টেশন সরিয়ে দেওয়া হয়েছে - এটি প্রথম স্থানে ইন্টারফেস ইমপ্লিমেন্ট না করার সমতুল্য ছিল। (I0deaa)

  • আগে থেকেই ScaleFit-এর ব্যবহার বন্ধ করা হয়েছে এবং সেটি সরিয়ে দেওয়া হয়েছে। এর পরিবর্তে ContentScale ব্যবহার করুন। (Ifbc5b)

  • পিক্সেল প্যারামিটারের জন্য শুধুমাত্র Dp ও আদিম ধরনের উপর নির্ভর করার জন্য বড় রিফ্যাক্টরিং প্রচেষ্টার অংশ হিসেবে বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের পরিবর্তে অন্য কিছু ব্যবহার করা হয়েছে (I19d02)

  • ui-material-এ DropdownMenu কম্পোনেন্ট যোগ করা হয়েছে, এটি হল মেটেরিয়াল ডিজাইন মেনু ইমপ্লিমেন্টেশন। (I9bb3d)

  • পুরনো হয়ে যাওয়া LayoutTag() সরিয়ে দেওয়া হয়েছে, এর পরিবর্তে Modifier.tag() ব্যবহার করুন। পুরনো হয়ে যাওয়া Modifier.matchParent() সরিয়ে দেওয়া হয়েছে, এর পরিবর্তে Modifier.matchParentSize() ব্যবহার করুন। (If8044)

  • পিক্সেল প্যারামিটারের জন্য শুধুমাত্র Dp ও আদিম ধরনের উপর নির্ভর করার জন্য বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের পরিবর্তে বড় রিফ্যাক্টরিং এফর্টের অংশ হিসেবে ব্যবহার করা হয়েছে (I57bff)

  • উচ্চ-স্তরের কম্পোনেন্ট ব্যবহারের অনুমতি দিতে Modifier.semantics-কে আনডিপ্রিকেট করা হয়েছে। (I4cfdc)

  • CanvasScope-এর একত্রিত প্রয়োগ তাই এখন শুধু DrawScope এবং ContentDrawScope আছে CanvasScope-এর নাম পরিবর্তন করে DrawScope করা হয়েছে। Density ইন্টারফেস প্রয়োগ করতে DrawScope আপডেট করা হয়েছে এবং LayoutDirection প্রদান করা হয়েছে ContentDrawScope-এ DrawScope সাবক্লাস মুছে দেওয়া হয়েছে RTL প্রপার্টি আর নিজে থেকে ম্যানেজ না করার জন্য Painter ও PainterModifier আপডেট করা হয়েছে কারণ DrawScope এটি ম্যানুয়ালি প্রদান না করেই আগে থেকেই প্রদান করে (I1798e)

  • DoubleTapGestureFilter এখন ট্রি জুড়ে SingleTapGestureFilter-কে দ্ব্যর্থতা নিরসন করে। (If92b1)

  • আপডেট করা অ্যালাইনমেন্ট API এবং সম্পূর্ণ অ্যালাইনমেন্টের জন্য সহায়তা যোগ করা হয়েছে (যা RTL কনটেক্সটে অটো-মিরর করে না) (I38cd3)

  • DrawLayer মডিফায়ার API পরিবর্তন করা হয়েছে: outlineShape-এর নাম পরিবর্তন করে shape করা হয়েছে এবং এর ডিফল্ট ভ্যালু RectangleShape এবং এখন এটি নন-নাল; clipToOutline-এর নাম পরিবর্তন করে clip করা হয়েছে; clipToBounds সরিয়ে দেওয়া হয়েছে কারণ এটি RectangleShape-এর সাথে clip == true-এর মতো (I7ef11, b/155075735)

  • আপডেট করা উন্নত লেভেলের কম্পোজ API যা Canvas-কে এক্সপোজ করে পরিবর্তে CanvasScope-কে এক্সপোজ করে। এর ফলে গ্রাহকদের নিজস্ব Paint অবজেক্ট ম্যানেজ করার প্রয়োজন হয় না। যেসব গ্রাহকের এখনও Canvas অ্যাক্সেস করার প্রয়োজন তারা drawCanvas এক্সটেনশন মেথড ব্যবহার করতে পারেন, যা অন্তর্নিহিত Canvas-এর সাথে ড্রয়িং কমান্ড ইস্যু করার জন্য কলব্যাক প্রদান করে। (I80afd)

  • WithConstraints ট্রেলিং ল্যাম্বডা API পরিবর্তন করা হয়েছে। এখন দুটি প্যারামিটারের পরিবর্তে এতে একটি রিসিভার স্কোপ আছে যা সীমাবদ্ধতা এবং layoutDirection ছাড়াও Dp-তে (I91b9a, b/149979702) minWidth, maxWidth, minHeight এবং maxHeight প্রপার্টি প্রদান করে

  • LayoutModifier2-এর নাম পরিবর্তন করে LayoutModifier করা হয়েছে। (Id29f3)

  • পুরনো হয়ে যাওয়া LayoutModifier ইন্টারফেস সরিয়ে দেওয়া হয়েছে। (I2a9d6)

  • Layout এবং LayoutModifier2-এর ইন্ট্রিনসিক পরিমাপ ফাংশনে এখন একটি IntrinsicMeasureScope রিসিভার আছে যা অন্তর্নিহিতভাবে প্রচারিত লেআউট ডিরেকশন সহ ইন্ট্রিনসিক কোয়েরি API প্রদান করে। (Id9945)

  • Layout এবং LayoutModifier চাইল্ডকে আলাদা লেআউট ডিরেকশন দিয়ে পরিমাপ করা যেতে পারে। (Ibd731)

  • একই প্যারেন্ট লেআউটের মধ্যে চিলড্রেনদের ড্র করার ক্রম নিয়ন্ত্রণ করতে, New Modifier.zIndex() যোগ করা হয়েছে। DrawLayerModifier-এর elevation প্রপার্টির নাম পরিবর্তন করে shadowElevation করা হয়েছে এবং এটি আর ড্র করার ক্রম নিয়ন্ত্রণ করে না। DrawShadow-এর প্যারামিটার অর্ডার পরিবর্তন করা হয়েছে: এখন এলিভেশন প্রথম এবং শেপ দ্বিতীয়, যার ডিফল্ট মান হল RectangleShape। (I20150, b/152417501)

  • মালিকের মধ্যে থেকে onSizeChange ও onPositionChange সরানো হয়েছে। (I5c718)

  • Added Constraints2, Constraints-এর একটি কপি যা শুধুমাত্র Int connstraints ভ্যালু সাপোর্ট করে, IntPx নয়। IntPx সরিয়ে দেওয়া হবে এবং সব পূর্ণসংখ্যা সীমাবদ্ধতা Android-এর মতো পিক্সেল হিসেবে ধরে নেওয়া হবে।

    • IntSize-ও যোগ করা হয়েছে, যা পরে IntPxSize-এর পরিবর্তে ব্যবহার করা হবে। (I4b43a)
  • যেকোনও ভ্যালু সহ অ্যালাইনমেন্ট ইনস্ট্যান্টিয়েবল করা হয়েছে। 1D অ্যালাইনমেন্ট যোগ করা হয়েছে। (Ia0c05)

  • alignToSiblings এখন Placeable-এর পরিবর্তে Measured গ্রহণ করে। (I5788d)

  • (I45f09, b/152842521)

    • ScaleFit-এর নাম পরিবর্তন করে ContentScale করা হয়েছে
    • Alignment API-এর মতো একই মডিউলে থাকার জন্য ContentScale-কে ui-graphics থেকে ui-core মডিউলে সরানো হয়েছে।
    • FillMaxDimension-এর নাম পরিবর্তন করে Crop করা হয়েছে
    • FillMinDimension-এর নাম পরিবর্তন করে Fit করা হয়েছে
    • আরও ভালোভাবে ম্যাচ করার জন্য Fit-এর নাম বদলে Inside রাখা হয়েছে
    • ImageView.ScaleType-এর সমতুল্য
    • যোগ করা ডকুমেন্টেশন থেকে জানা যায় যে, Crop ও Alignment.Center-এর কম্বিনেশন ImageView.ScaleType.CENTER_CROP-এর মতো একই ফলাফল দেয় এবং Fit Alignment.Center-এর সাথে ব্যবহার করা হলে তা ImageView.ScaleType.FIT_CENTER-এর মতো একই ফলাফল দেয়। Alignment.Center-এর সাথে ব্যবহার করা হলে তা ImageView.ScaleType.CENTER_INSIDE-এর মতো একই ফলাফল দেয়
  • ড্র মডিফায়ারের জন্য RTL সহায়তা। (I0aaf9)

  • XML থেকে Android Views ইনফলেটের জন্য API রিলিজ করা হয়েছে। আরও বিবরণের জন্য ViewInCompose ডেমো দেখুন। (I42916)

  • DrawModifier API-তে উন্নতি করা হয়েছে:

    • draw() ContentDrawScope-এর জন্য রিসিভার স্কোপ তৈরি করা হয়েছে
    • draw()-এ সব প্যারামিটার সরিয়ে দেওয়া হয়েছে
    • DrawScope-এর ইন্টারফেস আগের CanvasScope-এর মতোই
    • ContentDrawScope-এ drawContent() মেথড আছে (Ibaced, b/152919067)
  • LayoutCoordinates-এর জন্য positionInParent ও boundsInParent যোগ করা হয়েছে। (Icacdd, b/152735784)

  • DrawLayerModifier এবং drawLayer() এখন ডিফল্ট হিসেবে clipToBounds এবং clipToOutline-এর মান false হিসেবে সেট করা থাকে। (I0eb8b, b/152810850)

  • LayoutResult-এর নাম পরিবর্তন করে MeasureResult করা হয়েছে। (Id8c68)

  • লেআউট মডিফায়ারকে সংজ্ঞায়িত করার জন্য নতুন API, LayoutModifier2 যোগ করা হয়েছে; LayoutModifier (If32ac) আর ব্যবহার করা যাবে না

  • ফ্যাক্টরি এক্সটেনশন ফাংশন (I225e4) দিয়ে মডিফায়ার প্লাস অপারেটর পরিবর্তন করা হয়েছে

  • কোনও প্রদত্ত লেয়ারের জন্য ড্রয়িং কমান্ডের ডিসপ্লে তালিকা অফসেট করার সুবিধা দিতে translationX/Y প্রপার্টি যোগ করা হয়েছে। অ্যানিমেশন বা টাচ ইভেন্টের প্রতিক্রিয়া হিসেবে কন্টেন্ট সরানোর জন্য এটি কাজে লাগে। (I8641c)

  • লেয়ার API-তে pivotX, pivotY প্যারামিটার যোগ করা হয়েছে যাতে কোনও লেয়ারের নির্দিষ্ট পয়েন্টের (Icf7c3) চারপাশে রোটেশন ও স্কেলিং কাজ করে

  • OnPositioned এবং OnChildPositioned কম্পোজ করার উপযুক্ত ফাংশনগুলি পরিবর্তন করতে OnPositionedModifier এবং OnChildPositionedModifier যোগ করুন। (I2ec8f)

  • LayerModifier যোগ করা হয়েছে, এটি এমন একটি মডিফায়ার যা লেআউটের জন্য RenderNode যোগ করতে দেয়। এটি ক্লিপিং, অস্বচ্ছতা, রোটেশন, স্কেলিং ও ছায়া সেট করার অনুমতি দেয়। এটি RepaintBoundary-এর পরিবর্তে ব্যবহার করা হবে। (I7100d, b/150774014)

  • লেআউট ডিরেকশনকে প্যারেন্ট লেআউট নোড থেকে চাইল্ড নোডে প্রোপাগেট করা হয়েছে। লেআউট ডিরেকশন মডিফায়ার যোগ করা হয়েছে। (I3d955)

  • স্ট্যাক কম্পোনেন্ট ডান-থেকে-বাম দিকনির্দেশ (Ic9e00) মেনে চলে

  • Compose লেআউটে RTL-এর জন্য প্রাথমিক সহায়তা (Ia5519)

  • Density ও DensityScope একটি ইন্টারফেসে মার্জ করা হয়েছে। ambientDensity()-এর পরিবর্তে আপনি এখন DensityAmbient.current ব্যবহার করতে পারবেন। withDensity(density)-এর পরিবর্তে শুধু with(density) (I11cb1)

  • প্রদত্ত অ্যালাইনমেন্ট লাইনকে ম্যাপের পরিবর্তে সেট করতে LayoutCoordinates পরিবর্তন করা হয়েছে এবং ভ্যালু রিট্রিভ করার জন্য LayoutCoordinates-এ get() অপারেটর প্রয়োগ করা হয়েছে। এর ফলে, প্রতিটি মডিফায়ারের জন্য নতুন কালেকশন তৈরি না করেই মডিফায়ারদের পক্ষে সেটের এক বা একাধিক ভ্যালু পরিবর্তন করা সহজ হয়ে যায়। (I0245a)

  • LayoutCoordinates-এ আর কোনও পজিশন প্রপার্টি নেই। LayoutModifiers, rotation বা স্কেলিংয়ের কথা বিবেচনা করলে position প্রপার্টি অর্থপূর্ণ হয় না। পরিবর্তে, ডেভেলপারদের উচিত একটি LayoutCoordinate থেকে অন্যটিতে ট্রান্সফর্ম গণনা করার জন্য parentCoordinates এবং childToLocal() ব্যবহার করা।

    LayoutCoordinates, সাইজ প্রপার্টির জন্য PxSize-এর পরিবর্তে IntPxSize ব্যবহার করে। লেআউটের জন্য লেআউট ইন্টিজার পিক্সেল সাইজ ব্যবহার করে, তাই সব লেআউট সাইজ ইন্টিজার ব্যবহার করা উচিত এবং ফ্লোটিং পয়েন্ট ভ্যালু ব্যবহার করা উচিত নয়। (I9367b)

  • Constraints-এর API সারফেসে উন্নতি (I0fd15)

  • CanvasScope API তৈরি করা হয়েছে যা Canvas অবজেক্টকে র‍্যাপ করে যাতে স্টেটলেস, ডিক্ল্যারেটিভ ড্রয়িং API সারফেস এক্সপোজ করা যায়। ট্রান্সফর্মেশনগুলি নিজস্ব রিসিভার স্কোপের মধ্যে থাকে এবং সাইজিং সংক্রান্ত তথ্যও অনুরূপ ইনসেট বাউন্ডের মধ্যে স্কোপ করা হয়। ড্রয়িং অপারেশন কনফিগার করার জন্য গ্রাহককে নিজস্ব Paint state object বজায় রাখতে হয় না।

    • CanvasScopeSample যোগ করা হয়েছে এবং ঘোষণামূলক গ্রাফিক্স ডেমো (Ifd86d) যোগ করতে ডেমো অ্যাপ আপডেট করা হয়েছে
  • অপ্রয়োজনীয় MaskFilter API সরিয়ে দেওয়া হয়েছে কারণ এর ব্যবহার সীমিত এবং বেশিরভাগ ব্যবহারের ক্ষেত্রে হার্ডওয়্যার অ্যাক্সিলারেশনের জন্য এটি অপ্টিমাইজ করা হয়নি (I54f76)

  • RectangleShape androidx.ui.foundation.shape.* থেকে androidx.ui.graphics.*-এ সরানো হয়েছে (Ia74d5, b/154507984)

  • API-তে সবকটি নাল হতে পারে এমন কালার ব্যবহারকে নন-নাল হতে পারে এমন কালার ব্যবহার দিয়ে পরিবর্তন করা হয়েছে এবং null-এর পরিবর্তে Color.Unset ব্যবহার করা হয়েছে (Iabaa7)

  • আন্ডারলায়িং ImageAsset-এর (I0ea9e) একটি সাবসেকশন ড্র করার জন্য ImagePainter-এ অতিরিক্ত ঐচ্ছিক rect প্যারামিটার যোগ করা হয়েছে

  • কালার বক্সিং না করে অনির্দিষ্ট ভ্যালু বোঝাতে আনসেট কালার যোগ করা হয়েছে। (If901a)

  • ট্রান্সফর্মেশনের জন্য ঐচ্ছিক পিভট কোঅর্ডিনেট ব্যবহার করতে Canvas.rotate ও Canvas.scale এক্সটেনশন পদ্ধতি যোগ করা হয়েছে। এইসব ডিফল্ট বর্তমান ক্যানভাসের ট্রান্সলেশনের উপরের বাঁদিকের কোণে থাকে।

    এছাড়াও, সামঞ্জস্যের জন্য Canvas.rotateRad-কে এক্সটেনশন মেথড হিসেবে সরানো হয়েছে (Ibaca6)

  • ImageAsset থেকে পিক্সেল সংক্রান্ত তথ্য কোয়েরি করার জন্য PixelMap API তৈরি করা হয়েছে। (I69ad6)

  • Compose এবং Android ফ্রেমওয়ার্ক API-এর মধ্যে অবজেক্ট কনভার্সনের জন্য নামকরণ কনভেনশন ম্যাচ করাতে toFrameworkRect/toFrameworkRectF-এর নাম পরিবর্তন করে toAndroidRect/toAndroidRectF করা হয়েছে। এছাড়াও, এইসব API-এর ডকুমেন্ট আপডেট করা হয়েছে (I86337)

  • ভেক্টর গ্রাফিক্সের জন্য আগে থেকে থাকা সাবকম্পোজিশন API-এর পরিবর্তে VectorPainter API যোগ করা হয়েছে। সাবকম্পোজিশনের ফলাফল হল একটি VectorPainter অবজেক্ট, কোনও DrawModifier নয়। VectorPainter-এর জন্য আগের DrawVector কম্পোজ করার উপযুক্ত আইটেম বাতিল করা হয়েছে।

    Image(Painter) API-এর নাম পরিবর্তন করে PaintBox(Painter) করা হয়েছে একটি ভেক্টর কম্পোজ করার মতো করে ভেক্টর কম্পোজ করার মতো করে তৈরি করা হয়েছে Image কম্পোজ করার মতো করে তৈরি করা হয়েছে, তবে ImageAsset-এর পরিবর্তে VectorAsset (I9af9a, b/149030271)

  • Image ডেটা এবং লেআউটে অংশগ্রহণ ও কন্টেন্ট ড্র করার জন্য ব্যবহৃত আসন্ন Image কম্পোজ করার উপযুক্ত আইটেমের মধ্যে পার্থক্য আরও ভালোভাবে আলাদা করতে Image-এর নাম পরিবর্তন করে ImageAsset করা হয়েছে। _বডি:android.graphics.Bitmap-এ এক্সটেনশন পদ্ধতি তৈরি করা হয়েছে, Bitmap.asImageAsset(), যাতে ImageAsset-এর একটি ইনস্ট্যান্স তৈরি করা যায়। এটি কম্পোজ ফ্রেমওয়ার্কের (Id5bbd) সাথে ঐতিহ্যবাহী Android অ্যাপ্লিকেশন ডেভেলপমেন্টকে একত্রিত করার জন্য সহায়ক

  • TextDirection.Content যোগ করা হয়েছে (I48f36)

  • TextDecoration.plus অপারেটর যোগ করা হয়েছে (I0ad1a)

  • TextDirectionAlgorithm enum ভ্যালু (Icc944) থেকে Force সরানো হয়েছে

  • TextDirectionAlgorithm-এর নাম পরিবর্তন করে TextDirection করা হয়েছে (I75ce8)

  • TextField বেছে নেওয়ার জন্য LongPressAndDrag প্রয়োগ করে। (I17919)

  • AnnotatedString.getStringAnnotations যোগ করা হয়েছে যা রেঞ্জের মধ্যে থাকা সব অ্যানোটেশন রিটার্ন করে। (I1fa00)

  • Locale ও LocaleList-এর প্যাকেজের নাম androidx.ui.text থেকে পরিবর্তন করে androidx.ui.intl করা হয়েছে (I8132c)

  • TextField-এর কার্সরে ব্লিঙ্ক করার অ্যানিমেশন আছে (Id10a7)

  • API পরিবর্তন: AnnotatedString(builder: Builder)-এর নাম পরিবর্তন করে annotatedString(builder: Builder) করা হয়েছে। (Ia6377)

  • API পরিবর্তন: AnnotatedString.Item-এর নাম পরিবর্তন করে AnnotatedString.Range করা হয়েছে। (I2d44d)

  • AnnotatedString.Builder.addAnnotationString-এর নাম পরিবর্তন করে addStringAnnotation করুন। (I5059e)

  • এখন onTextInputStarted কলব্যাক (I8dc44, b/151860051) দ্বারা ডেলিভার করা SoftwareKeyboardController ব্যবহার করে সফ্টওয়্যার কীবোর্ড লুকানো/দেখানো সম্ভব

  • (Text/Paragraph/Span)Style-এর জন্য প্লাস অপারেটর যোগ করা হয়েছে যা merge() ফাংশনে ডেলিগেট করে। (Ia1add)

  • FontWeight.lerp আর স্ন্যাপ করে না। এটি এখনও একটি ডেটা ক্লাস। (I521c2)

  • FontWeight কনস্ট্রাক্টর এখন সর্বজনীন, এটি আর ডেটা ক্লাস নয়। (Id6b1f)

  • TextLayoutResult-এ getLineStart, getLineEnd, getEllipsisOffset ও getEllipsisCount যোগ করুন (Ibc801)

  • ui-text মডিউলের নাম পরিবর্তন করে ui-text-core রাখা হয়েছে (I57dec)

  • ui-geometry মডিউলে Size class -এর ডুপ্লিকেট থাকার কারণে ব্যবহার না করা Size class সরিয়ে দেওয়া হয়েছে যা ব্যবহার করা হচ্ছে। (I1b602)

  • AdapterList যোগ করা হয়েছে, এটি একটি স্ক্রল করা যায় এমন তালিকা কম্পোনেন্ট যা শুধুমাত্র দৃশ্যমান আইটেম কম্পোজ ও লেআউট করে। বর্তমানে পরিচিত সমস্যাগুলির মধ্যে রয়েছে যে এটি শুধুমাত্র উল্লম্বভাবে কাজ করে এবং এর চাইল্ডে হওয়া পরিবর্তনের সব কেস সম্পূর্ণভাবে ম্যানেজ করতে পারে না। (Ib351b)

  • Box-এ প্যাডিং, বর্ডার, শেপ ও ব্যাকগ্রাউন্ড প্যারামিটার যোগ করুন (I05027, b/148147281)

সমস্যার সমাধান

  • টেক্সট ফিল্ডে onFocusChange কলব্যাক ফাংশনের নাম পরিবর্তন করে onFocusChanged করা হয়েছে (Ida4a1)
  • VerticalScroller এবং HoriziontalScroller বন্ধ করে দেওয়া হয়েছে। বিল্ট-ইন অভিজ্ঞতার জন্য Column/Row আচরণ ও প্যারামিটার সহ ScrollableColumn ও ScrollableRow ব্যবহার করুন অথবা আপনার নিজস্ব এলিমেন্টে Modifier.verticalScroll ও Modifier.horizontalScroll ব্যবহার করুন। একইভাবে, ScrollerPosition-এর পরিবর্তে ScrollState' (I400ce, b/157225838, b/149460415, b/154105299) ব্যবহার করা হবে
  • runOnIdleCompose-এর নাম পরিবর্তন করে runOnIdle করা হয়েছে (I83607)
  • আরও বেশি স্বজ্ঞাত করার জন্য বেশ কিছু টেস্টিং API-এর নাম পরিবর্তন করা হয়েছে। findXYZ API-এর নাম পরিবর্তন করে onNodeXYZ করা হয়েছে। doXYZ নামের সব API-এর নাম পরিবর্তন করে performXYZ করা হয়েছে। (I7f164)
  • নতুন কম্পোজিশনের প্রয়োজন ছাড়াই Compose UI এখন ViewGroups-এর মধ্যে কম্পোজ করা যাবে। উদাহরণের জন্য ViewInteropDemo দেখুন। (I9ab0b, b/160455080)
  • MutableVector-এ sortWith ও removeRange যোগ করা হয়েছে (Icccf7)
  • TextField-এর জন্য বেছে নেওয়া অংশ পরিবর্তন করতে ড্র্যাগ সিলেকশন হ্যান্ডেল প্রয়োগ করুন। (I27032)
  • Shader ইনলাইন ক্লাস সরানো হয়েছে যা NativeShader এক্সপেক্ট ক্লাসকে র‍্যাপ করে NativeShader-এর নাম পরিবর্তন করে Shader করা হয়েছে। র‍্যাপ করা Shader ইনলাইন ক্লাসটি API সারফেসে কোনও গুরুত্বপূর্ণ কিছু যোগ করেনি এবং এটি একটি ইনলাইন ক্লাস, তাই NativeShader ক্লাসটি সরাসরি ব্যবহার করুন। (I25e4d)
  • প্রদত্ত সীমাবদ্ধতা এবং ContentScale প্যারামিটারের উপর ভিত্তি করে স্কেলিং আর প্রদান না করতে PainterModifier রিফ্যাক্টর করা হয়েছে। Painter-এর ইমপ্লিমেন্টেশন হল, সেগুলিকে ড্রয়িং কন্টেন্ট নিজেদেরই স্কেল করতে হবে, যে DrawScope-এ তারা ড্র করছে তার দেওয়া সাইজের উপর ভিত্তি করে।

    VectorPainter-এর ক্যাশে বিম্যাপ আঁকার জন্য দেওয়া সাইজের পরিবর্তে ডিফল্ট সাইজে সেট হয়ে যাওয়া সংক্রান্ত সমস্যার সমাধান করা হয়েছে।

    ImagePainter আপডেট করা হয়েছে, যাতে এটি PainterModifier-এর উপর নির্ভর না করে নিজের কন্টেন্ট স্কেল করতে পারে। (I6ba90)

  • অ্যানিমেশন টাইমিংয়ের জন্য top-level withFrameNanos ফাংশন যোগ করা হয়েছে (Ie34c5)

  • @Untracked অ্যানোটেশন পুরনো হয়ে গেছে। @ComposableContract(tracked=false) (Id211e) দিয়ে পাল্টান

  • androidx.ui.foundation.TextFieldValue এবং androidx.ui.input.EditorValue বন্ধ করা হয়েছে। TextField, FilledTextField এবং CoreTextField কম্পোজ করার উপযুক্ত আইটেম যা এই ধরনের আইটেম ব্যবহার করে সেগুলিও বাতিল করা হয়েছে। এর পরিবর্তে androidx.ui.input.TextFieldValue ব্যবহার করুন (I4066d, b/155211005)

  • dispatch চলাকালীন subcomposition-এর মাধ্যমে PointerInputFilters সরিয়ে দেওয়া হলে, pointer input dispatch ক্র্যাশ হওয়ার কারণ সম্পর্কিত সমস্যার সমাধান করা হয়েছে। এটি এখন ঠিক করা হয়েছে। (I1f48b, b/157998762)

  • সেই সমস্যার সমাধান করা হয়েছে যেখানে ডিসপ্যাচ করার সময় সাবকম্পোজিশনের মাধ্যমে PointerInputFilters সরিয়ে দেওয়া হলে পয়েন্টার ইনপুট ডিসপ্যাচ করার ফলে ক্র্যাশ হয়ে যেত। এটি এখন ঠিক করা হয়েছে। (Iab398, b/157998762)

  • Radius ক্লাসকে রিফ্যাক্টর করে ইনলাইন ক্লাস করা হয়েছে। বাধ্যতামূলক x-অক্ষ ব্যাসার্ধ প্যারামিটারের সাথে y-অক্ষ বরাবর ব্যাসার্ধ ম্যাচ করার জন্য ডিফল্ট প্যারামিটার সহ ফাংশন কনস্ট্রাক্টরের পক্ষে কম্প্যানিয়ন ক্রিয়েশন পদ্ধতি সরানো হয়েছে।

    x ও y অক্ষ বরাবর রেডিয়াসের জন্য ২টি আলাদা ফ্লোট ভ্যালুর পরিবর্তে একটি রেডিয়াস প্যারামিটার ব্যবহার করতে DrawScope.drawRoundRect আপডেট করা হয়েছে (I46d1b)

  • Recompose কম্পোজ করার উপযুক্ত আর কোনও কার্যকর অ্যাবস্ট্রাকশন নয়। MutableState অ্যাসাইনমেন্টের ফলে বেশিরভাগ রিকম্পোজিশন হওয়া উচিত। এর বাইরে কিছু করার প্রয়োজন হলে, বর্তমান স্কোপের রিকম্পোজিশন ট্রিগার করার জন্য invalidate ফাংশন ব্যবহার করার সাজেশন দেওয়া হয়। (Ifc992)

  • বড় রিফ্যাক্টরিংয়ের অংশ হিসেবে বিভিন্ন কম্পোজ ক্লাসে Px ক্লাসের ব্যবহার পরিবর্তন করা হয়েছে, যাতে পিক্সেল প্যারামিটারের জন্য শুধুমাত্র Dp ও আদিম ডেটা টাইপের উপর নির্ভর করা যায় (Iede0b)

  • Compose-এর কম্পাইলারের কোড জেনারেশন স্ট্র্যাটেজি পরিবর্তন করে। পরিবর্তনের আগে, কম্পোজ কম্পাইলার কলগুলিকে কম্পোজ করার উপযুক্ত ফাংশনে ট্রান্সফর্ম করত। এই পরিবর্তনের ফলে, আমরা এখন কম্পোজ করা যায় এমন ফাংশনের বডিকে ট্রান্সফর্ম করি এবং কলসাইটকে অপরিবর্তিত রাখি (বেশিরভাগ ক্ষেত্রে)।

    এর অর্থ হল, কম্পোজ রানটাইমের সাথে যোগাযোগকারী বেশিরভাগ লজিক কলসাইটের পরিবর্তে ফাংশন বডির শুরুতে ঘটে।

    কম্পোজের সব ব্যবহারের জন্য এটি সোর্স-মানানসই পরিবর্তন হতে হবে। এই পরিবর্তনের ফলে কম্পোজের বেশিরভাগ ব্যবহারকারীকে কোনও কোড আপডেট করতে হবে না।

    এই কাজকে সমর্থন করার জন্য, সমস্ত কম্পোজ করা যায় এমন ফাংশনের JVM সিগনেচার পরিবর্তন করা হয়েছে। একটি প্যারামিটার গ্রহণকারী কম্পোজ করার উপযুক্ত ফাংশনকে ৩টি প্যারামিটার গ্রহণকারী ফাংশনে রূপান্তরিত করা হয়, অতিরিক্ত প্যারামিটারগুলি হল কম্পোজার, একটি ‘কী’ ইন্টিজার, কল করার মাধ্যমে মেটাডেটা প্রচার করতে ব্যবহৃত বিটমাস্ক ইন্টিজার।

    এছাড়াও, 'কম্পোজ করো' এখন ডিফল্ট আর্গুমেন্টকে কম্পোজ করার উপযুক্ত ফাংশনে ট্রান্সফর্ম করে। এটি ফাংশনের অতিরিক্ত সিন্থেটিক ডিফল্ট ওভারলোড যোগ না করেই এটি করে, তাই এই পরিবর্তনের ফলে কম ফাংশন সংজ্ঞায়িত করা হবে।

    এর ফলে পরিচিত ইচ্ছাকৃত আচরণগত পরিবর্তন:

    1. আগে যেখানে এড়িয়ে যাওয়া হত না, সেখানে কিছু কল এড়িয়ে যাওয়া হবে
    2. ডিফল্ট আর্গুমেন্ট এক্সপ্রেশনে কম্পোজ করা যায় এমন এক্সপ্রেশন এখন সঠিকভাবে সাবস্ক্রাইব করা ও ম্যানেজ করা হয়

    এই কাজের মধ্যে কিছু অপ্টিমাইজেশন অন্তর্ভুক্ত ছিল: ১. প্যারামিটার তুলনা করার ফলাফল কল গ্রাফের মাধ্যমে অন্যান্য কম্পোজ করা যায় এমন ফাংশনে প্রোপাগেট করা হয়। এর ফলে রানটাইমে কম তুলনা করতে হবে, স্লট টেবিলের সাইজ কমে যাবে এবং কম্পোজ করার উপযুক্ত ফাংশন আরও বেশি করে এড়িয়ে যাওয়া যাবে, যেগুলি আগে এড়িয়ে যাওয়া হত না ২. কম্পাইল করার সময় যে প্যারামিটারগুলিকে "স্ট্যাটিক" হিসেবে নির্ধারণ করা হয়, সেগুলিকে আর রানটাইমে তুলনা বা স্টোর করা হয় না। এর ফলে তুলনা করার সংখ্যা কমে যায় এবং স্লট টেবিলের সাইজও কমে যায়। ৩. তৈরি হওয়া গ্রুপের সংখ্যা কমানোর জন্য ফাংশনের বডির কন্ট্রোল ফ্লো স্ট্রাকচার ব্যবহার করা হয়। এর ফলে স্লট টেবিলের সাইজ কমে যায় এবং রানটাইম ৪-এর কাজও কমে যায়। ফাংশনের মধ্যে ব্যবহার না করা হলে, ফাংশনের স্কিপ করার উপযুক্ততা নির্ধারণ করার সময় ফাংশনে পাঠানো ও ফাংশন থেকে পাওয়া প্যারামিটার অন্তর্ভুক্ত করা হয় না।

    বেশিরভাগ ব্রেকিং পরিবর্তন সেইসব API-এর জন্য করা হয়েছে যেগুলিকে কম্পাইলার সরাসরি টার্গেট করে এবং Compose-এর সাধারণ ব্যবহার প্রভাবিত হবে না: ১. Composer::startExpr সরানো হয়েছে ২. Composer::endExpr সরানো হয়েছে ৩. Composer::call বাতিল করা হয়েছে ৪. key-এর নন-ভারআর্গ ওভারলোড সরিয়ে দেওয়া হয়েছে। এরপর থেকে vararg ভার্সন ব্যবহার করুন। ৫. Pivotal অ্যানোটেশন বন্ধ করে দেওয়া হয়েছে। পরিবর্ত হিসেবে key ব্যবহার করুন। ৬. ScopeUpdateScope::updateScope-কে পরিবর্তন করে Function1-এর পরিবর্তে Function3 করা হয়েছে ৭. restartableFunction ও restartableFunctionN-কে আপডেট করে অতিরিক্ত কম্পাইল টাইম প্যারামিটার যোগ করা হয়েছে (I60756, b/143464846)

  • পুরনো হয়ে যাওয়া LayoutAlign মডিফায়ার সরিয়ে দেওয়া হয়েছে। (I10877)

  • DrawLayerModifier-এর (I00aa4) জন্য RepaintBoundary সরানো হয়েছে

  • Button, FloatingActionButton এবং Clickable-এ এখন আলাদা enabled param আছে। বোতামের কিছু প্যারামিটার নতুন নাম দেওয়া হয়েছে বা নতুন ক্রমে সাজানো হয়েছে। (I54b5a)

  • আলাদা আলাদা ফাংশন সহ ButtonStyle পরিবর্তন করা হয়েছে এবং টেক্সট (স্ট্রিং) ওভারলোড সরিয়ে দেওয়া হয়েছে। ব্যবহার সংক্রান্ত তথ্যের জন্য আপডেট করা নমুনা দেখুন। (If63ab, b/146478620, b/146482131)

  • অ্যাম্বিয়েন্ট API-তে ব্রেকিং পরিবর্তন। বিস্তারিত জানতে লগ ও Ambient<T> ডকুমেন্টেশন দেখুন (I4c7ee, b/143769776)

  • LayoutDirection-এর মাধ্যমে নির্ধারণ করার জন্য ডিফল্ট TextDirection-এর আচরণ পরিবর্তন করা হয়েছে। যেমন, LayoutDirection RTL হলে, ডিফল্ট TextDirection RTL হবে। আগে এটি ছিল TextDirection.ContentOrLtr/Rtl (I4e803)

  • সমস্যার সমাধান: AnnotatedString-এ ফন্ট ওয়েট ও ফন্ট স্টাইল নেস্ট করা থাকলে, টেক্সট সঠিকভাবে রেন্ডার হয় না। (I77a9d)

  • Text()-এ সাধারণত ব্যবহৃত প্যারামিটার যোগ করে। আপনি যদি বর্তমানে এই প্যারামিটারগুলির একটি ছোট সংখ্যা পাস করার জন্য একটি স্থানীয় টেক্সট স্টাইল তৈরি করে থাকেন, যেমন Text(style = TextStyle(textAlign = TextAlign.Center)), তাহলে আপনি এখন সরাসরি প্যারামিটার প্রদান করতে পারবেন: Text(textAlign = TextAlign.Center) (I82768)

  • ui-android-text মডিউলের নাম পরিবর্তন করে ui-text-android করা হয়েছে (I68cbe)