Submit Search
Upload
用途に合わせたアニメーションの実装方法
•
15 likes
•
18,045 views
Takao Sumitomo
Follow
Droidkaigi2016の発表資料です。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 50
Download now
Download to read offline
Recommended
最速でリリースするためのAndroidアプリデザイン
最速でリリースするためのAndroidアプリデザイン
Naoki Aoyama
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Masataka Kono
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Takao Sumitomo
僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
Yukiya Nakagawa
パーミッションモデルの過渡期への対応
パーミッションモデルの過渡期への対応
ak_shio_555
DroidKaigi2016 windows環境での効率的なアプリ開発手法
DroidKaigi2016 windows環境での効率的なアプリ開発手法
tkawashita
Recommended
最速でリリースするためのAndroidアプリデザイン
最速でリリースするためのAndroidアプリデザイン
Naoki Aoyama
開発を効率的に進めるられるまでの道程
開発を効率的に進めるられるまでの道程
Takao Sumitomo
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
5 年続く 「はてなブックマーク」 アプリを継続開発する技術
Yu Nobuoka
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
minneにおけるテスト〜リリース〜リリース後にやっている事の紹介
Masataka Kono
テストがあればなんとかなる〜効率化までの道程〜
テストがあればなんとかなる〜効率化までの道程〜
Takao Sumitomo
僕らのデータ同期プラクティス
僕らのデータ同期プラクティス
Yukiya Nakagawa
パーミッションモデルの過渡期への対応
パーミッションモデルの過渡期への対応
ak_shio_555
DroidKaigi2016 windows環境での効率的なアプリ開発手法
DroidKaigi2016 windows環境での効率的なアプリ開発手法
tkawashita
AndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Yukiya Nakagawa
Angularおじさんの1年
Angularおじさんの1年
Hayashi Yuichi
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Kengo Suzuki
LIGにおけるフロントエンドチーム構築
LIGにおけるフロントエンドチーム構築
Hayashi Yuichi
Alternative WebView
Alternative WebView
Shigeki Yamato
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
Hayashi Yuichi
[potatotips #18] Android M Developer Preview & Wear 最新トピック
[potatotips #18] Android M Developer Preview & Wear 最新トピック
Kenichi Kambara
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
l_b__
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
Android Dev Tools Knowledge
Android Dev Tools Knowledge
Shinobu Okano
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
Takao Sumitomo
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
Takao Sumitomo
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
一希 大田
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Yukiya Nakagawa
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
kujirahand kujira
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
健一 辰濱
Front-end package managers
Front-end package managers
Hayashi Yuichi
LIGでのDocker活用
LIGでのDocker活用
Hayashi Yuichi
VS Code Day 2021 Recap
VS Code Day 2021 Recap
Yuki Ueda
とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事
Cybozu, Inc.
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Takao Sumitomo
More Related Content
What's hot
AndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Yukiya Nakagawa
Angularおじさんの1年
Angularおじさんの1年
Hayashi Yuichi
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Kengo Suzuki
LIGにおけるフロントエンドチーム構築
LIGにおけるフロントエンドチーム構築
Hayashi Yuichi
Alternative WebView
Alternative WebView
Shigeki Yamato
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
Hayashi Yuichi
[potatotips #18] Android M Developer Preview & Wear 最新トピック
[potatotips #18] Android M Developer Preview & Wear 最新トピック
Kenichi Kambara
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
l_b__
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Shinobu Okano
Android Dev Tools Knowledge
Android Dev Tools Knowledge
Shinobu Okano
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
Takao Sumitomo
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
Takao Sumitomo
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Makoto Yamazaki
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
一希 大田
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Yukiya Nakagawa
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
kujirahand kujira
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
健一 辰濱
Front-end package managers
Front-end package managers
Hayashi Yuichi
LIGでのDocker活用
LIGでのDocker活用
Hayashi Yuichi
VS Code Day 2021 Recap
VS Code Day 2021 Recap
Yuki Ueda
What's hot
(20)
AndroidLint #DroidKaigi
AndroidLint #DroidKaigi
Angularおじさんの1年
Angularおじさんの1年
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
Androidのセキュア開発について考えてみた(明日、敗訴しないためのセキュアコーディング.ver2)
LIGにおけるフロントエンドチーム構築
LIGにおけるフロントエンドチーム構築
Alternative WebView
Alternative WebView
いい感じのフロントエンド開発環境を作ってみた
いい感じのフロントエンド開発環境を作ってみた
[potatotips #18] Android M Developer Preview & Wear 最新トピック
[potatotips #18] Android M Developer Preview & Wear 最新トピック
Android,Brillo,ChromeOS
Android,Brillo,ChromeOS
Android学ぶを君へ。生き抜くためのナレッジ共有
Android学ぶを君へ。生き抜くためのナレッジ共有
Android Dev Tools Knowledge
Android Dev Tools Knowledge
SQLiteDatabaseを無理矢理覗く
SQLiteDatabaseを無理矢理覗く
potatotips (iOS/Android開発Tips共有会) 第19回 資料
potatotips (iOS/Android開発Tips共有会) 第19回 資料
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
20150425 DroidKaigi つかえるGradleプロジェクトの作り方
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Visual Studio 2015 リリース記念 勉強会 universal windows platform app
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
Android Lintを覚えてベテラン開発者に追いつこう #ndsmeetup
HTML5/JavaScriptで作るAndroidアプリ開発seminar
HTML5/JavaScriptで作るAndroidアプリ開発seminar
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Sansan Tech Meetup Androidエンジニアが振り返る Google I/O
Front-end package managers
Front-end package managers
LIGでのDocker活用
LIGでのDocker活用
VS Code Day 2021 Recap
VS Code Day 2021 Recap
Similar to 用途に合わせたアニメーションの実装方法
とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事
Cybozu, Inc.
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Takao Sumitomo
Photon Enterprise Cloud 事例
Photon Enterprise Cloud 事例
Tomotsune Murata
[Stack Overflow Dev Days 2015]Android 6.0 Marshmallow App Permissions 応用編
[Stack Overflow Dev Days 2015]Android 6.0 Marshmallow App Permissions 応用編
Kenichi Kambara
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Satoshi Noda
HTML5でFirefox OSアプリを作ろう
HTML5でFirefox OSアプリを作ろう
Takao Sumitomo
Android Wear最新トピック+α
Android Wear最新トピック+α
Kenichi Kambara
Realm meetup LT大会(Androidアプリへの適用経験談)
Realm meetup LT大会(Androidアプリへの適用経験談)
Kenichi Kambara
AndroidアプリのUI/UX改善例
AndroidアプリのUI/UX改善例
Kenichi Kambara
「Camelog」Android開発秘話
「Camelog」Android開発秘話
Shoya Tsukada
Android Wear & Android M 最新トピック
Android Wear & Android M 最新トピック
Kenichi Kambara
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
Monaca
プログラミング有識者会議を読み解く
プログラミング有識者会議を読み解く
Yuta Tonegawa
AndroidでDIxAOP
AndroidでDIxAOP
nfc research
Project 15 - Algyan May 2022.pdf
Project 15 - Algyan May 2022.pdf
YasuhiroHanda2
モブプロ導入で見えてきた効果
モブプロ導入で見えてきた効果
natsumi_ishizaka
Android 6.0 Marshmallow 指紋認証対応のポイント
Android 6.0 Marshmallow 指紋認証対応のポイント
Kenichi Kambara
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
Hitachi, Ltd. OSS Solution Center.
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
Kentaro Matsumae
子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう
Masao Niizuma
Similar to 用途に合わせたアニメーションの実装方法
(20)
とあるサイボウズのAndroidエンジニアのお仕事
とあるサイボウズのAndroidエンジニアのお仕事
プロダクトを育てるのにGoogleのサービスが助けてくれること
プロダクトを育てるのにGoogleのサービスが助けてくれること
Photon Enterprise Cloud 事例
Photon Enterprise Cloud 事例
[Stack Overflow Dev Days 2015]Android 6.0 Marshmallow App Permissions 応用編
[Stack Overflow Dev Days 2015]Android 6.0 Marshmallow App Permissions 応用編
Android6.0の機能まとめ 実機でサンプルを動かしてみた
Android6.0の機能まとめ 実機でサンプルを動かしてみた
HTML5でFirefox OSアプリを作ろう
HTML5でFirefox OSアプリを作ろう
Android Wear最新トピック+α
Android Wear最新トピック+α
Realm meetup LT大会(Androidアプリへの適用経験談)
Realm meetup LT大会(Androidアプリへの適用経験談)
AndroidアプリのUI/UX改善例
AndroidアプリのUI/UX改善例
「Camelog」Android開発秘話
「Camelog」Android開発秘話
Android Wear & Android M 最新トピック
Android Wear & Android M 最新トピック
PhoneGapユーザー会@大阪 講演資料
PhoneGapユーザー会@大阪 講演資料
プログラミング有識者会議を読み解く
プログラミング有識者会議を読み解く
AndroidでDIxAOP
AndroidでDIxAOP
Project 15 - Algyan May 2022.pdf
Project 15 - Algyan May 2022.pdf
モブプロ導入で見えてきた効果
モブプロ導入で見えてきた効果
Android 6.0 Marshmallow 指紋認証対応のポイント
Android 6.0 Marshmallow 指紋認証対応のポイント
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
社会のコードを、書き換えよう~エンジニア起点のNew Normalな働き方~
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
だいすきStoryboard - #potatotips (iOS/Android開発Tips共有会) 第7回
子供達と プログラミングをはじめよう
子供達と プログラミングをはじめよう
More from Takao Sumitomo
僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ
Takao Sumitomo
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
Takao Sumitomo
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Takao Sumitomo
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Takao Sumitomo
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
Takao Sumitomo
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Takao Sumitomo
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Takao Sumitomo
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
Takao Sumitomo
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
Takao Sumitomo
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Takao Sumitomo
Wantedlyのテスト事情
Wantedlyのテスト事情
Takao Sumitomo
Uml速習会
Uml速習会
Takao Sumitomo
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
Takao Sumitomo
勉強会資料 Uml概要
勉強会資料 Uml概要
Takao Sumitomo
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
Takao Sumitomo
フォクすけロボ開発進捗報告
フォクすけロボ開発進捗報告
Takao Sumitomo
今更ながらCSS3を試してみた
今更ながらCSS3を試してみた
Takao Sumitomo
Crystalskullを改造してみる
Crystalskullを改造してみる
Takao Sumitomo
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら
Takao Sumitomo
More from Takao Sumitomo
(20)
僕は上スワイプでBottomSheetを出したかっただけなんだ
僕は上スワイプでBottomSheetを出したかっただけなんだ
sharedUserIdを使った俺得開発ツールの作り方
sharedUserIdを使った俺得開発ツールの作り方
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
CIのビルドを通知する仕組みをAndroidとFirestoreで作った話
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
Camera API 1と2が混在するプロダクトの開発で 泣いたこととそのワークアラウンド
アプリを成長させるためのログ取りとログ解析に必要なこと
アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
(beta)アプリを成長させるためのログ取りとログ解析に必要なこと
高速でトライ&エラーを するために気をつけてること
高速でトライ&エラーを するために気をつけてること
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Maker Faire Bay Areaに行きたかったのでGoogle I/Oに行ってきた
Viewを動的に変化させるアプローチ
Viewを動的に変化させるアプローチ
AdapterToolboxでRecyclerViewを楽にする
AdapterToolboxでRecyclerViewを楽にする
エンジニアがプロダクト育成を始めるまでにやったこと
エンジニアがプロダクト育成を始めるまでにやったこと
Wantedlyのテスト事情
Wantedlyのテスト事情
Uml速習会
Uml速習会
勉強会資料 データ構造とアルゴリズム
勉強会資料 データ構造とアルゴリズム
勉強会資料 Uml概要
勉強会資料 Uml概要
Firefox OSの何が嬉しいか
Firefox OSの何が嬉しいか
フォクすけロボ開発進捗報告
フォクすけロボ開発進捗報告
今更ながらCSS3を試してみた
今更ながらCSS3を試してみた
Crystalskullを改造してみる
Crystalskullを改造してみる
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら
もしソフトウェアディベロッパーが3Dプリンターで『フォクすけ』を作ったら
Recently uploaded
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(9)
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
用途に合わせたアニメーションの実装方法
1.
DroidKaigi 2016 @cattaka_net 用途に合わせた アニメーションの実装方法 Takao Sumitomo @cattaka_net
2.
DroidKaigi 2016 @cattaka_net 自己紹介 ● 住友 孝郎(Takao Sumitomo) ● Androidアプリ開発者 ● 開発経歴 ● Androidアプリ ● iOSアプリ(ちょっとだけ) ● 業務系Webアプリケーション ● 業務系Windowsアプリ ● その他 ● 電子工作 ● OpenCV ● ウォンテッドリー株式会社所属 2014年12月〜
3.
DroidKaigi 2016 @cattaka_net アプリに動きをつけていますか?
4.
DroidKaigi 2016 @cattaka_net 必要なときにググれば 良いと思っていませんか
5.
DroidKaigi 2016 @cattaka_net 実はアニメーションの仕組みは AndroidのFWには沢山あります
6.
DroidKaigi 2016 @cattaka_net 一口にアニメーションといっても 対象は何があるでしょう ● Viewの中身を動かす ● View自体を動かす ● 複数のViewを含むレイアウトを切り替える
7.
DroidKaigi 2016 @cattaka_net 今のAndroidフレームワークの現状 ● それぞれに仕組みが準備されています。 ● でも新しいのや古いのやでそれぞれに複数あ り、ややこしいことになっている
8.
DroidKaigi 2016 @cattaka_net 今回はそれを 整理したいというお話です
9.
DroidKaigi 2016 @cattaka_net Viewの中身を動かす
10.
DroidKaigi 2016 @cattaka_net Viewの中身を動かす ● 2種類 ● Animation Drawable ● Animated Vector
Drawable
11.
DroidKaigi 2016 @cattaka_net Animation Drawable ● 要はパラパラアニメ ● 必要なもの:複数の画像 &
xml (1) (2)(3)
12.
DroidKaigi 2016 @cattaka_net Animation Drawable <?xml version="1.0"
encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/roll_cat_1" android:duration="200"/> <item android:drawable="@drawable/roll_cat_2" android:duration="200"/> <item android:drawable="@drawable/roll_cat_1" android:duration="200"/> <item android:drawable="@drawable/roll_cat_3" android:duration="200"/> </animation-list> drawable/roll_cat.xml
13.
DroidKaigi 2016 @cattaka_net Animation Drawable ImageView logoImage =
(ImageView) findViewById(R.id.image_logo); logoImage.setBackgroundResource(R.drawable.roll_cat); AnimationDrawable rollCatDrawable = (AnimationDrawable) logoImage.getDrawable(); rollCatDrawable.start(); アニメーションを開始するコード
14.
DroidKaigi 2016 @cattaka_net Animated Vector Drawable ● SVGをアニメーションさせる ● 必要なもの:xml
15.
DroidKaigi 2016 @cattaka_net Animated Vector Drawable <?xml
version="1.0" encoding="utf-8"?> <vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="64dp" android:width="64dp" android:viewportHeight="600" android:viewportWidth="600" > <group android:name="characterGroup"> <path android:name="character" android:fillColor="#000000" android:pathData="M 80,0 24,24 0,80 l 24,56 56, -省略-” /> </group> <group android:name="feedGroup" android:translateX="80"> <path android:fillColor="#000000" android:pathData="M 72,64 l -8,8 0,16 8,8 16,0 8-省略-” /> /> </group> </vector> これは動きのないただのSVG
16.
DroidKaigi 2016 @cattaka_net Animated Vector Drawable <?xml
version="1.0" encoding="utf-8"?> <animated-vector xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/vector_drawable" > <target android:name="feedGroup" android:animation="@anim/av_translation" /> <target android:name="character" android:animation="@anim/av_path_morph" /> </animated-vector> android:animationで動きを入れる
17.
DroidKaigi 2016 @cattaka_net View自体を動かす
18.
DroidKaigi 2016 @cattaka_net View Animation ● 必要なもの:xml &
code
19.
DroidKaigi 2016 @cattaka_net View Animation <?xml version="1.0"
encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000" android:fromXDelta="0%" android:fromYDelta="0%" android:interpolator="@android:anim/bounce_interpolator" android:toXDelta="100%" android:toYDelta="100%"/> Animation anim = AnimationUtils.loadAnimation(this, R.anim.va_move); mTargetButton.startAnimation(anim); xmlでアニメーションを定義 コードからアニメーションを実行
20.
DroidKaigi 2016 @cattaka_net View Animation TranslateAnimation anim =
new TranslateAnimation(0, mTargetView.getWidth(), 0, mTargetView.getHeight()); anim.setDuration(3000); mTargetView.startAnimation(anim); コードからアニメーションを実行 コードでアニメーションを定義
21.
DroidKaigi 2016 @cattaka_net Property Animation ● 2通りの実装がFWにある ● ObjectAnimatorクラス ● 必要なもの:xml or
code ● リフレクションを使っていて、属性の名前でアニメーション させる ● ViewPropertyAnimatorクラス ● 必要なもの:code ● codeからしか使えないが、手軽に使える
22.
DroidKaigi 2016 @cattaka_net ObjectAnimator <?xml version="1.0" encoding="utf-8"?> <objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000" android:interpolator="@android:anim/bounce_interpolator" android:propertyName="translationX" android:valueFrom="0" android:valueTo="300" android:valueType="floatType"/> Animator
anim = AnimatorInflater.loadAnimator(this, R.animator.pa_move); anim.setTarget(mTargetButton); anim.start(); このtranslationXは何処を指しているか? xmlでアニメーションを定義 コードからアニメーションを実行
23.
DroidKaigi 2016 @cattaka_net ObjectAnimator Viewクラスのメソッドを指している。 つまりリフレクションで叩いている。
24.
DroidKaigi 2016 @cattaka_net ObjectAnimator ObjectAnimator animator = ObjectAnimator.ofFloat(mTargetButton,
"translationX", 0F, mTargetButton.getWidth()); animator.setDuration(3000); animator.start(); 他にも ofInt や ofObject や ofMultiFloat などがある コードからアニメーションを実行 コードでアニメーションを定義
25.
DroidKaigi 2016 @cattaka_net ViewPropertyAnimator mTargetView.animate() .translationX(mTargetButton.getWidth()) .setDuration(3000) .start(); mTargetView.animate() .rotation(360f) .setDuration(3000) .start(); X方向に平行移動 360°回転 移動や回転以外に拡大縮小や透過も同じように書けます
26.
DroidKaigi 2016 @cattaka_net 複数のViewを含むレイアウト
27.
DroidKaigi 2016 @cattaka_net 名前の整理 ● Activity Animation ● Fragment Animation ● Transition ● Activity
Transition ● Fragment Transition それぞれ異なる動きをする。 (正式名称が見当たらなものは仮の名前です)
28.
DroidKaigi 2016 @cattaka_net Activity/Fragment Animation
29.
DroidKaigi 2016 @cattaka_net Activity Animation ● 必要なもの:xml &
code ● Viewを動かすのに使ったアニメーションと同 じものを使う Intent intent = new Intent(this, At2Activity.class); startActivity(intent); overridePendingTransition(R.anim.aa_slide_in, R.anim.aa_slide_out);
30.
DroidKaigi 2016 @cattaka_net Fragment Animation ● 必要なもの:xml &
code ● Viewを動かすのに使ったアニメーションと同じもの を使う ● Support LibraryのFragmentかどうかによって落と し穴がある ● Support Libraryを使うとき – View Animationを使う ● Support Libraryを使わないとき – Property Animationを使う
31.
DroidKaigi 2016 @cattaka_net Fragment Animation Fragment fragment
= Fa1Fragment.newInstance(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.setCustomAnimations(R.anim.aa_slide_in, R.anim.aa_slide_out); ft.replace(R.id.layout_fragment, fragment); ft.commit(); バックキーで戻る時のアニメーションを指定する 引数が4つのものも存在します。
32.
DroidKaigi 2016 @cattaka_net Transition
33.
DroidKaigi 2016 @cattaka_net 3つのTransition共通の考え方 ● 遷移前と遷移後のレイアウトに含まれるViewを 3つのグループに分けて考える ● 前後の画面と共通のView ● 前の画面のみのView ● 後の画面のみのView ● これら3グループについてそれぞれ動きを指定す る
34.
DroidKaigi 2016 @cattaka_net 3つのTransition共通の考え方 (1) (2) (3) (4) ● 前後の画面と共通のView:(1)は移動させる ● 前の画面のみのView :(2)(3)はフェードアウトさ せる ● 後の画面のみのView :(4)はフェードインさせる
35.
DroidKaigi 2016 @cattaka_net Transition ● 必要なもの:xml & code ● ViewGroupの中身を入れ替えるときに使う ● 正直ViewGroupをコードから直接追加したり除 去したり余りしないのでそもそも出番がすくな い
36.
DroidKaigi 2016 @cattaka_net Transition (1) (2) (3) (4)
37.
DroidKaigi 2016 @cattaka_net Transition Scene scene =
Scene.getSceneForLayout(mContainerLayout, R.layout.activity_ta_child_rb, this); Transition transition = TransitionInflater.from(this).inflateTransition(R.transition.ta); TransitionManager.go(scene, transition); 対象となるViewGroup 遷移後のレイアウト どのように遷移するか (次ページ)実行
38.
DroidKaigi 2016 @cattaka_net Transition <?xml version="1.0" encoding="utf-8"?> <transitionSet xmlns:android="http://schemas.android.com/apk/res/android"> <fade/> <changeBounds> <targets> <target
android:excludeId="@id/button_excluded"/> </targets> </changeBounds> </transitionSet>
39.
DroidKaigi 2016 @cattaka_net 指定できる動きの種類 Class Tag 動き AutoTransition
<autoTransition/> 自動 Fade <fade/> フェードイン/アウト (オプションで指定) ChangeBounds <changeBounds/> 移動とリサイズ Javadocを見ると、この他にChangeClipBounds, ChangeImageTransform, ChangeScroll, ChangeTransform, TransitionSet, Visibility, Explode, Slide がある
40.
DroidKaigi 2016 @cattaka_net Activity Transition ● 必要なもの:xml or
code (1) (2) (3) (4)
41.
DroidKaigi 2016 @cattaka_net Activity Transition ActivityOptions options =
ActivityOptions.makeSceneTransitionAnimation( this, new Pair<>(view.findViewById(R.id.image_logo), “transition:image_logo”) ); getWindow().setSharedElementEnterTransition(new ChangeBounds()); getWindow().setSharedElementReturnTransition(new ChangeBounds()); getWindow().setEnterTransition(new Fade()); getWindow().setExitTransition(new Explode()); Intent intent = new Intent(this, At2Activity.class); startActivity(intent, options.toBundle()); 遷移の前後で共通の要素を指定 それぞれの動きを指定する
42.
DroidKaigi 2016 @cattaka_net Activity Transition <?xml version="1.0"
encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:id="@+id/image_logo" android:layout_width="match_parent" android:layout_height="wrap_content" android:adjustViewBounds="true" android:src="@drawable/logo" android:transitionName=“transition:image_logo”/> <Button android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_gravity="center_horizontal" android:text="Button 3"/> </RelativeLayout>
43.
DroidKaigi 2016 @cattaka_net Fragment Transition ● 必要なもの:xml or
code (1) (2) (3) (4)
44.
DroidKaigi 2016 @cattaka_net Fragment Transition Fragment fragment
= Ft2Fragment.newInstance(); fragment.setEnterTransition(new Fade(Fade.IN)); fragment.setExitTransition(new Fade(Fade.OUT)); fragment.setSharedElementEnterTransition(new ChangeBounds()); fragment.setSharedElementReturnTransition(new ChangeBounds()); FragmentTransaction ft = getFragmentManager().beginTransaction(); ft.replace(R.id.layout_fragment, fragment); Fragment currentFragment = getFragmentManager().findFragmentById(R.id.layout_fragment); ft.addSharedElement(currentFragment.getView().findViewById(R.id.image_logo), "transition:image_logo"); ft.addSharedElement( currentFragment.getView().findViewById(R.id.button_a), "transition:button_a"); ft.addToBackStack(null); ft.commit(); 遷移の前後で共通の要素を指定 それぞれの動きを指定する
45.
DroidKaigi 2016 @cattaka_net Fragment Transition <?xml version="1.0"
encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <!-- 省略 --> <ImageView android:id="@+id/image_logo" ~~~~~~ android:transitionName="transition:image_logo"/> <FrameLayout ~~~~~~ > <Button android:id="@+id/button_a" ~~~~~~ android:text="Button A" android:transitionName="transition:button_a"/> </FrameLayout> <!-- 省略 --> </RelativeLayout>
46.
DroidKaigi 2016 @cattaka_net APIレベルについて 名前 API Level Drawable
Animation 1 (Android 1.0) Animated Vector Drawable 21 (Android 5.0) View Animation 1 (Android 1.0) Property Animation 11 (Android 3.0.x) Transition 19 (Android 4.4) Activity Transition 21 (Android 5.0) Fragment Transition 21 (Android 5.0)
47.
DroidKaigi 2016 @cattaka_net APIレベルについて ● Android 5.0で一通り揃っている ● Transitionが比較的新しいバージョンでないと 使えない ● Support Libraryにメソッドはあるけど肝心の Transitionのクラスが無いので使えない
48.
DroidKaigi 2016 @cattaka_net まとめ ● アニメーションの仕組みは地味に多い ● でもそれぞれ用途が異なる ● 用途に合わせたものを使おう ● ユーザーにわかりやすい表現をしよう
49.
DroidKaigi 2016 @cattaka_net サンプルアプリ https://github.com/cattaka/LearnAnimation ほとんどのコードのSnippetが入ってます
50.
DroidKaigi 2016 @cattaka_net ご清聴ありがとうございました Takao Sumitomo @cattaka_net
Download now