Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Android 14 新機能 / Android 14 Meetup Nagoya
Search
star_zero
August 10, 2023
Programming
1
600
Android 14 新機能 / Android 14 Meetup Nagoya
star_zero
August 10, 2023
Tweet
Share
More Decks by star_zero
See All by star_zero
今からはじめるAndroidアプリ開発 2024 / DevFest 2024
star_zero
0
1.3k
Jetpack Compose の Side-effect を使いこなす / DroidKaigi 2023
star_zero
5
6.1k
Android 14 と Predictive back gesture / Shibuya.apk #42
star_zero
0
390
Coroutines Test 入門 / Android Test Night #8
star_zero
2
1.2k
What's new in Jetpack / I/O Extended Japan 2022
star_zero
1
640
Kotlin 2021 Recap / DevFest 2021
star_zero
3
1.3k
Kotlin Symbol Processing (KSP) を使ったコード生成 / DroidKaigi 2021
star_zero
2
5.2k
What's new Android 12
star_zero
0
570
これからはじめるAndroid開発 / DevFest 2020
star_zero
4
710
Other Decks in Programming
See All in Programming
PicoRuby on Rails
makicamel
2
100
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
270
5つのアンチパターンから学ぶLT設計
narihara
1
120
エラーって何種類あるの?
kajitack
5
310
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
110
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
200
GoのGenericsによるslice操作との付き合い方
syumai
3
690
関数型まつりレポート for JuliaTokai #22
antimon2
0
160
ASP.NETアプリケーションのモダナイズ インフラ編
tomokusaba
1
420
High-Level Programming Languages in AI Era -Human Thought and Mind-
hayat01sh1da
PRO
0
450
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
110
CursorはMCPを使った方が良いぞ
taigakono
1
180
Featured
See All Featured
Designing for Performance
lara
609
69k
Gamification - CAS2011
davidbonilla
81
5.3k
Balancing Empowerment & Direction
lara
1
370
Documentation Writing (for coders)
carmenintech
72
4.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
How to train your dragon (web standard)
notwaldorf
94
6.1k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Making the Leap to Tech Lead
cromwellryan
134
9.3k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
930
Designing Experiences People Love
moore
142
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
Transcript
Android 14 Meetup Nagoya 2023/08/10 Android 14 新機能
• Kenji Abe • Google Developers Expert for Android, Kotlin
• DeNA Co., Ltd. • X: @STAR_ZERO • Bluesky: @star-zero.com 自己紹介
Per-app language preferences
• AGP 8.1.0-alpha07 から • values-* フォルダを判別して LocaleConfig を自動で生成 LocaleConfigの自動生成
// app/build.gradle android { androidResources { generateLocaleConfig = true }
} // res/resources.properties unqualifiedResLocale=en-US
None
• 実行中にアプリごとの言語設定を変更可能 • A/Bテストや、地域によって設定を変えたりなど可能に LocaleConfigの動的更新
val localManger = getSystemService<LocaleManager>()!! // 言語設定をOverride localManger.overrideLocaleConfig = LocaleConfig( LocaleList(
Locale.ENGLISH, Locale.ITALIAN ) ) // Overrideした設定を戻す localManger.overrideLocaleConfig = null
Grammatical Inflection API
• フランス語 ◦ 男性: Vous êtes abonné à… ◦ 女性:
Vous êtes abonnée à… ◦ 中立: Abonnement à...activé Grammatical Inflection API
None
val grammaticalInflectionManager = context.getSystemService<GrammaticalInflectionManager>()!! grammaticalInflectionManager .setRequestedApplicationGrammaticalGender( Configuration.GRAMMATICAL_GENDER_FEMININE // or Configuration.GRAMMATICAL_GENDER_MASCULINE
// or Configuration.GRAMMATICAL_GENDER_NEUTRAL // or Configuration.GRAMMATICAL_GENDER_NOT_SPECIFIED )
地域別の設定
None
地域別の設定 // androidx.core:core:1.12.0 val temperature = LocalePreferences.getTemperatureUnit() val firstDayOfWeek =
LocalePreferences.getFirstDayOfWeek()
Screenshot detection API
• スクリーンショットを撮ったことを検知できる • スクリーンショット自体を取得することはできない Screenshot detection API
<!-- AndroidManifest.xml --> <uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
class MainActivity : ComponentActivity() { val screenCaptureCallback = ScreenCaptureCallback {
// ... } override fun onStart() { super.onStart() registerScreenCaptureCallback( mainExecutor, screenCaptureCallback ) } override fun onStop() { super.onStop() unregisterScreenCaptureCallback(screenCaptureCallback) } }
None
Predictive Back Gesture
• Android 13で導入、Android 14で改善 • Activity単位でのOpt-in • Activity間でのアニメーション • 新しいAPIが追加され、カスタムアニメーションが可能に
Predictive Back Gesture
<manifest> <application> <activity android:name=".MainActivity"> <!-- ... --> </activity> <!-- このActivityだけ
Predicitive back gesture を有効にする --> <activity android:name=".SampleActivity" android:enableOnBackInvokedCallback="true" /> </application> </manifest>
https://developer.android.com/about/versions/14/features/predictive-back
// androidx.activity:activity-ktx:1.8.0-alpha06 val callBack = object : OnBackPressedCallback(true) { override
fun handleOnBackStarted(backEvent: BackEventCompat) { // Gestureが始まったとき } override fun handleOnBackProgressed(backEvent: BackEventCompat) { // Gestureの進捗 } override fun handleOnBackPressed() { // Gestureが完了したとき } override fun handleOnBackCancelled() { // キャンセルされたとき } }
Path
val path = Path().apply { moveTo(0f, 0f) lineTo(200f, 0f) lineTo(200f,
200f) lineTo(0f, 200f) close() } canvas.drawPath(path, paint)
val pathIterator = path.pathIterator pathIterator.forEach { segment -> // PathIterator.VERB_MOVE,
// PathIterator.VERB_LINE, // PathIterator.VERB_CLOSE など val verb = segment.verb // verbの操作のポイントデータ val points = segment.points }
VERB_MOVE - [0, 0, 0, 0, 0, 0, 0, 0]
VERB_LINE - [0, 0, 200, 0, 0, 0, 0, 0] VERB_LINE - [200, 0, 200, 200, 0, 0, 0, 0] VERB_LINE - [200, 200, 0, 200, 0, 0, 0, 0] VERB_CLOSE - [200, 200, 0, 200, 0, 0, 0, 0] moveTo(0f, 0f) lineTo(200f, 0f) lineTo(200f, 200f) lineTo(0f, 200f) close()
• androidx.graphics:graphics-path もある ◦ API 21からサポート Path
ありがとうございました