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
ViewFlipperで手軽にリッチアニメーション
Search
Wataru Mizukami
March 08, 2019
Technology
610
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ViewFlipperで手軽にリッチアニメーション
Wataru Mizukami
March 08, 2019
More Decks by Wataru Mizukami
See All by Wataru Mizukami
GitHub Actions活用術
tarumzu
1
820
CIサービス「Bitrise」を使って 最小限の労力でDanger + ktlintをGithubと連携させる
tarumzu
1
1.1k
JavaScriptでWebViewをハックする
tarumzu
2
1.5k
Realm Cloudを使ったオフラインファーストなアプリ開発
tarumzu
2
1k
Kotlin serializationの使い方を詳しく調べてみた
tarumzu
2
1.7k
Other Decks in Technology
See All in Technology
LLMと共に進化するプロセスを目指して
ymatsuwitter
11
3.1k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
180
GoとSIMDとWasmの今。
askua
3
510
AIを「創る」と「使う」の循環 — HRテックが実践するリアルなAI組織実装
taketo957
0
1.6k
価格.comをAI駆動で全面刷新する ー 30年分の技術的負債を返し、次の30年の土台をつくる ー / AI Engineering Summit Tokyo 2026
tkyowa
49
53k
個人最適 から 全体最適 へ AI情報共有会・AIギルド・AI-DLC で進める カンリーの組織展開
rfdnxbro
0
1.5k
Diagnosing performance problems without the guesswork
elenatanasoiu
0
170
そのPoC、何を検証したつもりでしたか? AIプロダクトの価値検証で陥った落とし穴
techtekt
PRO
0
150
Sony_KMP_Journey_KotlinConf2026
sony
2
210
サプライチェーンセキュリティの空白地帯 - 信頼できる”依存性”の未来を考える
rung
PRO
2
700
データ基盤をDataformで整えた話 〜 開発環境を添えて 〜
takapy
0
110
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
190
Featured
See All Featured
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
A Tale of Four Properties
chriscoyier
163
24k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
320
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
770
HDC tutorial
michielstock
2
690
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
GitHub's CSS Performance
jonrohan
1033
470k
How to build a perfect <img>
jonoalderson
1
5.6k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
320
Raft: Consensus for Rubyists
vanstee
141
7.5k
Transcript
ViewFlipperで 手軽にリッチアニメーション Wataru Mizukami(水上 亘)
自己紹介 Wataru Mizukami/水上 亘 / @tarumzu (たる) Organization/ sikmi,
inc.
ViewFlipperとは - 子ViewやLayoutの表示を手軽に切り替えられるwidget - 親クラスはViewAnimatorなので簡易的なアニメーションしか 出来ない
AdapterViewFlipperとは - 親クラスはAdapterViewAnimator。ObjectAnimatorを利用 できるため、リッチなアニメーションを実装可能 - 子ViewやLayoutを切り替えるにはAdapterを作成する必要が あるため、実装が大変
ViewFlipperで楽しながらリッチなアニ メーションは出来ないのか? Androidは険しい道程しかないの か!?
実は出来ます 自分のような初心者だとWidgetでサ ポートされていないアニメーションは使 えないと思いがち(ですよね? )
val outRotationY = ObjectAnimator.ofFloat(flipper, "rotationY", 0f, 90f) val inRotationY =
ObjectAnimator.ofFloat(flipper, "rotationY", 270f, 360f) outRotationY.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { inRotationY.start() flipper.showNext() } }) flipper.setOnClickListener { outRotationY.start() }
val outRotationY = ObjectAnimator.ofFloat(flipper, "rotationY", 0f, 90f) val inRotationY =
ObjectAnimator.ofFloat(flipper, "rotationY", 270f, 360f) outRotationY.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { inRotationY.start() flipper.showNext() } }) flipper.setOnClickListener { outRotationY.start() } 消えるときのアニメーション
val outRotationY = ObjectAnimator.ofFloat(flipper, "rotationY", 0f, 90f) val inRotationY =
ObjectAnimator.ofFloat(flipper, "rotationY", 270f, 360f) outRotationY.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { inRotationY.start() flipper.showNext() } }) flipper.setOnClickListener { outRotationY.start() } 現れるときのアニメーション
val outRotationY = ObjectAnimator.ofFloat(flipper, "rotationY", 0f, 90f) val inRotationY =
ObjectAnimator.ofFloat(flipper, "rotationY", 270f, 360f) outRotationY.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { inRotationY.start() flipper.showNext() } }) flipper.setOnClickListener { outRotationY.start() } 消えるアニメーションが終了したタイミン グで現れるアニメーションを実行
val outRotationY = ObjectAnimator.ofFloat(flipper, "rotationY", 0f, 90f) val inRotationY =
ObjectAnimator.ofFloat(flipper, "rotationY", 270f, 360f) outRotationY.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { inRotationY.start() flipper.showNext() } }) flipper.setOnClickListener { outRotationY.start() } ViewFlipperの裏面レイアウトの表示 を行う
val outRotationY = ObjectAnimator.ofFloat(flipper, "rotationY", 0f, 90f) val inRotationY =
ObjectAnimator.ofFloat(flipper, "rotationY", 270f, 360f) outRotationY.addListener(object : AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator?) { inRotationY.start() flipper.showNext() } }) flipper.setOnClickListener { outRotationY.start() } flipperをタップしたら消えるアニ メーションを実行する
実演はQiitaにて! https://qiita.com/tarumzu/items/3d58f072e6b273caa496
まとめ - 先入観に囚われない - ViewFlipperのアニメーションは一切使わずにいいところだけ を使い、ObjectAnimatorにすべてを任せる
ご清聴、ありがとうございました!