مدیر پنجره

کتابخانه Jetpack WindowManager به توسعه‌دهندگان برنامه‌ها این امکان را می‌دهد که از فرم‌فکتورهای جدید دستگاه و محیط‌های چندپنجره‌ای پشتیبانی کنند. نسخه اولیه، دستگاه‌های تاشو را هدف قرار داده است، اما نسخه‌های بعدی به انواع نمایشگرها و ویژگی‌های پنجره بیشتری گسترش خواهند یافت.
آخرین به‌روزرسانی انتشار پایدار کاندیدای انتشار انتشار بتا انتشار آلفا
۱۹ نوامبر ۲۰۲۵ ۱.۵.۱ - - ۱.۶.۰-آلفا۰۱

اعلام وابستگی‌ها

برای افزودن یک وابستگی به WindowManager، باید مخزن Google Maven را به پروژه خود اضافه کنید. برای اطلاعات بیشتر، مخزن Google's Maven را مطالعه کنید.

وابستگی‌های مربوط به مصنوعات مورد نیاز خود را در فایل build.gradle برای برنامه یا ماژول خود اضافه کنید:

شیار

dependencies {
    implementation "androidx.window:window:1.5.1"

    // For Java-friendly APIs to register and unregister callbacks
    implementation "androidx.window:window-java:1.5.1"

    // For RxJava2 integration
    implementation "androidx.window:window-rxjava2:1.5.1"

    // For RxJava3 integration
    implementation "androidx.window:window-rxjava3:1.5.1"

    // For testing
    implementation "androidx.window:window-testing:1.5.1"
}

کاتلین

dependencies {
    implementation("androidx.window:window:1.5.1")

    // For Java-friendly APIs to register and unregister callbacks
    implementation("androidx.window:window-java:1.5.1")

    // For RxJava2 integration
    implementation("androidx.window:window-rxjava2:1.5.1")

    // For RxJava3 integration
    implementation("androidx.window:window-rxjava3:1.5.1")

    // For testing
    implementation("androidx.window:window-testing:1.5.1")
}

بازخورد

بازخورد شما به بهبود Jetpack کمک می‌کند. اگر مشکلات جدیدی کشف کردید یا ایده‌هایی برای بهبود این کتابخانه دارید، به ما اطلاع دهید. لطفاً قبل از ایجاد یک کتابخانه جدید، نگاهی به مشکلات موجود در این کتابخانه بیندازید. می‌توانید با کلیک بر روی دکمه ستاره، رأی خود را به یک مشکل موجود اضافه کنید.

ایجاد یک مسئله جدید

برای اطلاعات بیشتر به مستندات ردیاب مشکل مراجعه کنید.

نسخه ۱.۶

نسخه ۱.۶.۰-آلفا۰۱

۱۹ نوامبر ۲۰۲۵

androidx.window:window-*:1.6.0-alpha01 منتشر شد. نسخه 1.6.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • متدهای کمکی را برای ساخت WindowSizeClassSets در قالب شبکه‌ای اضافه کنید.

تغییرات API

  • متدهای کمکی برای ساخت WindowSizeClassSets به صورت شبکه‌ای اضافه کنید. ( I4d623 ، b/444174274 )

نسخه ۱.۵

نسخه ۱.۵.۱

۱۹ نوامبر ۲۰۲۵

androidx.window:window-*:1.5.1 منتشر شد. نسخه ۱.۵.۱ شامل این کامیت‌ها است.

رفع اشکالات

  • رفع خطای ClassCastException که در دستگاه‌های خاصی رخ می‌دهد ( 4d58979 )

نسخه ۱.۵.۰

۲۴ سپتامبر ۲۰۲۵

androidx.window:window-*:1.5.0 منتشر شد. نسخه ۱.۵.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۴.۰:

  • نقاط توقف WindowSizeClass را برای Large و XLarge اضافه کنید. ( I40d85 )
  • محاسبه‌ی WindowMetrics را به Application Context گسترش دهید. ( I8eeeb , b/360934048 )
  • یک Getter برای فعال کردن دسترسی مستقیم به WindowLayoutInfo ارائه دهید ( Ie9513 )
  • معرفی API برای ذخیره خودکار وضعیت جاسازی و بازیابی خودکار وضعیت جاسازی پس از شروع مجدد فرآیند برنامه ( Ie0295 )
  • حذف API آزمایشی WindowInsets . ( I68a71 )

رفع اشکالات

  • رفع مشکل EmbeddingRule که در برخی موارد hashCode متفاوتی برمی‌گرداند. ( I748cc )
  • رفع مشکلی که ممکن است به دلیل خطاهای پیاده‌سازی دستگاه، یک NullPointerException رخ دهد.
  • مشکلی که بررسی‌های ایمنی ActivityEmbedding ما به دلیل حذف کلاس‌های بلااستفاده توسط proguard با شکست مواجه می‌شد، برطرف شد.

مشارکت خارجی

  • اضافه کردن تمام پلتفرم‌های KMP به window-core ( If3d7c )

نسخه ۱.۵.۰-rc01

۲۷ آگوست ۲۰۲۵

androidx.window:window-*:1.5.0-rc01 منتشر شد. نسخه 1.5.0-rc01 شامل این کامیت‌ها است.

رفع اشکالات

  • رفع مشکلی که ممکن است به دلیل خطاهای پیاده‌سازی دستگاه، یک NullPointerException رخ دهد.
  • مشکلی که بررسی‌های ایمنی ActivityEmbedding ما به دلیل حذف کلاس‌های بلااستفاده توسط proguard با شکست مواجه می‌شد، برطرف شد.

نسخه ۱.۵.۰-بتا۰۲

۱۳ آگوست ۲۰۲۵

androidx.window:window-*:1.5.0-beta02 منتشر شد. نسخه 1.5.0-beta02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • رفع اشکالات جزئی.

مشارکت خارجی

  • اضافه کردن تمام پلتفرم‌های KMP به window-core ( If3d7c )

نسخه ۱.۵.۰-بتا۰۱

۲ ژوئیه ۲۰۲۵

androidx.window:window-*:1.5.0-beta01 منتشر شد. نسخه 1.5.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۵.۰-آلفا۰۲

۷ مه ۲۰۲۵

androidx.window:window-*:1.5.0-alpha02 منتشر شد. نسخه 1.5.0-alpha02 شامل این کامیت‌ها است.

تغییرات API

  • نقاط توقف WindowSizeClass را برای Large و XLarge اضافه کنید. ( I40d85 )
  • محاسبه‌ی WindowMetrics را به Application Context گسترش دهید. ( I8eeeb , b/360934048 )
  • یک Getter برای فعال کردن دسترسی مستقیم به WindowLayoutInfo ارائه دهید ( Ie9513 )
  • معرفی API برای ذخیره خودکار وضعیت جاسازی و بازیابی خودکار وضعیت جاسازی پس از شروع مجدد فرآیند برنامه ( Ie0295 )
  • حذف API آزمایشی WindowInsets . ( I68a71 )
  • چند سازنده را مخفی کنید ( I87b8d )

رفع اشکالات

  • رفع مشکل EmbeddingRule که در برخی موارد hashCode متفاوتی برمی‌گرداند. ( I748cc )

نسخه ۱.۵.۰-آلفا۰۱

۱۲ مارس ۲۰۲۵

androidx.window:window-*:1.5.0-alpha01 منتشر شد. نسخه 1.5.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • انتشار اولیه نسخه بعدی ۱.۵.۰.

نسخه ۱.۴

نسخه ۱.۴.۰

۲۰ مه ۲۰۲۵

androidx.window:window-*:1.4.0 منتشر شد. نسخه ۱.۴.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۳.۰

  • جاسازی فعالیت
    • API برای سفارشی‌سازی انیمیشن‌های راه‌اندازی
    • جداکننده تعاملی
    • پین کردن ActivityStack
    • گفتگوی تمام صفحه
    • فراخوانی اطلاعات پنجره فعالیت جاسازی‌شده
    • مدیریت بهبود یافته ActivityStack
    • اجرای اکتیویتی در یک ActivityStack مشخص شده
  • WindowMetricsCalculator
    • بهبود پشتیبانی از قابلیت تست
  • WindowMetrics
    • روش‌های راحت برای محاسبه withDp و heightDp
    • بررسی مرزها را به isAtLeast به‌روزرسانی کنید و از مرزهای پایین برای پشتیبانی از افزودن مقادیر جدید استفاده کنید.
  • WindowSizeClass
    • اضافه کردن روشی برای محاسبه از WindowMetrics
  • WindowInfoTracker
    • اضافه کردن API برای تشخیص حالت‌های پشتیبانی‌شده در دستگاه

نسخه ۱.۴.۰-rc02

۲۳ آوریل ۲۰۲۵

androidx.window:window-*:1.4.0-rc02 منتشر شد. نسخه 1.4.0-rc02 شامل این کامیت‌ها است.

رفع اشکالات

  • رفع مشکل از کار افتادن proguard برای ActivityEmbedding .

نسخه ۱.۴.۰-rc01

۱۲ مارس ۲۰۲۵

androidx.window:window-*:1.4.0-rc01 منتشر شد. نسخه 1.4.0-rc01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • به‌روزرسانی‌هایی برای API مربوط به WindowSizeClass .
  • به‌روزرسانی‌های APIهای تعبیه فعالیت.

