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
620
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.5k
Jetpack Compose の Side-effect を使いこなす / DroidKaigi 2023
star_zero
5
6.5k
Android 14 と Predictive back gesture / Shibuya.apk #42
star_zero
0
430
Coroutines Test 入門 / Android Test Night #8
star_zero
2
1.2k
What's new in Jetpack / I/O Extended Japan 2022
star_zero
1
670
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
580
これからはじめるAndroid開発 / DevFest 2020
star_zero
4
730
Other Decks in Programming
See All in Programming
퇴근 후 1억이 거래되는 서비스 만들기 | 내가 AI를 사용하는 방법
maryang
2
560
チーム開発の “地ならし"
konifar
7
3.9k
Flutterアプリ運用の現場で役立った監視Tips 5選
ostk0069
1
390
KoogではじめるAIエージェント開発
hiroaki404
1
460
FlutterKaigi 2025 システム裏側
yumnumm
0
960
競馬で学ぶ機械学習の基本と実践 / Machine Learning with Horse Racing
shoheimitani
11
10k
Functional Calisthenics in Kotlin: Kotlinで「関数型エクササイズ」を実践しよう
lagenorhynque
0
130
最新のDirectX12で使えるレイトレ周りの機能追加について
projectasura
0
210
Agentに至る道 〜なぜLLMは自動でコードを書けるようになったのか〜
mackee
4
780
予防に勝る防御なし(2025年版) - 堅牢なコードを導く様々な設計のヒント / Growing Reliable Code PHP Conference Fukuoka 2025
twada
PRO
36
11k
自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
segadevtech
2
970
Chart.jsで長い項目を表示するときのハマりどころ
yumechi
0
100
Featured
See All Featured
For a Future-Friendly Web
brad_frost
180
10k
It's Worth the Effort
3n
187
28k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Visualization
eitanlees
150
16k
Designing for Performance
lara
610
69k
Agile that works and the tools we love
rasmusluckow
331
21k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
2.9k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Making the Leap to Tech Lead
cromwellryan
135
9.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
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
ありがとうございました