Rilis Jetpack WindowManager 1.1.0-beta01 melanjutkan progres yang konsisten dari library ini menuju rilis stabil versi 1.1.0. Versi beta ini menambahkan berbagai fitur dan kemampuan baru, yang siap untuk diuji coba dan diadopsi lebih awal hari ini!
Kami membutuhkan masukan Anda agar kami bisa membuat WindowManager berfungsi sempurna untuk Anda. Tambahkan dependensi 1.1.0-beta01 ke aplikasi Anda, ikuti langkah-langkah migrasi di bawah ini (jika Anda sudah menggunakan versi library sebelumnya), dan beri tahu kami pendapat Anda!
Sematan aktivitas
androidx.window.embedding
Sematan aktivitas memungkinkan Anda mengoptimalkan aplikasi multi-aktivitas untuk layar besar. Rilis 1.1.0-beta01 menambah dan melakukan pemfaktoran ulang API untuk memberikan fleksibilitas, kemampuan, dan kontrol yang lebih besar dalam mengelola pembagian jendela tugas. Kami memulai dengan API eksperimental di versi 1.0.0, kemudian mempromosikannya ke versi stabil di 1.1.0.
tl;dr
Menambahkan setelan manifes sehingga Anda bisa memberi tahu sistem bahwa aplikasi Anda telah mengimplementasikan sematan aktivitas. Melakukan pemfaktoran ulang SplitController agar lebih berfokus pada properti pembagian; mengekstraksi API aturan pembagian ke RuleController dan API penyematan aktivitas ke ActivityEmbeddingController. Menambahkan class SplitAttributes untuk mendeskripsikan bagian sematan. Menambahkan class EmbeddingAspectRatio guna menetapkan rasio minimum untuk menerapkan aturan sematan aktivitas. Mengubah unit piksel ke piksel tampilan mandiri (dp). Mengaktifkan kustomisasi tata letak pembagian. Menambahkan tag pada aturan sehingga developer bisa mengidentifikasi dan mengelola aturan tertentu.
Apa yang baru
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
- Ditambahkan sebagai properti boolean pada tag <application> di manifes aplikasi.
ActivityEmbeddingController
- Menambahkan class untuk operasi yang terkait dengan class
Activity
atau ActivityStack
.
- Memasukkan
isActivityEmbedded()
untuk menggantikan API di SplitController
.
RuleController
- Menambahkan class untuk operasi yang terkait dengan subclass dan class EmbeddingRule .
- Memasukkan API berikut untuk menggantikan API di SplitController:
- addRule() — Menambahkan aturan atau memperbarui aturan yang memiliki tag sama.
- removeRule() — Menghapus aturan dari kumpulan aturan terdaftar.
- setRules() — Menetapkan kumpulan aturan.
- clearRules() — Menghapus semua aturan yang terdaftar.
- parseRules() — Mengurai aturan dari definisi aturan XML.
SplitAttributes
- Menambahkan class untuk mendefinisikan tata letak pembagian.
EmbeddingAspectRatio
- Menambahkan class untuk mendefinisikan konstanta perilaku sejenis enum yang terkait dengan rasio aspek tampilan. Anda dapat menentukan kapan pembagian diaktifkan berdasarkan rasio aspek jendela induk.
Lihat SplitRule untuk properti yang menggunakan konstanta tersebut.
Apa yang berubah
EmbeddingRule
- Menambahkan kolom tag untuk mengidentifikasi aturan pembagian.
SplitController
- Melakukan pemfaktoran ulang API untuk modul-modul berikut ini:
- ActivityEmbeddingController
- Memindahkan isActivityEmbedded() ke ActivityEmbeddingController.
- RuleController
- Menghapus API berikut dan mengganti fungsionalitasnya dengan API RuleController:
- clearRegisteredRules()
- getSplitRules()
- initialize()
- registerRule()
- unregisterRule
()
- Metode isSplitSupported() tidak digunakan lagi dan diganti dengan properti splitSupportStatus untuk memberikan informasi yang lebih mendetail mengenai alasan mengapa fitur pembagian tidak tersedia.
- Metode getInstance() sekarang memiliki parameter Context .
Catatan: Metode getInstance() dari ActivityEmbeddingController dan RuleController juga memiliki parameter Context .
- Menambahkan fungsi kalkulator SplitAttributes untuk menyesuaikan tata letak pembagian:
- setSplitAttributesCalculator()
- clearSplitAttributesCalculator()
- isSplitAttributesCalculatorSupported() untuk mengecek apakah API SplitAttributesCalculator didukung pada perangkat.
- Mendefinisikan nested class SplitSupportStatus untuk menyediakan konstanta status untuk properti
splitSupportStatus
. Memungkinkan Anda mengubah perilaku aplikasi berdasarkan ada tidaknya dukungan pembagian sematan aktivitas di lingkungan aplikasi saat ini.
SplitRule
- Menambahkan properti defaultSplitAttributes yang mendefinisikan tata letak pembagian default; menggantikan splitRatio dan layoutDirection.
- Menambahkan translasi properti XML splitRatio dan splitLayoutDirection ke defaultSplitAttributes.
- Mengubah definisi dimensi minimum agar menggunakan piksel kepadatan mandiri (dp), sebagai pengganti piksel.
- Mengubah minWidth menjadi minWidthDp dengan nilai default 600dp.
- Mengubah minSmallestWidth menjadi minSmallestWidthDp dengan nilai default 600dp.
- Menambahkan properti minHeightDp dengan nilai default 600dp.
- Menambahkan maxAspectRatioInHorizontal dengan nilai default ALWAYS_ALLOW.
- Menambahkan maxAspectRatioInPortrait dengan nilai default 1,4.
- Mendefinisikan nested class FinishBehavior untuk menggantikan konstanta perilaku finish.
- Mengaplikasikan perubahan properti untuk nested class Builder dari SplitPairRule dan SplitPlaceholderRule.
SplitInfo
- Mengganti getSplitRatio() dengan getSplitAttributes() untuk memberikan informasi tambahan yang berkaitan dengan pembagian.
Tata letak jendela
androidx.window.layout
Library tata letak jendela memungkinkan Anda menentukan fitur jendela tampilan aplikasi. Dengan rilis 1.1.0-beta01, Anda sekarang bisa bekerja dalam konteks bukan hanya aktivitas.
Apa yang berubah
WindowInfoTracker
- Menambahkan dukungan konteks UI non-aktivitas dalam eksperimental.
WindowMetricsCalculator
- Menambahkan dukungan konteks UI non-aktivitas.
Langkah-langkah migrasi
Ambil langkah berikutnya dan upgrade aplikasi Anda dari versi alfa sebelumnya. Dan mohon beri tahu kami bagaimana kami bisa memudahkan proses upgrade lebih lanjut.
PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED
- Untuk mengaktifkan sematan aktivitas, aplikasi harus menambahkan properti ke tag <application> di manifes aplikasi:
< property android:name="android.window.PROPERTY_ACTIVITY_EMBEDDING_SPLITS_ENABLED" android:value="true" />
Ketika properti ditetapkan ke true, sistem bisa mengoptimalkan perilaku pembagian lebih awal untuk aplikasi.
SplitInfo
- Periksa jika pembagian yang terjadi sekarang ditumpuk:
SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.ExpandContainersSplitType
if (SplitInfo.splitAttributes.splitType is SplitAttributes.SplitType.RatioSplitType) { val ratio = splitInfo.splitAttributes.splitType.ratio } else { // Ratio is meaningless for other types. }
SplitController
- SplitController.getInstance()
berubah menjadi
SplitController.getInstance(Context)
- SplitController.initialize(Context, @ResId int)
berubah menjadi:
RuleController.getInstance(Context) .setRules(RuleController.parse(Context, @ResId int))
- SplitController.getInstance().isActivityEmbedded(Activity)
berubah menjadi:
ActivityEmbeddingController.getInstance(Context) .isActivityEmbedded(Activity)
- SplitController.getInstance().registerRule(rule)
berubah menjadi:
RuleController.getInstance(Context).addRule(rule)
- SplitController.getInstance().unregisterRule(rule)
berubah menjadi:
RuleController.getInstance(Context).removeRule(rule)
- SplitController.getInstance().clearRegisteredRules()
berubah menjadi:
RuleController.getInstance(Context).clearRules()
- SplitController.getInstance().getSplitRules()
berubah menjadi:
RuleController.getInstance(Context).getRules()
SplitRule
- Mengubah minWidth menjadi minWidthDp dan minSmallestWidth menjadi minSmallestWidthDp
- minWidthDp dan minSmallestWidthDp sekarang menggunakan satuan dp, bukan piksel
Aplikasi bisa menggunakan panggilan berikut:
TypedValue.applyDimension( COMPLEX_UNIT_DIP, minWidthInPixels, resources.displayMetrics )
atau cukup bagi minWithInPixels dengan displayMetrics#density.
SplitPairRule.Builder
- SplitPairRule.Builder( filters, minWidth, minSmallestWidth )
berubah menjadi:
SplitPairRule.Builder(filters) // Optional if minWidthInDp argument is 600. .setMinWidthDp(minWidthInDp) // Optional if minSmallestWidthInDp argument is 600. .setMinSmallestWidthDp(minSmallestWidthInDp)
- setLayoutDirection(layoutDirection) and setSplitRatio(ratio)
berubah menjadi:
setDefaultSplitAttributes(SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
- setFinishPrimaryWithSecondary dan setFinishSecondaryWithPrimary mengambil konstanta seperti-enum FinishBehavior .
Lihat migrasi SplitRule untuk detailnya.
setMaxAspectRatioInPortrait( EmbeddingAspectRatio.ALWAYS_ALLOW )
untuk menunjukkan pembagian pada perangkat potret.
SplitPlaceholder.Builder
- Hanya memiliki parameter filters dan placeholderIntent ; properti lain dipindahkan ke penyetel.
Lihat migrasi SplitPairRule.Builder untuk detailnya.
- setFinishPrimaryWithPlaceholder mengambil konstanta seperti-enum
FinishBehavior
.
Lihat migrasi perilaku finish untuk detailnya.
- setLayoutDirection(layoutDirection) dan setSplitRatio(ratio)
berubah menjadi
setDefaultSplitAttributes(SplitAttributes.Builder() .setLayoutDirection(layoutDirection) .setSplitType(SplitAttributes.SplitType.ratio(ratio)) .build() )
Lihat migrasi arah tata letak untuk detailnya.
setMaxAspectRatioInPortrait( EmbeddingAspectRatio.ALWAYS_ALLOW )
untuk menunjukkan pembagian pada perangkat potret.
Perilaku finishKonstanta perilaku finish harus dimigrasikan ke konstanta class seperti enum FinishBehavior
:
- FINISH_NEVER berubah menjadi FinishBehavior.NEVER
- FINISH_ALWAYS berubah menjadi FinishBehavior.ALWAYS
- FINISH_ADJACENT berubah menjadi FinishBehavior.ADJACENT
Arah tata letakArah tata letak harus dimigrasikan ke SplitAttributes.LayoutDirection:
- ltr berubah menjadi SplitAttributes.LayoutDirection.LEFT_TO_RIGHT
- rtl berubah menjadi SplitAttributes.LayoutDirection.RIGHT_TO_LEFT
- locale berubah menjadi SplitAttributes.LayoutDirection.LOCALE
- splitRatio dimigrasikan ke SplitAttributes.SplitType.ratio(splitRatio)
Memulai
Untuk memulai WindowManager, tambahkan repositori Google Maven ke
settings.gradle aplikasi atau file
build.gradle level project:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
}
}
Kemudian tambahkan dependensi 1.1.0-beta01 ke file build.gradle level modul aplikasi Anda:
dependencies {
implementation 'androidx.window:window:1.1.0-beta01'
. . .
}
Selamat coding!
Puisi Khilda Maulidi
ReplyDeleteIAIH NW
ReplyDeleteRefleksi 57 Tahun Himpunan Mahasiswa Nahdlatul Wathan
ReplyDelete6 Cacat Attitude yang Harus di Hindari Dalam Berteman
ReplyDeleteThis is the good information. https://ehsaas8171bisp.com/ehsaas-rashan-program/
ReplyDeleteโปรโมชั่น pg slot มากมาย เล่นง่ายจ่ายจริง แตกจริง ต้อง pg slot เท่านั้น! เล่นสล็อต พีจีสล็อต เว็บไซต์ตรงผู้ให้บริการเกมสล็อตออนไลน์ชั้นหนึ่ง ทกลอง เล่น ฟรี พร้อมโบนัส
ReplyDeleteterimakasih atas informasinya ya pak salam dari kami
ReplyDeleteTempat Sewa VW Borobudur termurah