نسخه ۱.۴.۰-بتا۰۲

۱۲ فوریه ۲۰۲۵

androidx.window:window-*:1.4.0-beta02 منتشر شد. نسخه 1.4.0-beta02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • حاشیه‌نویسی‌ای که فقط روی ویژگی بود اما روی دریافت‌کننده نبود را اصلاح کنید.

نسخه ۱.۴.۰-بتا۰۱

۱۵ ژانویه ۲۰۲۵

androidx.window:window-*:1.4.0-beta01 منتشر شد. نسخه 1.4.0-beta01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • API را اضافه کنید تا امکان سفارشی‌سازی انیمیشن‌های ActivityEmbedding فراهم شود.
  • APIهای تست WindowMetricsCalculator را گسترش دهید تا امکان جعل معیارهای پنجره فراهم شود.

تغییرات API

  • چند سازنده را مخفی کنید ( I87b8d )
  • به برنامه‌ها اجازه دهید انیمیشن‌های ActivityEmbedding سفارشی کنند ( If31a8 )
  • پشتیبانی از watchosDeviceArm64 KMP target و target kotlin 1.9 ( Icf15d ، b/364652024 ) را اضافه می‌کند.
  • افشای APIهای WindowMetricsCalculator . ( I1cebf )

رفع اشکالات

  • این کتابخانه اکنون از حاشیه‌نویسی‌های nullness از نوع JSpecify استفاده می‌کند که از نوع استفاده می‌کنند. توسعه‌دهندگان کاتلین باید از آرگومان کامپایلر زیر برای اعمال استفاده صحیح استفاده کنند: -Xjspecify-annotations=strict (این پیش‌فرض است که از نسخه ۲.۱.۰ کامپایلر کاتلین شروع می‌شود). ( Ie69ac ، b/326456246 )

نسخه ۱.۴.۰-آلفا۰۵

۱۶ اکتبر ۲۰۲۴

androidx.window:window-*:1.4.0-alpha05 منتشر شد. نسخه 1.4.0-alpha05 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • توابع کمکی برای دریافت widthDp و heightDp از WindowMetrics اضافه کنید.

تغییرات API

  • widthDp و heightDp را به WindowMetrics اضافه کنید. ( Ide026 )
  • حذف API آزمایشی WindowInsets . ( I68a71 )
  • نام متدهای بررسی محدوده‌ها را به isAtLeast ( Ib0ab7 ) به‌روزرسانی کنید.

نسخه ۱.۴.۰-آلفا۰۴

۲ اکتبر ۲۰۲۴

androidx.window:window-*:1.4.0-alpha04 منتشر شد. نسخه 1.4.0-alpha04 شامل این کامیت‌ها است.

تغییرات API

  • یک متد برای محاسبه‌ی WindowSizeClass از WindowMetrics اضافه شد. ( 874dba )
  • برای وضوح بیشتر، متدهای WindowSizeClass را به containsWidthDp ، containsHeightDp و containsWindowSizeDp تغییر دهید. ( fa760d )
  • تبدیل WindowAreaController به کلاس پایه انتزاعی ( I90893 )

رفع اشکالات

  • هنگام ایجاد یک FoldingFeature آزمایشی، پشتیبانی از مرزهای نسبی را اضافه کنید. ( 2e6b3e )
  • رفع اشکالات عمومی هنگام انتخاب WindowSizeClass .

نسخه ۱.۴.۰-آلفا۰۳

۱۸ سپتامبر ۲۰۲۴

androidx.window:window-*:1.4.0-alpha03 منتشر شد. نسخه 1.4.0-alpha03 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • یک متد کاربردی برای دریافت WindowSizeClass از WindowMetrics اضافه کنید. ( I83f1f )
  • تغییر نام isAtLeast به containsBreakpoint ( I85b47 )
  • با استفاده از اعداد اعشاری، overload را به computeWindowSizeClass اضافه کنید. ( I3dcb2 ، b/364677934 ، b/364677802 ، b/364680886 )

رفع اشکالات

  • نقاط شکست گمشده را به مجموعه نقاط شکست پیش‌فرض WindowSizeClass اضافه کنید.
  • اشکالی که باعث می‌شد ابعاد فشرده در برخی موارد به درستی انتخاب نشوند، برطرف شد.

نسخه ۱.۴.۰-آلفا۰۲

۴ سپتامبر ۲۰۲۴

androidx.window:window-*:1.4.0-alpha02 منتشر شد. نسخه 1.4.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

پشتیبانی از WindowSizeClass سفارشی اضافه شد.

  • سازنده‌ی WindowSizeClass را باز کنید تا توسعه‌دهندگان بتوانند از سازنده‌ی خودشان استفاده کنند.
  • متدهای کاربردی isAtLeast اضافه کنید تا توسعه‌دهندگان بتوانند طیف وسیعی از مقادیر WindowSizeClass را پردازش کنند.
  • یک تابع افزونه روی Set<WindowSizeClass> اضافه کنید تا بهترین تطابق را از مجموعه محاسبه کند.
  • ثابت‌هایی را برای نقاط توقف پیشنهادی اندروید اضافه کنید.
  • مجموعه نقاط شکست مربوط به نقاط شکست پیشنهادی اندروید را اضافه کنید.

تغییرات API

  • نام متدهای bounds را برای WindowSizeClass به‌روزرسانی کنید. ( If89a6 )
  • API WindowSizeClass به‌روزرسانی کنید تا در آینده از افزودن مقادیر جدید برای نقاط شکست پشتیبانی کند. به جای داشتن مرزهای مطلق، از مرزهای پایین‌تر استفاده می‌کنیم و به توسعه‌دهندگان توصیه می‌کنیم هنگام پردازش WindowSizeClass از بررسی‌های مرزهای پایین‌تر استفاده کنند. WindowWidthSizeClass و WindowHeightSizeClass موجود منسوخ خواهند شد زیرا دیگر توسعه نخواهند یافت. ( I014ce )

نسخه ۱.۴.۰-آلفا۰۱

۷ آگوست ۲۰۲۴

androidx.window:window-*:1.4.0-alpha01 منتشر شد. نسخه 1.4.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • قابلیت پین کردن ActivityStack به برنامه‌ها اجازه می‌دهد تا محتوا را در یک کانتینر پین کنند و ناوبری آن را از کانتینر دیگر جدا کنند.
  • جداکننده تعاملی به برنامه‌ها اجازه می‌دهد تا یک جداکننده ثابت یا قابل جابجایی بین دو فعالیت را در یک ارائه تقسیم‌شده نمایش دهند.
  • کم‌نور کردن تمام‌صفحه‌ی دیالوگ به برنامه‌ها اجازه می‌دهد تا ناحیه‌ی کم‌نور شدن دیالوگ را مشخص کنند، یا کل پنجره‌ی وظیفه را کم‌نور کنند یا فقط محفظه‌ای را که دیالوگ را نشان می‌دهد، کم‌نور کنند.
  • قابلیت فراخوانی اطلاعات پنجره فعالیت تعبیه‌شده (Embedded Activity Window Info Callback) به برنامه‌ها اجازه می‌دهد تا به‌طور مداوم به‌روزرسانی‌های پنجره فعالیت تعبیه‌شده را دریافت کنند.
  • جاسازی پس‌زمینه انیمیشن به برنامه‌ها اجازه می‌دهد تا پس‌زمینه انیمیشن را مشخص کنند و کیفیت انیمیشن انتقال را هنگام استفاده از ActivityEmbedding بهبود بخشند.
  • مدیریت بهبود یافته ActivityStack به برنامه‌ها اجازه می‌دهد تا هنگام استفاده از ActivityEmbedding ، کنترل بیشتری روی ActivityStacks داشته باشند، از جمله:
  • راه‌اندازی یک فعالیت در ActivityStack مشخص شده
  • تکمیل یک ActivityStack

تغییرات API

  • یک API جدید WindowInfoTracker#supportedPostures :

    • یک API برای تعیین اینکه آیا دستگاه از حالت TableTop برای دستگاه‌های تاشو پشتیبانی می‌کند یا خیر. WindowAreaSessionPresenter#getWindow را اضافه می‌کند.
  • اضافه کردن APIها برای پشتیبانی از پین کردن ActivityStack :

    • کلاس SplitPinRule
    • SplitController#pinTopActivityStack
    • SplitController#unpinTopActivityStack
  • اضافه کردن APIها برای فعال‌سازی و پیکربندی جداکننده تعاملی

    • کلاس DividerAttributes
    • SplitAttributes.Builder#setDividerAttributes
  • اضافه کردن APIها برای تنظیم EmbeddingConfiguration و DimAreaBehavior برای دیالوگ‌ها

    • کلاس EmbeddingConfiguration
    • کلاس DimAreaBehavior
    • ActivityEmbeddingController#setEmbeddingConfiguration
  • اضافه کردن API برای دریافت به‌روزرسانی‌های اطلاعات پنجره فعالیت تعبیه‌شده

    • کلاس EmbeddedActivityWindowInfo
    • ActivityEmbeddingController#embeddedActivityWindowInfo
  • اضافه کردن API برای تنظیم پس‌زمینه انیمیشن جاسازی‌شده

    • EmbeddingAnimationBackground
    • SplitAttributes.Builder#setAnimationBackground
  • اضافه کردن APIها برای تکمیل ActivityStacks

    • ActivityEmbeddingController#finishActivityStacks
  • افزودن APIها برای تنظیم راه‌اندازی ActivityStack

    • ActivityEmbeddingOptions#setLaunchingActivityStack
  • API های زیر پایدار هستند و دیگر آزمایشی نیستند:

    • ActivityEmbeddingController#invalidateVisibleActivityStacks (از SplitController#invalidateTopVisibleSplitAttributes منتقل شده است)
    • ActivityEmbeddingController#getActivityStack
    • SplitController#updateSplitAttributes
  • اضافه کردن APIها برای نسخه ۱.۴. ( I56774 )

