Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Android 14 新機能 / Android 14 Meetup Nagoya
Search
star_zero
August 10, 2023
Programming
690
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android 14 新機能 / Android 14 Meetup Nagoya
star_zero
August 10, 2023
More Decks by star_zero
See All by star_zero
今からはじめるAndroidアプリ開発 2024 / DevFest 2024
star_zero
0
1.6k
Jetpack Compose の Side-effect を使いこなす / DroidKaigi 2023
star_zero
5
7.2k
Android 14 と Predictive back gesture / Shibuya.apk #42
star_zero
0
510
Coroutines Test 入門 / Android Test Night #8
star_zero
2
1.4k
What's new in Jetpack / I/O Extended Japan 2022
star_zero
1
720
Kotlin 2021 Recap / DevFest 2021
star_zero
3
1.4k
Kotlin Symbol Processing (KSP) を使ったコード生成 / DroidKaigi 2021
star_zero
2
5.3k
What's new Android 12
star_zero
0
630
これからはじめるAndroid開発 / DevFest 2020
star_zero
4
780
Other Decks in Programming
See All in Programming
App Intentsのビルドプロセスを支える技術
kntkymt
0
410
JPUG勉強会 OSSデータベースの内部構造を理解しよう(第2回)
oga5
0
270
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
8
6.8k
XHTMLが残したもの
yosuke_furukawa
PRO
2
830
thread_parallel_with_free-threaded_Python_and_NumPy.pdf
riku_sakamoto
0
350
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
180
MVNOの申込からeSIM開通までをiOSアプリでつなぐ- 本人確認・MNP・通信事業者基盤をまたぐ実装
satotakeshi
0
450
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
FreeBSDでZabbixを動かす
kenkino
0
310
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
140
What We Talk About When We Talk About XP
m_seki
2
670
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
So, you think you're a good person
axbom
PRO
2
2.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
The browser strikes back
jonoalderson
0
1.7k
Color Theory Basics | Prateek | Gurzu
gurzu
1
470
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.3k
Rails Girls Zürich Keynote
gr2m
96
14k
Making Projects Easy
brettharned
120
6.8k
The Limits of Empathy - UXLibs8
cassininazir
1
680
Designing Experiences People Love
moore
143
24k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
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
ありがとうございました