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
はじめてのKenBurnsEffect
Search
Yoichi Nishimura
February 18, 2015
Technology
1
1.4k
はじめてのKenBurnsEffect
第14回 potatotips (iOS/Android開発Tips共有会) での発表資料
Yoichi Nishimura
February 18, 2015
Tweet
Share
More Decks by Yoichi Nishimura
See All by Yoichi Nishimura
Material Designの作り方 〜Bottom Sheets編〜
nissiy
1
680
iQONのWear Notification最適化
nissiy
2
430
iQON Engineer Seminar - Android
nissiy
0
4.1k
Other Decks in Technology
See All in Technology
Helm , Kustomize に代わる !? 次世代 k8s パッケージマネージャー Glasskube 入門 / glasskube-entry
parupappa2929
0
250
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
660
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.8k
CZII - CryoET Object Identification 参加振り返り・解法共有
tattaka
0
370
【Developers Summit 2025】プロダクトエンジニアから学ぶ、 ユーザーにより高い価値を届ける技術
niwatakeru
2
1.4k
N=1から解き明かすAWS ソリューションアーキテクトの魅力
kiiwami
0
130
エンジニアのためのドキュメント力基礎講座〜構造化思考から始めよう〜(2025/02/15jbug広島#15発表資料)
yasuoyasuo
17
6.8k
The Future of SEO: The Impact of AI on Search
badams
0
200
表現を育てる
kiyou77
1
210
Nekko Cloud、 これまでとこれから ~学生サークルが作る、 小さなクラウド
logica0419
2
970
『衛星データ利用の方々にとって近いようで触れる機会のなさそうな小話 ~ 衛星搭載ソフトウェアと衛星運用ソフトウェア (実物) を動かしながらわいわいする編 ~』 @日本衛星データコミニティ勉強会
meltingrabbit
0
150
速くて安いWebサイトを作る
nishiharatsubasa
10
13k
Featured
See All Featured
Optimizing for Happiness
mojombo
376
70k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
40
2k
Raft: Consensus for Rubyists
vanstee
137
6.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
A better future with KSS
kneath
238
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
28
5.5k
Rebuilding a faster, lazier Slack
samanthasiow
80
8.8k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.2k
How STYLIGHT went responsive
nonsquared
98
5.4k
Embracing the Ebb and Flow
colly
84
4.6k
Transcript
͡Ίͯͷ,FO#VSOT&⒎FDU OJTTJZ
"CPVU.F w OJTTJZʢʹͬ͠ʔʣ !ZPJDIJOJTIJNVSB!OJTTJZ w 7"4*-: JOD w J20/࡞͍ͬͯ·͢ w
झຯөըؑ
,FO#VSOT&⒎FDUʁʁʁ
,FO#VSOT&⒎FDU w υΩϡϝϯλϦʔөըͷಜ ,FO#VSOTʢ!LFOCVSOTʣ͕ଟ༻͢Δ ύϯɾνϧτͱζʔϜΛΈ߹Θٕͤͨ๏ w ੩ࢭըʹಈ͖Λ༩͑ΔޮՌ͕͋Γ·͢ w (PPHMF1MBZχϡʔεελϯυͷΞϨ IUUQKBXJLJQFEJBPSHXJLJέϯɾόʔϯζ
,FO#VSOT7JFX࡞Γ·ͨ͠
'SBNF-BZPVUΛܧঝͨ͠$VTUPN7JFX public class KenBurnsView extends FrameLayout { private boolean mDebugLog
= false; private String mDebugTag = “KenBurnsView";
͍͍͢ΠϯλϑΣʔε @InjectView(R.id.ken_burns_effect) KenBurnsView mKenBurnsEffect; private void startKenBurnsEffect(String... urls) { mKenBurnsEffect.setUrls(urls);
} w "DUJWJUZʢ'SBHNFOUʣ͔Β63-PSϦιʔε*%ΛྻͰ͚ͩ͢
͋ͱࣗಈʹΞχϝʔγϣϯ @Override protected void onDetachedFromWindow() { super.onDetachedFromWindow(); mHandler.removeCallbacks(mAnimationRunnable); } w
ը૾ͷಡΈࠐΈ͕ྃͨ͠ΒΞχϝʔγϣϯ։࢝ w PO%FUBDIFE'SPN8JOEPX ͰΞχϝʔγϣϯऴྃ
Ξχϝʔγϣϯ7JFX1SPQFSUZ"OJNBUPSͰ // Ξχϝʔγϣϯͷॳظঢ়ଶϥϯμϜͰੜ͠ɺ͜ͷલͰઃఆ͢Δ ViewPropertyAnimator animator = view.animate() .translationX(toTranslationX) .translationY(toTranslationY) .scaleX(toScale)
.scaleY(toScale) .setDuration(duration); animator.start(); w ը૾αΠζͱཚΛͬͯ4DBMFͱ5SBOTMBUJPOΛܾఆͤ͞Δ w ͦͷใΛͬͯ7JFX1SPQFSUZ"OJNBUPSͰΞχϝʔγϣϯ
̏ ̎ ը૾ͷݟͤํʢ/ͷ߹ʣ ̍ ࣌ؒͷྲྀΕ ̏ ̎ ̍ ̏ ̎
̍ w ֤ͷը૾ͷBMQIBΛ͍ͬͯ͡ը૾͕ೖΕସΘΔΑ͏ʹݟ͍ͤͯΔ
͜ΕͰ,FO#VSOT7JFX͕࡞ΕΔͰʂ εϚϗΞϓϦʹԶͷ໊͕ڹ͖ΔΜʂ
طʹJ20/Ͱ͍ͬͯ·͢ w J20/ͷϒϥϯυϖʔδͰ࣮ w ֤ϒϥϯυͷϞσϧೖΓը૾͔ΒΛදࣔ ࡱΓͷΈͷϒϥϯυਓؾΞΠςϜͰิర
Γ͍ͨ͜ͱ w େ͖͍ը૾͕͞Εͨࡍͷ00.ରࡦΛೖΕΔ w ը૾ͷऔಘॲཧ͕Πέͯͳ͍ͷͰ͢ w Ξχϝʔγϣϯ։࢝ޙʹ63-PSϦιʔε*%Λ ड͚औΕΔΑ͏ʹͯ͠ಈతʹը૾Λࠩ͠ସ͑ΒΕΔΑ͏ʹ͢Δ w ֎෦ϥΠϒϥϦԽͯ͠ެ։
͍͞͝ʹ w εϚϗΞϓϦʹөըͷٕ๏͕ೖ͞Ε͡Ί͍ͯΔ 48:FBSͳͷͰ++"CSBNTͷϨϯζϑϨΞͱ͔དྷΔ͔X w ,FO#VSOT&⒎FDUΧοί͍͍ʂঁͷࢠ͔Βͷධྑ͍ʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