رفع اشکالات

  • رفع اشکال در دستگاه‌های خاص که در آن هنگام فعال بودن یک جلسه، به جای ACTIVE، عبارت UNAVAILABLE برگردانده می‌شد.
  • به دلیل پشتیبانی ناپایدار از API، پشتیبانی از transferActivityToWindowArea را در دستگاه‌هایی با vendorApiLevel برابر با ۲ حذف می‌کند.
  • معرفی API برای فعال کردن قابلیت کشیدن به حالت تمام صفحه برای جداکننده‌ی قابل کشیدنِ تعبیه‌ی فعالیت (Activity Embedding). ( I645c9 )
  • به برنامه‌ها اجازه دهید انیمیشن‌های ActivityEmbedding را از طریق پارامترهای انیمیشن برای SplitAttributes غیرفعال کنند. ( Idc01a )
  • حذف دستورالعمل دسترسی به APIهای پلتفرم جدید، زیرا این امر به طور خودکار از طریق مدل‌سازی API هنگام استفاده از R8 با AGP 7.3 یا بالاتر (مثلاً R8 نسخه 3.3) و برای همه نسخه‌ها هنگام استفاده از AGP 8.1 یا بالاتر (مثلاً D8 نسخه 8.1) اتفاق می‌افتد. به مشتریانی که از AGP استفاده نمی‌کنند، توصیه می‌شود به D8 نسخه 8.1 یا بالاتر به‌روزرسانی کنند. برای جزئیات بیشتر به این مقاله مراجعه کنید. ( Ia60e0 ، b/345472586 )
  • به افزونه‌ها اجازه دهید پارامترهای انیمیشن را برای SplitAttributes دریافت کنند تا دستگاه بتواند از آن برای انتقال انیمیشن استفاده کند. ( Iede00 )
  • پنهان کردن APIهای پوششی ( Ic4251 )
  • معرفی APIها برای پیکربندی جداکننده ثابت یا قابل جابجایی برای تقسیم‌بندی ( Ia7a78 )
  • چگالی به WindowMetrics اضافه شد ( Id6723 )
  • برای دریافت SupportedPostures API اضافه کنید. ( If557a )
  • حذف setLaunchingActivityStack از API آزمایشی ( I191cf )
  • معرفی ActivityEmbeddingController#embeddedActivityWindowInfo ( I24312 )
  • #getToken را منسوخ کنید و #getActivityStackToken ( Ie0471 ) را اضافه کنید.
  • معرفی آداپتور فراخوانی برای API جریان embeddedActivityWindowInfo ( Ida77f )
  • اضافه کردن آداپتور فراخوانی برای API جریان overlayInfo ( I7264f )
  • معرفی WindowSdkExtensionsRule برای لغو extensionsVersion برای آزمایش. ( Ifb928 )
  • - برای سازگاری با کاربردهای ActivityOptionsCompat #setLaunchingActivityStack را به Bundle منتقل کنید.
    • کاربران باید به جای خود ActvityOptions activityOptions.toBundle را ارسال کنند.
    • #setLaunchingActivityStack(Activity) حذف کنید. کاربران باید برای دریافت ActivityStack ActivityEmbeddingController#getActivityStac(Activity) استفاده کنند و ActivityStack به #setLaunchingActivityStack ارسال کنند. ( Ie0ccc )
  • - ActivityStack.Token و SpltInfo.Token را به عنوان شناسه‌ای برای ارتباط بین WM Jetpack و افزونه‌ها معرفی کنید.
    • منسوخ/جایگزین کردن APIها برای دریافت/بازگرداندن توکن به جای IBinder. ( I12b24 )
  • - معرفی ActivityEmbeddingController#invalidateVisibleActivityStacks
    • SplitController#invalidateTopVisibleSplitAttributes را حذف کنید زیرا این ویژگی در #invalidateVisibleActivityStacks ( I02ef5 ) ادغام شده است.
  • - اضافه کردن API برای تنظیم پیکربندی جاسازی. ( I59a4a )
  • - افزودن پین/باز کردن APIهای بالای ActivityStack androidx.Window
    • به‌روزرسانی برنامه آزمایشی برای پین کردن/باز کردن ActivityStack بالایی ( I24dd3 )
  • دوباره #finishActivityStacks و ActivityEmbeddingOptions ( Ic1ab3 ) را اضافه کنید
  • API های ناپایدار را حذف کنید. ( Ibc534 , b/302380585 )

نسخه ۱.۳

نسخه ۱.۳.۰

۲۹ مه ۲۰۲۴

androidx.window:window-*:1.3.0 منتشر شد. نسخه ۱.۳.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۲.۰

  • پشتیبانی چند پلتفرمی کاتلین برای کلاس‌های اندازه پنجره.

نسخه ۱.۳.۰-rc01

۱۴ مه ۲۰۲۴

جت‌پک ۱.۳ WindowManager از کاتلین برای پشتیبانی از قابلیت‌های WindowSizeClass در پلتفرم‌های مختلف پشتیبانی می‌کند و همچنین چندین اشکال را برطرف کرده است.

androidx.window:window-*:1.3.0-rc01 منتشر شد. نسخه 1.3.0-rc01 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-بتا۰۲

۱ مه ۲۰۲۴

androidx.window:window-*:1.3.0-beta02 منتشر شد. نسخه 1.3.0-beta02 شامل این کامیت‌ها است.

تغییرات API

  • پشتیبانی از ایجاد و استفاده از WindowSizeClass سفارشی را حذف کنید. ( Id1143 )

رفع اشکالات

  • رفع خطای KotlinReflectionInternalError ناشی از حذف برخی فایل‌ها توسط proguard در پیاده‌سازی‌های خاص دستگاه ( I01b02 )

نسخه ۱.۳.۰-بتا۰۱

۳ آوریل ۲۰۲۴

androidx.window:window-*:1.3.0-beta01 منتشر شد. نسخه 1.3.0-beta01 شامل این کامیت‌ها است.

نسخه ۱.۳.۰-آلفا۰۳

۶ مارس ۲۰۲۴

androidx.window:window-*:1.3.0-alpha03 منتشر شد. نسخه 1.3.0-alpha03 شامل این کامیت‌ها است.

تغییرات API

  • تقسیم WindowSizeClassUtil به متدهای متمرکزتر. ( Ie9292 )
  • بازیابی WindowSizeClass#compute ( I21355 , b/324293374 )

رفع اشکالات

  • رفع مشکل کرش در جایی که context ارائه شده به درستی unwrapped نمی‌شد. ( 94d10ce , b/318787482 )

نسخه ۱.۳.۰-آلفا۰۲

۷ فوریه ۲۰۲۴

androidx.window:window-*:1.3.0-alpha02 منتشر شد. نسخه 1.3.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • به‌روزرسانی‌هایی در سطح API مربوط به کلاس اندازه پنجره (Window Size Class) انجام شده است تا انعطاف‌پذیری را برای توسعه‌دهندگانی که می‌خواهند از کلاس‌های اندازه خودشان استفاده کنند، بهبود بخشد.

تغییرات API

  • محدودیت‌های ارتفاع را به انتخابگر عرض اضافه کنید. ( I23393 )
  • توابع کاربردی برای انتخاب یک WindowSizeClass از یک مجموعه اضافه کنید. توابع امتیازدهی آزمایشی اضافه کنید تا توسعه‌دهندگان بتوانند انتخابگرهای خودشان را بنویسند. یک تابع افزونه انتخابگر اضافه کنید تا عریض‌ترین WindowSizeClass در یک محدوده مشخص انتخاب کند. ( I0c944 )
  • سازنده‌ی WindowSizeClass را باز کنید تا نقاط توقف سفارشی اضافه شوند. ( Ic1ff3 )
  • تابع راحتی برای ایجاد کلاس اندازه از عرض، ارتفاع و چگالی اضافه کنید. ( If67f4 )

رفع اشکالات

  • رفع خطا هنگام کوتاه شدن مقدار اعشاری به 0. ( 272ffac )

نسخه ۱.۳.۰-آلفا۰۱

۱۵ نوامبر ۲۰۲۳

androidx.window:window-*:1.3.0-alpha01 منتشر شد. نسخه 1.3.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • APIهای پنجره آزمایشی را برای دسترسی به صفحه نمایش پشتی ارائه دهید.
  • APIهای آزمایشی برای ایجاد FoldingFeature اکنون پایدار شده‌اند.
  • APIهای آزمایشی برای تنظیم مقادیر جعلی ActivityEmbedding اکنون پایدار هستند.
  • WindowLayoutInfoPublisherRule اکنون هنگام دریافت مقداری از UiContext مقدار لغو شده را گزارش می‌دهد.
  • WindowInfoTracker داده‌های ویژگی‌های تاخوردگی را به پارامترهای UiContext گزارش می‌دهد.
  • نسخه افزونه‌ها را روی دستگاه نمایش دهید.
  • ثابت‌های WindowProperties برای لغو کاربر به ازای هر برنامه:
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE — به سیستم اطلاع می‌دهد که برنامه از لغو سازگاری نسبت ابعاد کاربرپسند انصراف داده است.
    • PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_FULLSCREEN_OVERRIDE — به سیستم اطلاع می‌دهد که برنامه از گزینه تمام صفحه تنظیمات لغو سازگاری نسبت ابعاد کاربر انصراف داده است.

