pixiv SUMMER BOOT CAMP 2015 講義資料
by
Keisuke SASAKI
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Androidのはなし るーく@RooandQoo
Slide 2
Slide 2 text
About me 佐々木 佳祐@るーく 社歴2(4)年目 アプリ@マンガプロジェクト インターネットで二児の父をしています
Slide 3
Slide 3 text
pixiv マンガ
Slide 4
Slide 4 text
pixiv マンガ ・(ほぼ)毎日届く編集部のオススメマンガ ・読みやすい縦読みビューワー ・pixivコミックの連載も読めちゃう ・無料!!!!!!!!!!!!
Slide 5
Slide 5 text
pixiv マンガ Android / iOS
Slide 6
Slide 6 text
pixiv マンガ このアプリを つくる上での テクニックとかを 紹介していきます
Slide 7
Slide 7 text
º iOSのみなさんゴメンナサイ…。
Slide 8
Slide 8 text
Activityはなるべくスリムにする
Slide 9
Slide 9 text
画面を構成する基本要素 Activity Fragment (Custom)View
Slide 10
Slide 10 text
Activity
Slide 11
Slide 11 text
Fragment
Slide 12
Slide 12 text
Fragment
Slide 13
Slide 13 text
(Custom)View
Slide 14
Slide 14 text
(Custom)View
Slide 15
Slide 15 text
(Custom)View
Slide 16
Slide 16 text
その気になればActivity1つでなんでもできる
Slide 17
Slide 17 text
その気になればActivity1つでなんでもできる なんでもは言いすぎたかも
Slide 18
Slide 18 text
値の処理 バリデーション アニメーション ネットワーク処理 DB操作 メニュー 画面回転の対応 Intentの処理 Fragment管理 KeyEvent 戻るボタン テーマの設定 他の画面から呼び出される etcetc…
Slide 19
Slide 19 text
全部やらせたら当然太る
Slide 20
Slide 20 text
肥大化したクラスはメンテしたくない
Slide 21
Slide 21 text
Activity, Fragment, View 得意分野がそれぞれ異なるので 任せることが大事
Slide 22
Slide 22 text
特にActivityは Activityにしかできないことを やらせる方が良い
Slide 23
Slide 23 text
値の処理 バリデーション アニメーション ネットワーク処理 DB操作 メニュー 画面回転の対応 Intentの処理 Fragment管理 KeyEvent 戻るボタン テーマの設定 他の画面から呼び出される etcetc…
Slide 24
Slide 24 text
メニュー Intentの処理 Fragment管理 テーマの設定 他の画面から呼び出される
Slide 25
Slide 25 text
FragmentとViewは 何をすべきか?
Slide 26
Slide 26 text
・Viewの集合をユーザに見せる Fragment 定義されたレイアウトを表示する 画面を切り替える
Slide 27
Slide 27 text
・ライフサイクルに応じた処理 Fragment Activityにくっついた、離れた Viewが生まれた、死んだ 画面が回転された
Slide 28
Slide 28 text
・ネットワーク処理 Fragment リクエストを投げる 結果を受け取って何かする
Slide 29
Slide 29 text
・DB, ファイルの操作 Fragment
Slide 30
Slide 30 text
・画面パーツとして利用する (Custom)View パーツにユーザが操作を加えたとき なんらかの値が変わる場合 CustomViewが処理する
Slide 31
Slide 31 text
CustomViewの使用例
Slide 32
Slide 32 text
pixivマンガのトップ
Slide 33
Slide 33 text
CustomView
Slide 34
Slide 34 text
CustomView ここが 変わる
Slide 35
Slide 35 text
CustomView ちなみに これも CustomView
Slide 36
Slide 36 text
Activity(この場合はFragment)でもできる 1. GridViewとTextViewをFragment内で定義 2. ジャンル一覧のGridViewにListenerを設定 3. Listener内のonItemSelectedでTextViewの中身を更新
Slide 37
Slide 37 text
処理をViewに譲渡することで 見通しがよくなる Fragmentから GenreLabelView.setGenreTextView(“ジャンル名”) を呼ぶだけ!!
Slide 38
Slide 38 text
CustomViewのつくりかた 1. CustomViewとして使うもののレイアウトファイルをつくる 2. なんちゃらLayoutを継承したクラスをつくる 3. コンストラクタを書く 4. あるActivity(Fragment)のレイアウトに埋め込む 5. または、使いたい場面で直接インスタンスを作って使う
Slide 39
Slide 39 text
レイアウト埋め込み型
Slide 40
Slide 40 text
インスタンスつくる型
Slide 41
Slide 41 text
たのしいCustomViewライフを!!
Slide 42
Slide 42 text
Fragmentは闇が深い
Slide 43
Slide 43 text
Fragmentは人類には早すぎたんや… @choco_biimu
Slide 44
Slide 44 text
とはいえ使わないわけにもいかない
Slide 45
Slide 45 text
用法・用量を守ろう 1. コンストラクタのつくりかたを守る 2. 初期値の設定はset/getArguments()で 3. startActivityはあんましないほうが良い 4. 特にstartActivityForResult()は怪しい 5. などなど ググるといい感じの資料が出てくる
Slide 46
Slide 46 text
用法・用量を守ろう 1. コンストラクタのつくりかたを守る 2. 初期値の設定はset/getArguments()で 3. startActivityはあんましないほうが良い 4. 特にstartActivityForResult()は怪しい 5. などなど というかこの資料もリファレンスがあるので あとで教えます
Slide 47
Slide 47 text
細かいこといろいろ
Slide 48
Slide 48 text
画面遷移はcreateIntent()で! Activity1 Activity2
Slide 49
Slide 49 text
よくあるパターン Activity1.startActivity(this, Activity2.class)
Slide 50
Slide 50 text
よくあるパターン Intent intent = new Intent(this, Activity2.class) intent.putExtra(“hoge”, 1) startActivity(intent) 遷移先のことを常に意識しないといけない
Slide 51
Slide 51 text
createIntent public static Intent createIntent(Activity fromactivity) { Intent intent = new Intent(fromActivity, Activity2.class); return intent; } 呼び出される側(Activity2)
Slide 52
Slide 52 text
createIntent startActivity(Activity2.createIntent(this)) 呼び出す側(Activity1)
Slide 53
Slide 53 text
createIntent public static Intent createIntent(Activity fromactivity, int a) { Intent intent = new Intent(fromActivity, Activity2.class); intent.putExtra(“hoge”, a) return intent; } 値を渡したいとき
Slide 54
Slide 54 text
createIntent startActivity(Activity2.createIntent(this, 1)) 値を渡したいとき キーの名前を意識しなくて済む
Slide 55
Slide 55 text
List(Grid)Viewを使うときは ViewHolderを実装する スクロール した時に Viewを 使いまわす
Slide 56
Slide 56 text
List(Grid)Viewを使うときは ViewHolderを実装する DataBindingで 置き換えられそう スクロール した時に Viewを 使いまわす
Slide 57
Slide 57 text
Activityはなるべくスリムに まとめ Fragment, CustomViewをうまく使おう Fragmentを使うときはルールを守ろう 画面遷移はcreateIntent()で DataBindingすごそう
Slide 58
Slide 58 text
参考資料 IUUQXXXTMJEFTIBSFOFUZBO[NESPJELBJHJZBO[N "DUJWJUZ 'SBHNFOU $VTUPN7JFXͷ͍͚Ϛονϣͳ "DUJWJUZʹ͞ΑͳΒ͢Δํ๏
Slide 59
Slide 59 text
参考資料 IUUQHGYIBUFOBCMPHDPNFOUSZ "OESPJE%BUB#JOEJOHಋೖͷୈҰา #VUUFS,OJGF7JFX)PMEFSύλʔϯΛஔ͖͑Δ