نسخه ۱.۲

نسخه ۱.۲.۰

۱۵ نوامبر ۲۰۲۳

androidx.window:window-*:1.2.0 منتشر شد. نسخه ۱.۲.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۱.۰

  • APIهای پنجره آزمایشی را برای دسترسی به صفحه نمایش پشتی ارائه دهید.
  • APIهای آزمایشی برای ایجاد FoldingFeature اکنون پایدار شده‌اند.
  • APIهای آزمایشی برای تنظیم مقادیر جعلی ActivityEmbedding اکنون پایدار هستند.
  • WindowLayoutInfoPublisherRule اکنون هنگام دریافت مقداری از UiContext مقدار لغو شده را گزارش می‌دهد.
  • WindowInfoTracker داده‌های ویژگی‌های تاخوردگی را به پارامترهای UiContext گزارش می‌دهد.
  • نسخه افزونه‌ها را روی دستگاه نمایش دهید.

نسخه ۱.۲.۰-rc01

۱ نوامبر ۲۰۲۳

androidx.window:window-*:1.2.0-rc01 منتشر شد. نسخه 1.2.0-rc01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • APIهای پنجره آزمایشی را برای دسترسی به صفحه نمایش پشتی ارائه دهید.
  • APIهای آزمایشی برای ایجاد FoldingFeature اکنون پایدار شده‌اند.
  • APIهای آزمایشی برای تنظیم مقادیر جعلی ActivityEmbedding اکنون پایدار هستند.
  • WindowLayoutInfoPublisherRule اکنون هنگام دریافت مقداری از UiContext مقدار لغو شده را گزارش می‌دهد.
  • WindowInfoTracker داده‌های ویژگی‌های تاخوردگی را به پارامترهای UiContext گزارش می‌دهد.
  • نسخه افزونه‌ها را روی دستگاه نمایش دهید.

نسخه ۱.۲.۰-بتا۰۴

۱۸ اکتبر ۲۰۲۳

androidx.window:window-*:1.2.0-beta04 منتشر شد. نسخه 1.2.0-beta04 شامل این کامیت‌ها است.

تغییرات API

نسخه ۱.۲.۰-بتا۰۳

۲۰ سپتامبر ۲۰۲۳

androidx.window:window-*:1.2.0-beta03 منتشر شد. نسخه 1.2.0-beta03 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • بررسی‌های RequiresApi را برای APIهایی که برای عملکرد صحیح به نسخه خاصی از افزونه‌ها نیاز دارند، اضافه کنید.
  • یک API اضافه کنید تا نسخه افزونه‌ها روی دستگاه نمایش داده شود.

تغییرات API

  • نسخه افزونه SDK پنجره مورد نیاز را روی APIهای عمومی حاشیه‌نویسی کنید.
    • isXXXSupported در کامپوننت Activity Embedding حذف کنید. ( Ie3dae )
  • برای گزارش نسخه افزونه روی دستگاه WindowSdkExtensions را معرفی کنید.
    • برای حاشیه‌نویسی حداقل نسخه افزونه مورد نیاز، RequiresWindowSdkExtension را معرفی کنید. ( I05fd4 )
  • ( I17048 )‎ ‎باعث می‌شود WindowAreaInfo#getCapability غیرقابل تهی‌سازی شود.

نسخه ۱.۲.۰-بتا۰۱

۲۶ ژوئیه ۲۰۲۳

androidx.window:window-*:1.2.0-beta01 منتشر شد. نسخه 1.2.0-beta01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • APIهای پنجره آزمایشی را برای دسترسی به صفحه نمایش پشتی ارائه دهید.
  • APIهای آزمایشی برای ایجاد FoldingFeature اکنون پایدار شده‌اند.
  • APIهای آزمایشی برای تنظیم مقادیر جعلی ActivityEmbedding اکنون پایدار هستند.
  • WindowLayoutInfoPublisherRule اکنون هنگام دریافت مقداری از UiContext مقدار لغو شده را گزارش می‌دهد.
  • WindowInfoTracker داده‌های ویژگی‌های تاخوردگی را به پارامترهای UiContext گزارش می‌دهد.

تغییرات API

  • APIهای WindowArea را به عنوان آزمایشی علامت‌گذاری می‌کند تا تغییرات API برای انتشار پایدار در نسخه ۱.۳ ( I857f5 ) ادامه یابد.
  • فایل‌های API به‌روزرسانی شدند تا حاشیه‌نویسی مربوط به سرکوب سازگاری ( I8e87a ، b/287516207 ) انجام شود.

نسخه ۱.۲.۰-آلفا۰۳

۲۱ ژوئن ۲۰۲۳

androidx.window:window-*:1.2.0-alpha03 منتشر شد. نسخه 1.2.0-alpha03 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • حذف API های منسوخ شده از سطح API.
  • اضافه کردن APIها برای پشتیبانی از نمایش‌های همزمان.
  • یک ویژگی اضافه کنید تا از لغو تغییر اندازه اجباری جلوگیری شود.
  • برای لغو حداقل نسبت ابعاد، ویژگی اضافه کنید.
  • برای پشتیبانی از تست واحد پیرامون تعبیه فعالیت، ActivityEmbeddingRule پایدار کنید.

تغییرات API

  • حذف API های منسوخ شده ( I18d39 )
  • پشتیبانی از نمایش‌های همزمان را اضافه کنید. ( Ifcbb0 )

رفع اشکالات

  • افزودن ویژگی compat با قابلیت عدم پذیرش برای لغو تغییر اندازه اجباری ( Ie7ab1 )
  • SESSION_STATE_CONTENT_INVISIBLE را از رابط افزونه‌ها حذف می‌کند. ( I6ed19 )
  • برای پشتیبانی از تست واحد پیرامون تعبیه Activity، ActivityEmbeddingRule را پایدار کنید. ( I8d6b6 )
  • افزودن ویژگی compat با قابلیت عدم انتخاب برای لغو حداقل نسبت ابعاد ( I66390 )
  • APIهای منسوخ‌شده‌ی WindowArea ( Ieb67c ) را حذف می‌کند.
  • نام ویژگی حلقه درخواست جهت‌یابی را به PROPERTY_COMPAT_ALLOW_IGNORING_ORIENTATION_REQUEST_WHEN_LOOP_DETECTED تغییر دهید. ( Ie2fbd )
  • نام‌های ثابت جلسه ناحیه پنجره را به‌روزرسانی می‌کند ( I83675 )
  • افزودن ویژگی compat با قابلیت عدم پذیرش که حلقه درخواست جهت‌یابی را هنگام شناسایی نادیده می‌گیرد ( I0a7a2 )
  • برای نشان دادن اینکه این ویژگی از قبل فعال است، WindowAreaComponent#STATUS_ACTIVE را اضافه کنید. ( I62bc3 )
  • API های RearDisplayPresentationMode ( I0401c ) را اضافه کنید
  • حذف API رنگ پس‌زمینه برای نسخه پایدار ( I34c3e )
  • API های مخفی کردن ناحیه پنجره ( I39de0 )
  • متدهایی برای لغو SplitInfo در SplitController اضافه کنید. متدهای آزمایشی برای ایجاد double برای SplitInfo و ActivityStack اضافه کنید. ( Icd69f )
  • تگ ActivityRule.Builder را اختیاری کنید. ( Ib0b44 )
  • RatioSplitType ، ExpandContainersSplit و HingeSplitType را حذف کنید. آنها اکنون SplitType هستند.
    • #splitEqually() ‎، #expandContainers() ‎ و #splitByHinge را با مقدار ثابت SplitType SPLIT_TYPE_EQUAL ، SPLIT_TYPE_EXPAND و SPLIT_TYPE_HINGE جایگزین کنید.
    • قابلیت تنظیم نوع جایگزین برای نوع تقسیم لولا را حذف کنید. اگر نوع تقسیم لولا به دلیل وضعیت فعلی دستگاه یا پنجره قابل اعمال نباشد، به صورت جایگزین عمل می‌کند تا کانتینر وظیفه والد را به طور مساوی تقسیم کند. برای سفارشی‌سازی نوع تقسیم جایگزین SplitController#setSplitAttributesCalculator استفاده کنید. ( Ifcc59 )
  • منسوخ کردن add / removeSplitCallback
    • تابع add / removeSplitCallback را به SplitControllerCallbackAdapter منتقل کنید.
    • اضافه کردن پشتیبانی Flow برای دریافت لیست SplitInfo ( I7f1b6 )
  • یک قانون آزمایشی برای ActivityEmbeddingController ( I42e9b ) اضافه کنید
  • تغییر نام ActivityOptionsCompat به ActivityEmbeddingOptions ( I89301 )
  • برای نشان دادن اینکه آیا تعبیه فعالیت (Activity embedding) در دسترس است یا خیر، splitSupportStatus را اضافه کنید ( I10024 )
  • برای نمایش بهتر مقدار DEFAULT SplitAttributes.BackgroundColor معرفی کنید. توضیح دهید که رنگ پس‌زمینه انیمیشن غیرمات پشتیبانی نمی‌شود، بنابراین هر رنگ غیرماتی به عنوان پیش‌فرض در نظر گرفته می‌شود، به این معنی که از رنگ پس‌زمینه پنجره تم فعلی استفاده شود. ( Ic6b95 )
  • alwaysAllow() ‎ و alwaysDisallow() ‎ را با ALWAYS_ALLOW ‎ و ALWAYS_DISALLOW ‎ جایگزین کنید. ( I3057b )
  • APIهایی برای SplitRule ، SplitAttributes ، SplitAttributesCalculator اضافه کنید. ( I92d23 )
  • اضافه کردن TestActivityStack برای ایجاد ActivityStack جهت تست
    • برای ایجاد SplitInfo جهت آزمایش، TestSplitInfo اضافه کنید. ( I8e779 )
  • راهی برای ایجاد SplitAttributesCalculatorParams جعلی اضافه کنید تا توسعه‌دهندگان بتوانند SplitAttributesCalculator سفارشی‌شده خود را تأیید کنند ( Id4a6e )
  • WindowMetricsCalculator#computeCurrentWindowMetrics(@UiContext context: Context) و WindowMetricsCalculator#computeMaximumWindowMetrics(@UiContext context: Context) را اضافه کنید ( I66c7f )

نسخه ۱.۲.۰-آلفا۰۲

۷ ژوئن ۲۰۲۳

androidx.window:window-*:1.2.0-alpha02 منتشر شد. نسخه 1.2.0-alpha02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • API تست را به‌روزرسانی کنید تا برای ویژگی‌های تاخوردگی نامشخص، ثابتی داشته باشد.
  • بازنویسی با WindowLayoutInfoPublishRule تمام مقادیر windowLayoutInfo ، از جمله API مبتنی بر Context را بازنویسی می‌کند.

تغییرات API

  • برای ویژگی تا شدن از مرکز که مشخص نشده، ثابت اضافه کنید. ( I7530c )

رفع اشکالات

  • WindowLayoutInfoPublishRule برای پشتیبانی از لغو WindowLayoutInfo مبتنی بر Context به‌روزرسانی کنید. ( I2037a )

نسخه ۱.۲.۰-آلفا۰۱

۲۴ مه ۲۰۲۳

androidx.window:window-*:1.2.0-alpha01 منتشر شد. نسخه 1.2.0-alpha01 شامل این کامیت‌ها است.

ویژگی‌های جدید

APIهای تست پیرامون Activity Embedding و WindowLayoutInfoTracker را پایدار کنید. ActivityEmbeddingRule به پایدار ارتقا یافته است. WindowMetricsCalculatorRule به پایدار ارتقا یافته است. توابع کمکی برای ایجاد FoldingFeature برای تست به پایدار ارتقا یافته‌اند.

تغییرات API

  • برای پشتیبانی از تست واحد پیرامون تعبیه Activity، ActivityEmbeddingRule را پایدار کنید. ( I8d6b6 )
  • WindowMetrisCalculatorTestRule پایدار است و معیارهای خرد را برای تست‌های JVM مجاز می‌داند. برای نتایج دقیق، استفاده از یک شبیه‌ساز را توصیه می‌کنیم.
  • APIهای تست برای WindowLayoutInfo را برای پشتیبانی از تست JVM تثبیت کنید. ( Ie036e )
  • برای مقادیر ویژگی تاشو تست، IntRange اضافه کنید. ( I69f7d )

نسخه ۱.۱

نسخه ۱.۱.۰

۷ ژوئن ۲۰۲۳

androidx.window:window-*:1.1.0 منتشر شد. نسخه ۱.۱.۰ شامل این کامیت‌ها است.

تغییرات مهم از زمان ۱.۰.۰

جاسازی فعالیت

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED به عنوان یک ویژگی بولی از تگ <application> در مانیفست برنامه اضافه شد.
  • isSplitSupported منسوخ شده و با splitSupportStatus جایگزین شده است تا اطلاعات دقیق‌تری در مورد دلیل عدم دسترسی به ویژگی تقسیم ارائه دهد.
  • کلاس تودرتوی SplitController.SplitSupportStatus برای ارائه ثابت‌های حالت برای ویژگی splitSupportStatus اضافه شد.
  • SplitController به چندین ماژول بازسازی شد:
    • ماژول ActivityEmbeddingController برای API های مرتبط با Activity یا ActivityStack .
    • isActivityEmbedded از SplitController به ActivityEmbeddingController منتقل شد.
    • ماژول RuleController برای عملیات مرتبط با EmbeddingRule :
    • API های SplitController حذف شدند:
    • clearRegisteredRules()
    • getSplitRules()
    • initialize()
    • registerRule()
    • unregisterRule()
    • APIهای RuleController اضافه شده:
    • addRule() - یک قانون اضافه می‌کند یا قانونی را که برچسب یکسانی دارد، به‌روزرسانی می‌کند.
    • removeRule() — یک قانون را از مجموعه قوانین ثبت‌شده حذف می‌کند.
    • setRules() — مجموعه‌ای از قوانین را ایجاد می‌کند.
    • clearRules() — تمام قوانین ثبت‌شده را حذف می‌کند.
    • parseRules() — قواعد را از تعاریف قواعد XML تجزیه می‌کند.
  • همه ماژول‌ها نیاز به یک context دارند که باید توسط متد #getInstance() مقداردهی اولیه شود، از جمله:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • کلاس EmbeddingAspectRatio برای تعریف ثابت‌های رفتاری شمارشی مربوط به نسبت ابعاد نمایشگر اضافه شد.
  • کلاس SplitAttributes برای تعریف طرح‌بندی تقسیم‌بندی‌شده اضافه شد.
  • توابع محاسبه‌گر SplitAttributes به SplitController اضافه شد تا طرح‌بندی‌های تقسیم‌بندی‌شده را سفارشی‌سازی کند:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() بررسی می‌کند که آیا APIهای SplitAttributesCalculator در دستگاه پشتیبانی می‌شوند یا خیر.
  • فیلد EmbeddingRule#tag اضافه شد.
  • به‌روزرسانی‌های API در SplitRule :
    • defaultSplitAttributes اضافه شد — طرح‌بندی تقسیم‌بندی پیش‌فرض یک تقسیم‌بندی را تعریف می‌کند؛ جایگزین splitRatio و layoutDirection می‌شود.
    • ترجمه ویژگی‌های XML به نام‌های splitRatio و splitLayoutDirection به defaultSplitAttributes اضافه شد.
    • تعاریف حداقل ابعاد تغییر کرد تا به جای پیکسل‌ها از پیکسل‌های مستقل از چگالی (dp) استفاده شود.
    • minHeightDp با مقدار پیش‌فرض ۶۰۰dp اضافه شد.
    • minWidth به minWidthDp با مقدار پیش‌فرض ۶۰۰dp تغییر یافت.
    • minSmallestWidth به minSmallestWidthDp با مقدار پیش‌فرض ۶۰۰dp تغییر یافت.
    • maxAspectRatioInHorizontal با مقدار پیش‌فرض ALWAYS_ALLOW اضافه شد.
    • maxAspectRatioInPortrait با مقدار پیش‌فرض ۱.۴ اضافه شد.
    • کلاس تودرتوی FinishBehavior برای جایگزینی ثابت‌های رفتار پایان تعریف شده است.
    • تغییرات ویژگی را در کلاس تودرتوی Builder از SplitPairRule و SplitPlaceholderRule اعمال کرد.
  • برای ارائه اطلاعات بیشتر مربوط به تقسیم‌بندی، SplitInfo#getSplitRatio() با SplitInfo#getSplitAttributes() جایگزین شد.

طرح‌بندی پنجره

  • پشتیبانی آزمایشی از زمینه رابط کاربری غیرفعال به WindowInfoTracker اضافه شد.
  • زمینه رابط کاربری غیرفعال آزمایشی به WindowMetricsCalculator اضافه شد.

مراحل مهاجرت

  • برای فعال کردن تعبیه فعالیت برای نمایش فعالیت‌ها در بخش‌های جداگانه، برنامه‌ها باید ویژگی PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED را به تگ <application> مانیفست اضافه کنند: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> این به سیستم اجازه می‌دهد تا رفتارهای تقسیم‌بندی را برای یک برنامه از قبل بهینه کند.
  • نسبت SplitInfo
    • بررسی کنید که آیا تقسیم فعلی انباشته شده است یا خیر: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • نسبت فعلی را بررسی کنید: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • مهاجرت‌های SplitController:
    • SplitController.getInstance() به SplitController.getInstance(Context) تغییر می‌کند.
    • SplitController.initialize(Context, @ResId int) به RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) تغییر می‌کند.
    • SplitController.getInstance().isActivityEmbedded(Activity) به ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) تغییر می‌کند.
    • SplitController.getInstance().registerRule(rule) به RuleController.getInstance(Context).addRule(rule) تغییر می‌کند.
    • SplitController.getInstance().unregisterRule(rule) به RuleController.getInstance(Context).removeRule(rule) تغییر می‌کند.
    • SplitController.getInstance().clearRegisteredRules() به RuleController.getInstance(Context).clearRules() تغییر می‌کند.
    • SplitController.getInstance().getSplitRules() به RuleController.getInstance(Context).getRules() تبدیل می‌شود.
  • مهاجرت‌های ویژگی SplitRule :
    • minWidth و minSmallestWidth اکنون به جای پیکسل از واحدهای dp استفاده می‌کنند. برنامه‌ها می‌توانند از فراخوانی زیر استفاده کنند: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) یا به سادگی minWith بر حسب پیکسل بر displayMetrics#density تقسیم کنید.
  • ثابت‌های رفتار Finish باید به ثابت‌های کلاس enum-like FinishBehavior منتقل شوند:
    • FINISH_NEVER به FinishBehavior.NEVER تغییر می‌کند.
    • FINISH_ALWAYS به FinishBehavior.ALWAYS تغییر می‌کند.
    • FINISH_ADJACENT به FinishBehavior.ADJACENT تغییر می‌کند.
  • جهت طرح‌بندی باید به SplitAttributes.LayoutDirection منتقل شود:
    • ltr به SplitAttributes.LayoutDirection.LEFT_TO_RIGHT تغییر می‌کند.
    • rtl به SplitAttributes.LayoutDirection.RIGHT_TO_LEFT تغییر می‌کند.
    • تغییر locale به SplitAttributes.LayoutDirection.LOCALE .
    • splitRatio باید به SplitAttributes.SplitType.ratio(splitRatio) منتقل شود.
  • مهاجرت‌های SplitPairRule.Builder :
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) به kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • تغییرات setLayoutDirection(layoutDirection) و setSplitRatio(ratio) در kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary و setFinishSecondaryWithPrimary ثابت‌های شمارشی FinishBehavior را می‌گیرند. برای جزئیات بیشتر به «انتقال‌های SplitRule» مراجعه کنید.
    • برای نمایش تقسیم‌بندی‌ها در دستگاه‌های عمودی، از setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) استفاده کنید.
  • مهاجرت‌های SplitPlaceholder.Builder :
    • فقط پارامترهای filters و placeholderIntent دارد. سایر ویژگی‌ها به setterها منتقل می‌شوند. برای جزئیات بیشتر به «SplitPairRule.Builder migrations» مراجعه کنید.
    • تابع setFinishPrimaryWithPlaceholder ثابت‌های enum-مانند FinishBehavior را می‌گیرد. برای جزئیات بیشتر به بخش «انتقال‌های SplitRule» مراجعه کنید.
    • setLayoutDirection(layoutDirection) ‎ و setSplitRatio(ratio) ‎ به صورت زیر تغییر می‌کنند: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • برای نمایش تقسیم‌بندی‌ها در دستگاه‌های عمودی، از setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) استفاده کنید.

نسخه ۱.۱.۰-rc01

۱۰ مه ۲۰۲۳

androidx.window:window-*:1.1.0-rc01 منتشر شد. نسخه 1.1.0-rc01 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • ActivityEmbedding به عنوان یک API پایدار منتشر کنید.
  • رفع اشکالات مختلف.

نسخه ۱.۱.۰-بتا۰۲

۵ آوریل ۲۰۲۳

androidx.window:window-*:1.1.0-beta02 منتشر شد. نسخه 1.1.0-beta02 شامل این کامیت‌ها است.

ویژگی‌های جدید

  • اصلاحات داخلی و پاکسازی.

نسخه ۱.۱.۰-بتا۰۱

۲۲ مارس ۲۰۲۳

androidx.window:window-*:1.1.0-beta01 منتشر شد. نسخه 1.1.0-beta01 شامل این کامیت‌ها است.

جاسازی فعالیت

  • PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED به عنوان یک ویژگی بولی از تگ <application> در مانیفست برنامه اضافه شد.
  • isSplitSupported منسوخ شده و با splitSupportStatus جایگزین شده است تا اطلاعات دقیق‌تری در مورد دلیل عدم دسترسی به ویژگی تقسیم ارائه دهد.
  • کلاس تودرتوی SplitController.SplitSupportStatus برای ارائه ثابت‌های حالت برای ویژگی splitSupportStatus اضافه شد.
  • SplitController به چندین ماژول بازسازی شد:
    • ماژول ActivityEmbeddingController برای API های مرتبط با Activity یا ActivityStack .
    • isActivityEmbedded از SplitController به ActivityEmbeddingController منتقل شد.
    • ماژول RuleController برای عملیات مرتبط با EmbeddingRule :
    • API های SplitController حذف شدند:
      • clearRegisteredRules()
      • getSplitRules()
      • initialize()
      • registerRule()
      • unregisterRule()
    • APIهای RuleController اضافه شده:
      • addRule() - یک قانون اضافه می‌کند یا قانونی را که برچسب یکسانی دارد، به‌روزرسانی می‌کند.
      • removeRule() — یک قانون را از مجموعه قوانین ثبت‌شده حذف می‌کند.
      • setRules() — مجموعه‌ای از قوانین را ایجاد می‌کند.
      • clearRules() — Removes all registered rules.
      • `parseRules() — Parses rules from XML rule definitions.
  • All modules require a context to be initialized by #getInstance() method, including:
    • ActivityEmbeddingController#getInstance(Context)
    • SplitController#getInstance(Context)
    • RuleController#getInstance(Context)
  • Added the EmbeddingAspectRatio class to define enum-like behavior constants related to display aspect ratio.
  • Added the SplitAttributes class to define the split layout.
  • Added SplitAttributes calculator functions to SplitController to customize split layouts:
    • setSplitAttributesCalculator(Function)
    • clearSplitAttributesCalculator()
    • isSplitAttributesCalculatorSupported() to check if the SplitAttributesCalculator APIs are supported on the device
  • Added EmbeddingRule#tag field.
  • API updates in SplitRule :
    • Added defaultSplitAttributes — Defines the default split layout of a split; replaces splitRatio and layoutDirection .
    • Added translation of the XML properties splitRatio and splitLayoutDirection to defaultSplitAttributes .
    • Changed minimum dimension definitions to use density-independent pixels (dp) instead of pixels.
    • Added minHeightDp with default value 600dp.
    • Changed minWidth to minWidthDp with default value 600dp.
    • Changed minSmallestWidth to minSmallestWidthDp with default value 600dp.
    • Added maxAspectRatioInHorizontal with default value ALWAYS_ALLOW .
    • Added maxAspectRatioInPortrait with default value 1.4 .
    • Defined FinishBehavior nested class to replace finish behavior constants.
    • Applied the property changes to the Builder nested class of SplitPairRule and SplitPlaceholderRule .
  • Replaced SplitInfo#getSplitRatio() with SplitInfo#getSplitAttributes() to provide additional split-related information.

WindowLayout

  • Added non-activity UI context support to WindowInfoTracker .
  • Added non-activity UI context to WindowMetricsCalculator .

Migration Steps

  • To enable activity embedding to display activities in splits, apps must add the PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED property to the manifest <application> tag: xml <property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" /> This allows the system to optimize the split behaviors for an application ahead of time.
  • SplitInfo ratio
    • Check if the current split is stacked: kotlin SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
    • Check the current ratio: kotlin if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
  • SplitController migrations:
    • SplitController.getInstance() changes to SplitController.getInstance(Context) .
    • SplitController.initialize(Context, @ResId int) changes to RuleController.getInstance(Context).setRules(RuleController.parse(Context, @ResId int)) .
    • SplitController.getInstance().isActivityEmbedded(Activity) changes to ActivityEmbeddingController.getInstance(Context).isActivityEmbedded(Activity) .
    • SplitController.getInstance().registerRule(rule) changes to RuleController.getInstance(Context).addRule(rule) .
    • SplitController.getInstance().unregisterRule(rule) changes to RuleController.getInstance(Context).removeRule(rule) .
    • SplitController.getInstance().clearRegisteredRules() changes to RuleController.getInstance(Context).clearRules() .
    • SplitController.getInstance().getSplitRules() changes to RuleController.getInstance(Context).getRules() .
  • SplitRule property migrations:
    • minWidth and minSmallestWidth now use dp units instead of pixels. Apps can use the following call: kotlin TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics ) or simply divide minWith in pixels by displayMetrics#density .
  • Finish behavior constants must be migrated to FinishBehavior enum-like class constants:
    • FINISH_NEVER changes to FinishBehavior.NEVER .
    • FINISH_ALWAYS changes to FinishBehavior.ALWAYS .
    • FINISH_ADJACENT changes to FinishBehavior.ADJACENT .
  • Layout direction must be migrated to SplitAttributes.LayoutDirection :
    • ltr changes to SplitAttributes.LayoutDirection.LEFT_TO_RIGHT .
    • rtl changes to SplitAttributes.LayoutDirection.RIGHT_TO_LEFT .
    • locale changes to SplitAttributes.LayoutDirection.LOCALE .
    • splitRatio must be migrated to SplitAttributes.SplitType.ratio(splitRatio) .
  • SplitPairRule.Builder migrations:
    • SplitPairRule.Builder(filters, minWidth, minSmallestWidth) changes to kotlin SplitPairRule.Builder(filters) .setMinWidthDp(minWidthInDp) // Optional if minWidthInDp is 600. .setMinSmallestWidthDp(minSmallestWidthDp) // Optional if minSmallestWidthInDp is 600.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • setFinishPrimaryWithSecondary and setFinishSecondaryWithPrimary take the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.
  • SplitPlaceholder.Builder migrations:
    • Has only filters and placeholderIntent parameters. Other properties move to setters. See “SplitPairRule.Builder migrations” for details.
    • setFinishPrimaryWithPlaceholder takes the FinishBehavior enum-like constants. See “SplitRule migrations” for details.
    • setLayoutDirection(layoutDirection) and setSplitRatio(ratio) change to: kotlin setDefaultSplitAttributes( SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
    • Use setMaxAspectRatioInPortrait(EmbeddingAspectRatio.ALWAYS_ALLOW) to show splits on portrait devices.

Version 1.1.0-alpha06

February 22, 2023

androidx.window:window-*:1.1.0-alpha06 is released. Version 1.1.0-alpha06 contains these commits.

ویژگی‌های جدید

  • Expose experimental version of getting the WindowLayoutInfo from a UI context.

API Changes

  • Add splitSupportStatus to indicate if Activity embedding is available. ( I10024 )
  • Make UI Context WindowLayoutInfo API as experimental. ( I58ee0 )
  • Introduces the WindowAreaController and API's to enable RearDisplay Mode to move the current window to the display that is aligned with the rear camera. ( Iffcbf )
  • Update default background color. ( I1ac1b )
  • Add SplitAttributes params. ( I18bdd )
  • Add APIs for SplitRule , SplitAttributes , SplitAttributesCalculator . ( I92d23 )
  • Improve the APIs around maxAspectRatio :
    1. Replace alwaysAllow() and alwaysDisallow() with ALWAYS_ALLOW and ALWAYS_DISALLOW .
    2. Update API documentation of @see with standalone documentation. ( I3057b )
  • The following constructors are removed from public APIs because they are not supposed to be called by apps.
    • SplitInfo constructor
    • ActivityStack constructor ( Ide534 )
  • SplitRule now takes maxAspectRatioInPortrait/Landscape . It only allows activities split when the aspect ratio of the parent bounds is smaller or equal to the requested maxAspectRatio . ( Ia5990 )
  • Change RuleController#parseRules to be static ( I785df )
  • Improve the APIs around ActivityEmbedding
    1. Align the API naming - Use add/remove for multiple instances:
    2. registerRule changes to addRule
    3. unregisterRule changes to removeRule
    4. Replace getSplitRules with getRules since ActivityRule is not a split rule
    5. Add RuleController#setRules to set a bunch of rules
    6. Extract rule related APIs from SplitController to singleton RuleController . They are:
    7. addRule
    8. removeRule
    9. getRules
    10. setRules
    11. clearRules
    12. parseRules
    13. Extract #isActivityEmbedded from SplitController to singleton ActivityEmbeddingController . They are:
    14. isActivityEmbedded
    15. Remove SplitController#initialize . To set rules from XML file, please use RuleController#parseRules and #setRules . Before this change: SplitController.initialize(context, R.xml.static_rules) After this change: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules)
    16. We don't distinguish static rules with runtime rules anymore. That said, calling #clearRules results to clear all rules no matter they are registered with static XML rule definitions or at runtime. To hav the legacy behavior of SplitController#clearRegisteredRules , please call RuleController#parseRules with the XML resources id and call RuleController#setRules to set back the rules again. Before this change: SplitController.getInstance(context).clearRegisteredRules() After this change: val ruleController = RuleController.getInstance(context) val rules = ruleController.parseRules(R.xml.static_rules) ruleController.setRules(rules) ( Ib3967 )
  • Improve the SplitRule APIs:
    1. Take min dimensions in DP instead of pixels for SplitRule .
    2. Refactor for SplitRule Builder to take min dimensions as optional. ( I95f17 )
  • Pass a Context to initialize SplitController ( I42549 )
  • Renamed SplitRule#layoutDir to #layoutDirection and SplitRule Builder#setLayoutDir to Builder#setLayoutDirection . ( I3f6d1 )

Version 1.1.0-alpha04

۹ نوامبر ۲۰۲۲

androidx.window:window-*:1.1.0-alpha04 is released. Version 1.1.0-alpha04 contains these commits.

ویژگی‌های جدید

  • Expose a method to determine if an ActivityStack is empty for ActivityEmbedding .
  • Removed experimental API tags from ActivityEmbedding APIs.
  • Hide ActivityRule constructor as the Builder is the preferred way to construct.
  • Add an experimental method to get the WindowInsets on WindowMetrics .
  • Update SplitPlaceholderFinishBehavior to prevent finishing the placeholder. Finishing the placeholder caused some confusing behavior.

API Changes

  • Make val isEmpty public to replace fun isEmpty .
  • Rename ActivityStack parameter activities to activitiesInProcess . ( Ia5055 )
  • Remove ActivityFilter#matchesClassName and ActivityFilter#matchesClassNameOrWildCard because they are confusing.
  • Add ActivityFilter#componentName abd ActivityFilter#intentAction to allow the caller to distinguish different filters ( I41f22 )
  • Remove the @Deprecated APIs from the experimental API ( I216b3 )
  • Remove @ExperimentalWindowApi for Activity Embedding APIs ( I69ebe )
  • Hide ActivityRule constructor, use Builder instead. ( If4eb6 )
  • Add APIs to check if an Activity is part of the ActivityFilter . ( Ia43cf )
  • Update API files to reflect changes in WindowMetrics and WindowMetricsCalculatorCompat classes ( I667fe )
  • Update ActivityEmbedding Property Javadoc and class name ( Ia1386 )
  • Adding ActivityEmbedding property tag names to be used in AndroidManifest.xml ( Id1ad4 )
  • Added new API SplitPlaceholderFinishBehavior and SplitPlaceholderRule.finishPrimaryWithPlaceholder , this replaces existing SplitPlaceholderRule.finishPrimaryWithSecondary which defines when placeholder activites are finished, how associated activites in Activity Embedding should behave. ( I64647 )

رفع اشکالات

  • Introduces the WindowAreaController and API's to enable RearDisplay Mode to move the current window to the display that is aligned with the rear camera. ( I388ab )

Version 1.1.0-alpha03

July 27, 2022

androidx.window:window-*:1.1.0-alpha03 is released. Version 1.1.0-alpha03 contains these commits.

ویژگی‌های جدید

  • Update the default values for embedding rules.

API Changes

  • Update default values for embedding rule properties. ( Ic4d35 )

Version 1.1.0-alpha02

۱۱ مه ۲۰۲۲

androidx.window:window-*:1.1.0-alpha02 is released. Version 1.1.0-alpha02 contains these commits.

ویژگی‌های جدید

  • Release the adapter libraries to support Java and RxJava.

Version 1.1.0-alpha01

۱۱ مه ۲۰۲۲

androidx.window:window-*:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

ویژگی‌های جدید

  • Release adapters to support java and RxJava

Version 1.1.0-alpha01

April 20, 2022

androidx.window:window:1.1.0-alpha01 is released. Version 1.1.0-alpha01 contains these commits.

ویژگی‌های جدید

  • Fixes a bug where backgrounding an app stops emitting fold features.
  • Expand on the experimental ActivityEmbedding API.

API Changes

  • A public API to check if an activity is being embedded. ( I39eb7 )

رفع اشکالات

  • Add APIs that customize finishing behavior for containers in activity splits ( I1a1e4 )
  • Added a new configuration option for activity split rules. ( Iec6af )

نسخه ۱.۰

نسخه ۱.۰.۰

January 26, 2022

androidx.window:window-*:1.0.0 is released. Version 1.0.0 contains these commits.

Major features of 1.0.0

  • Support for folding phones through WindowInfoTracker and FoldingFeature . WindowMetricsCalculator to help calculate the current WindowMetrics.

Version 1.0.0-rc01

۱۵ دسامبر ۲۰۲۱

androidx.window:window-*:1.0.0-rc01 is released. Version 1.0.0-rc01 contains these commits.

ویژگی‌های جدید

  • Add support for folding phones through WindowInfoTracker .
  • Add methods to calculate the current and maximum WindowMetrics .
  • Add supporting test APIs.

Version 1.0.0-beta04

November 17, 2021

androidx.window:window-*:1.0.0-beta04 is released. Version 1.0.0-beta04 contains these commits.

ویژگی‌های جدید

  • Rename WindowInfoRepository to WindowInfoTracker.
  • Make Activity an explicit method dependency for WindowInfoTracker.
  • Add a simple TestRule for WindowMetricsCalculator to support developers using Robolectric.

API Changes

  • Extract extensions ( I25a5f )
  • add isEmpty in ActivityStack ( I5a4e6 )
  • Rename WindowInfoRepository to WindowInfoTracker.
    • Update java/rxjava/testing dependencies to match. ( I0da63 )
  • Add a test rule for a simple WindowMetricsCalculator. ( Ibacdb )

Version 1.0.0-beta03

۲۷ اکتبر ۲۰۲۱

androidx.window:window-*:1.0.0-beta03 is released. Version 1.0.0-beta03 contains these commits.

ویژگی‌های جدید

  • Add experimental Activity Embedding APIs. This initial layout version allows showing two Activities side by side.

API Changes

  • Removed the currentWindowMetrics API since we can not provide it accurately. Please use WindowMetricsCalculator instead ( Icda5f )
  • Updated the extensions api. ( Ica92b )
  • Added an interface for a new feature that allows embedding activities and showing them side-by-side within the parent task window. ( I5711d )
  • Hid the constructors for WindowMetrics and WindowLayoutInfo, please use the test APIs instead. ( I5a1b5 )
  • Add an API to create fake WindowLayoutInfo objects. ( I4a2fd )

رفع اشکالات

Version 1.0.0-beta02

September 1, 2021

androidx.window:window-*:1.0.0-beta02 is released. Version 1.0.0-beta02 contains these commits.

ویژگی‌های جدید

  • Add an experimental annotation to annotate experimental APIs. ( I9f1b6 )
  • Add a test method to create a test FoldingFeature that accepts a Rect. This will make it easie to test when using Robolectric as opposed to an actual Activity. ( Id1cca )

Version 1.0.0-beta01

۱۸ آگوست ۲۰۲۱

androidx.window:window-*:1.0.0-beta01 is released. Version 1.0.0-beta01 contains these commits.

ویژگی‌های جدید

  • Removed old constants and made FoldingFeature into an interface.

API Changes

  • Remove old constants and make FoldFeature an interface. ( I9a2d5 )

رفع اشکالات

  • Libraries that depend on the Test Core library have been upgraded to version 1.4.0 and will now work with Android platform version S. ( I88b72 , b/189353863 )

Version 1.0.0-alpha10

August 4, 2021

androidx.window:window-*:1.0.0-alpha10 is released. Version 1.0.0-alpha10 contains these commits.

ویژگی‌های جدید

  • Rename WindowInfoRepo to WindowInfoRepository and adjust corresponding classes / files.
  • Convert current window metrics to a Flow in WindowInfoRepository since the value changes over time.
  • Rename WindowInfoRepoJavaAdapter to WindowInfoRepoCallbackAdapter
  • Add helper method to create test FoldingFeature objects
  • Update packages to group classes based on the feature they are supporting.

API Changes

  • Rename ActivityExt to ActivityExtensions Change from Repo to Repository. ( I61a16 )
  • Update packages for classes. ( I23ae2 )
  • Remove WindowMetrics from WindowInfoRepo ( I24663 )
  • Remove WindowManager and use WindowInfoRepo
    • Make WindowBackend internal. ( I06d9a )
  • Convert window metrics to Flow.
    • Rename java adapter to WindowInfoRepoCallbackAdapter
    • Remove callbackFlow so no more experimental APIs are in use. ( Ia4d15 )
  • Add helper method to create test display features.
    • Change from occlusionMode to occlusionType ( If4cff )

رفع اشکالات

  • Fix proguard error where core library was being removed.
  • Fix error where WindowLayoutInfo was not being delivered to additional subscribers.
  • Fix error where config changes would not trigger folding feature updates.

Version 1.0.0-alpha09

۳۰ ژوئن ۲۰۲۱

androidx.window:window-*:1.0.0-alpha09 is released. Version 1.0.0-alpha09 contains these commits.

ویژگی‌های جدید

  • Change from integer constants to unbounded enums.
  • Add a test util to create test folding features.

API Changes

  • Add helper method to create test display features. ( I3cf54 )
    • Change from occlusionMode to occlusionType .

رفع اشکالات

  • Emit initial value when adding multiple consumers of the data streams.

Version 1.0.0-alpha08

۱۶ ژوئن ۲۰۲۱

androidx.window:window-*:1.0.0-alpha08 is released. Version 1.0.0-alpha08 contains these commits.

ویژگی‌های جدید

  • Released a testing artifact to make it easier to test when using WindowInfoRepository. Use WindowInfoRepository to get information about DisplayFeatures and the WindowMetrics. ( I57f66 , Ida620 )

Version 1.0.0-alpha07

June 2, 2021

androidx.window:window-*:1.0.0-alpha07 is released. Version 1.0.0-alpha07 contains these commits.

ویژگی‌های جدید

  • Migrate core window library to Kotlin. Will use coroutines and suspend functions to expose asynchronous data going forward.
  • Add WindowInfoRepo as the main interaction point for getting the WindowMetrics and the stream of WindowLayoutInfo.
  • New window-java artifact to expose Java-friendly APIs to register and unregister callbacks.
  • New window-rxjava2 and window-rxjava3 artifacts to expose RxJava adapted APIs.

API Changes

  • Add WindowServices to provide dependencies uniformly.
    • Add coroutine based api to consume window layout info. ( Iab70f )
  • Migrate core window manager library to Kotlin. ( Icca34 )

رفع اشکالات

  • Add new data class to represent feature bounds. ( I6dcd1 )

Version 1.0.0-alpha06

May 5, 2021

androidx.window:window:1.0.0-alpha06 is released. Version 1.0.0-alpha06 contains these commits.

ویژگی‌های جدید

  • We have started our migration to Kotlin and will finish in the next release.
  • DeviceState has been removed from the public API, please use FoldingFeature instead.
  • We have removed STATE_FLIPPED from the FoldingFeature states since it is not supported by any use-case at the moment.
  • We have also removed other deprecated APIs.

API Changes

  • Adding Kotlin as a dependency.
    • Migrate core library to Kotlin. ( Idd995 )
  • Removed DisplayFeature builder. ( I61fa4 )
  • Removed DeviceState from public api, use FoldingFeature instead. ( Id6079 )
  • Remove device state callback from extensions. ( I5ea83 )
  • Remove STATE_FLIPPED from FoldingFeature. ( I9c4e1 )
  • Remove deprecated registration methods. ( Ib381b )

Version 1.0.0-alpha05

March 24, 2021

androidx.window:window:1.0.0-alpha05 is released. Version 1.0.0-alpha05 contains these commits.

ویژگی‌های جدید

We have added convenience methods to FoldingFeature so that apps can tell if the feature is separating, occluding, and determine the orientation of the hinge. We are also hiding the hinge type so that

We are removing the synchronous read methods from WindowManager. Synchronous read methods are error prone since there is an implicit race condition. Register listeners and callbacks to receive updates on the WindowLayoutInfo.

API Changes

  • Add convenience methods for working with FoldingFeatures ( Ie733f )
  • Removes synchronous read methods from WindowManager ( I96fd4 )

Version 1.0.0-alpha04

۱۰ مارس ۲۰۲۱

androidx.window:window:1.0.0-alpha04 is released. Version 1.0.0-alpha04 contains these commits.

ویژگی‌های جدید

  • Fixes a bug where no WindowLayoutInfo is emitted if there isn't an OEM implementation. Now we emit an empty WIndowLayoutInfo.
  • Fix a bug where state would not update properly if the hinge state changed while the app was backgrounded. Now the state should be consistent.
  • Update our proguard files to ignore warnings from runtime dependencies.

رفع اشکالات

  • Emit an empty value when the OEM library is missing. ( Ide935 )

Version 1.0.0-alpha03

February 18, 2021

androidx.window:window:1.0.0-alpha03 is released. Version 1.0.0-alpha03 contains these commits.

ویژگی‌های جدید

  • Emit an empty value for WindowLayoutInfo when the OEM implementation is empty. This should make it easier to use the library on more devices. Since the APIs are asynchronous it is still recommended that apps write some defensive code and emit a default value after a timeout. We do not have any guarantees on OEM implementations and the initial value may be delayed.

رفع اشکالات

  • Emit an empty value when the OEM library is missing. ( Ide935 )

Version 1.0.0-alpha02

January 27, 2021

androidx.window:window:1.0.0-alpha02 is released. Version 1.0.0-alpha02 contains these commits.

ویژگی‌های جدید

  • We have deprecated some APIs to help streamline the api and reduce mistakes. Some notable examples are removing the synchronous read operations from WindowManager and deprecating DeviceState. Synchronous read operations can lead to race conditions and have incorrect UI.

  • We have converted DisplayFeature to an interface that other features will implement going forward. Our first feature is FoldingFeature which is now the representation of a screen fold or a hinge. This also contains the state of the hinge replacing DeviceState.

  • WindowMetrics was introduced in Android 11 to provide developers with a simple way to query for metrics about a window, for example its position and size on screen and any system insets. We've backported the API in this release so that developers can leverage WindowMetrics and continue to support older Android versions. WindowMetrics can be obtained through the WindowManager#getCurrentWindowMetrics() and WindowManager#getMaximumWindowMetrics() APIs.

API Changes

  • Deprecate APIs that will be removed in the next alpha ( Ib7cc4 )
  • Updates ExtensionInterface to accept explicit Activity references. ( I07ded )
  • Introduces the WindowMetrics API. ( I3ccee )
  • Remove synchronous read methods from WindowManager ( I69983 )
  • Make ExtensionWindowBackend package protected. ( Ied208 )

رفع اشکالات

  • Update ExtensionInterface APIs to accept visual contexts. ( I8e827 )

External Contribution

  • Merge DeviceState and WindowLayoutInfo so it is easier to access data. ( Id34f4 )

Version 1.0.0-alpha01

۲۷ فوریه ۲۰۲۰

androidx.window:window:1.0.0-alpha01 and androidx.window:window-extensions:1.0.0-alpha01 are released. Version 1.0.0-alpha01 contains these commits. This is the first release of the Window Manager library.

ویژگی‌های جدید

  • DisplayFeature : This new API identifies disruptions in the continuous flat screen surfaces such as hinges or folds
  • DeviceState : This new API provides the current posture of the phone from a list of defined postures (For example, CLOSED , OPENED , HALF_OPENED , etc.)