Slide 1

Slide 1 text

ෳࡶͳϨΠΞ΢τ૊Ή࣌͋Δ͋Δ͸ ίϯϙʔωϯτԽͰղܾ͠Α͏ ͋Δ͋ΔLTʙεϚϗΞϓϦ։ൃΤϯδχΞʙ VOL.3 2019/03/19 @GINYOLITH_TECH

Slide 2

Slide 2 text

ςΩετ SELF INTRODUCTION data class Ginyolith( val realName : String = “Fumiya Akagi", val nickName : String = "ぎーにょ", var belongingTo : String = "株式会社アイリッジ", var position : String = "Androidアプリ開発", val loves : List = mutableListOf( "写真", "アカペラ(音楽)", "インドカレー", "仮面ライダー"), val twitterId : String = "@ginyolith_tech" ) : Human()

Slide 3

Slide 3 text

AGENDA ࠓ೔͓࿩͢Δࣄ ▸ ෳࡶͳϨΠΞ΢τΛ૊Ή࣌͋Δ͋Δ ▸ Style/CustomView/include/Fragment ͷಛੑ ▸ Style/CustomView/include/Fragment ͷ࢖͍෼͚ ▸ ݱࡏͷ՝୊

Slide 4

Slide 4 text

ARUARU ෳࡶͳϨΠΞ΢τΛ૊Ή࣌͋Δ͋Δ ▸ ωετ͗ͯ͢͠ҙຯෆ໌ʹͳΔlayout.xml ▸ େྔͷViewΛίϯτϩʔϧ͢ΔɺActivity/Fragment/ViewModel ▸ width΍heightɺbackgroundͷઃఆʹσδϟϰΛײ͡Δࣄ͕ଟൃ ▸ Α͘Θ͔Μͳ͍͚Ͳdatabinding͕ಈ͔ͳ͍ʢٽʣ

Slide 5

Slide 5 text

HOW TO COMMONIZE VIEWS VIEWͷڞ௨Խͷํ๏ FRAGMENT INCLUDE STYLE CUSTOM VIEW ACTIVITY DIMEN.XML

Slide 6

Slide 6 text

HOW TO COMMONIZE VIEWS ࠓ೔͓࿩͢Δࣄ FRAGMENT INCLUDE STYLE CUSTOM VIEW ͦΕͧΕԿ͕ग़དྷΔͷʁ Ͳ͏࢖͍෼͚Δͷʁ

Slide 7

Slide 7 text

HOW TO COMMONIZE VIEWS STYLE ▸ ʮView ΍΢Οϯυ΢ͷ֎؍΍ॻࣜΛࢦఆ͢ΔϓϩύςΟͷू߹ʯ by Google Developers ▸ ThemeʹԠͯ͡ಈతʹ৭Λఆٛ͢Δ͜ͱ΋Մೳ ▸ ϩδοΫ΍ঢ়ଶΛ࣋ͭ͜ͱ͸ෆՄೳɻ͋͘·Ͱݟͨ໨ͷΈ੍ޚ

Slide 8

Slide 8 text

HOW TO COMMONIZE VIEWS - STYLE - View ΍΢Οϯυ΢ͷ֎؍΍ॻࣜΛࢦఆ͢ΔϓϩύςΟͷू߹

Slide 9

Slide 9 text

HOW TO COMMONIZE VIEWS - STYLE - View ΍΢Οϯυ΢ͷ֎؍΍ॻࣜΛࢦఆ͢ΔϓϩύςΟͷू߹ <item name="android:layout_width">match_parent</item> <item name="android:layout_height">1dp</item> <item name="android:layout_marginBottom">10dp</item> <item name="android:layout_marginTop">10dp</item> <item name="android:background">@color/borderGray</item>

Slide 10

Slide 10 text

HOW TO COMMONIZE VIEWS INCLUDE ▸ layout.xmlͰ࡞੒ͨ͠ϨΠΞ΢τΛ࢖͍·Θ͢ ▸ ϩδοΫΛ಺แ͠ͳ͍ ▸ ϩδοΫͱϨΠΞ΢τΛ෼཭ͯ͠ɺϩδοΫ͚ͩڞ༗Խ͕Մೳ ▸ ϩδοΫͰContextΛऔಘ͢Δͷ͕೉͍͠

Slide 11

Slide 11 text

HOW TO COMMONIZE VIEWS - INCLUDE - ϩδοΫΛ಺แ͠ͳ͍ class UserViewModel() { val searchTerm :String fun search() { repository .search(searchTerm) } } component_user_search.xml ϩδοΫͱঢ়ଶΛ ࣋ͭΠϯελϯεΛ஫ೖՄ ೳ

Slide 12

Slide 12 text

HOW TO COMMONIZE VIEWS - INCLUDE - ϩδοΫͱϨΠΞ΢τΛ෼཭ͯ͠ɺϩδοΫ͚ͩڞ༗Խ͕Մೳ component_user_search.xml component_user_search_text.xml ΄΅ߏ଄͸ಉ͕ͩ͡ɺඍົʹݟ ͨ໨͕ҟͳΔ ΄΅ߏ଄͸ಉ͕ͩ͡ɺ ඍົʹݟͨ໨͕ҟͳΔ

Slide 13

Slide 13 text

HOW TO COMMONIZE VIEWS - INCLUDE - ϩδοΫͱϨΠΞ΢τΛ෼཭ͯ͠ɺϩδοΫ͚ͩڞ༗Խ͕Մೳ component_user_search.xml ΄΅ߏ଄͸ಉ͕ͩ͡ɺඍົʹݟ ͨ໨͕ҟͳΔ ϩδοΫͷڞ௨ԽΛɺ
 ಛघͳॲཧΛॻ͔ͣʹߦ͏͜ͱ͕Մೳ component_user_search_text.xml

Slide 14

Slide 14 text

HOW TO COMMONIZE VIEWS CUSTOM VIEW ▸ ঢ়ଶͱϩδοΫΛ಺แ ▸ contextΛ༻͍ͨϩδοΫΛ࣮૷ՄೳʢIntentͷൃߦͳͲʣ ▸ ಠࣗͷattributeΛఆٛग़དྷΔ ▸ طଘͷViewΛ֦ுͯ͠࢖͏͜ͱ΋Մೳ ▸ ViewGroupΛࣗ࡞͢Δࣄ΋Մೳ ੍໿͕গͳ͘ɺ෯޿͍ػೳͱҙຯΛ΋ͨͤΒΕΔ

Slide 15

Slide 15 text

HOW TO COMMONIZE VIEWS - CUSTOM VIEW - ঢ়ଶͱϩδοΫΛ಺แ STYLE VIEW INCLUDE VIEW VIEW VIEW LOGIC(INJECTED) CUSTOM VIEW VIEW VIEW VIEW LOGIC ATTRIBUTE LOGIC(INJECTED) UI

Slide 16

Slide 16 text

HOW TO COMMONIZE VIEWS - CUSTOM VIEW - ঢ়ଶͱϩδοΫΛ಺แ CUSTOM VIEW VIEW VIEW VIEW LOGIC ATTRIBUTE LOGIC(INJECTED) UI Viewͷ૊Έ߹Θͤʢ୯ମView΋Մʣ Viewͷݟͨ໨ɺଐੑɺStyle Viewݻ༗ͷଐੑΛఆٛՄೳ Viewʹݻ༗ϩδοΫΛΧϓηϧԽ OnClickListener౳ɺϩδοΫΛ஫ೖ

Slide 17

Slide 17 text

HOW TO COMMONIZE VIEWS FRAGMENT ▸ ಠࣗʹϥΠϑαΠΫϧΛ࣋ͭɻʢ།ҰϥΠϑαΠΫϧपΓͷॲཧΛΧϓηϧԽՄೳʣ ▸ ਌Viewͱͷίϛϡχέʔγϣϯ͸೉͍͠ɻ ▸ ಛఆͷActivity/Fragement͔ΒͷΈݺͼग़ͤΔΑ͏ʹ͢Δ౳ରࡦ͕ඞཁ ▸ ϩδοΫΛ஫ೖग़དྷͳ͍ ▸ CustomView΍Styleͱൺ΂ɺݟͨ໨Λ਌͔Β੍ޚ͠ਏ͍ ಠཱੑ͕ߴ͍CUSTOMVIEW

Slide 18

Slide 18 text

Ͳ͏࢖͍෼͚Ε͹͍͍ʁ ಛੑ͸ཧղͨ͠

Slide 19

Slide 19 text

COMPARISON OF COMMONIZING WAYS ൺֱ / Style include CustomView Fragment LifecycleΛݕ஌ × × ˚ ○ ਌View͔Βঢ়ଶΛ੍ޚ × ˚ ○ × layout.xmlͰݟͨ໨Λ੍ޚ ○ × ○ × ϩδοΫΛ಺แ × × ○ ○ ϩδοΫΛ஫ೖ × ○ ○ × attr.xmlʹΑΔΧελϜཁૉ × × ○ ×

Slide 20

Slide 20 text

COMPARISON OF COMMONIZING WAYS ൺֱ / Style include CustomView Fragment LifecycleΛݕ஌ × × ˚ ○ ਌View͔Βঢ়ଶΛ੍ޚ × ˚ ○ × layout.xmlͰݟͨ໨Λ੍ޚ ○ × ○ × ϩδοΫΛ಺แ × × ○ ○ ϩδοΫΛ஫ೖ × ○ ○ × attr.xmlʹΑΔΧελϜཁૉ × × ○ × ݟͨ໨ͷڞ௨ԽʹಛԽ

Slide 21

Slide 21 text

COMPARISON OF COMMONIZING WAYS ൺֱ / Style include CustomView Fragment LifecycleΛݕ஌ × × ˚ ○ ਌View͔Βঢ়ଶΛ੍ޚ × ˚ ○ × layout.xmlͰݟͨ໨Λ੍ޚ ○ × ○ × ϩδοΫΛ಺แ × × ○ ○ ϩδοΫΛ஫ೖ × ○ ○ × attr.xmlʹΑΔΧελϜཁૉ × × ○ × ϩδοΫΛ஫ೖՄೳ

Slide 22

Slide 22 text

COMPARISON OF COMMONIZING WAYS ൺֱ / Style include CustomView Fragment LifecycleΛݕ஌ × × ˚ ○ ਌View͔Βঢ়ଶΛ੍ޚ × ˚ ○ × layout.xmlͰݟͨ໨Λ੍ޚ ○ × ○ × ϩδοΫΛ಺แ × × ○ ○ ϩδοΫΛ஫ೖ × ○ ○ × attr.xmlʹΑΔΧελϜཁૉ × × ○ × Ұ௨Γग़དྷΔ

Slide 23

Slide 23 text

COMPARISON OF COMMONIZING WAYS ൺֱ / Style include CustomView Fragment LifecycleΛݕ஌ × × ˚ ○ ਌View͔Βঢ়ଶΛ੍ޚ × ˚ ○ × layout.xmlͰݟͨ໨Λ੍ޚ ○ × ○ × ϩδοΫΛ಺แ × × ○ ○ ϩδοΫΛ஫ೖ × ○ ○ × attr.xmlʹΑΔΧελϜཁૉ × × ○ × ਌VIEW͔Βͷ੍ޚ ʹ੍͓͍ͯ໿

Slide 24

Slide 24 text

·ͱΊ

Slide 25

Slide 25 text

SUMMURY ڞ௨Խର৅͕ɾɾɾ ෳ਺ͷVIEWͷ ૊Έ߹Θͤ STYLE NO Yes ϩδοΫΛ ಺แ Yes ਌VIEW͔Βݟ ͨ໨Λ੍ޚ INCLUDE NO NO FRAGMENT CUSTOM VIEW Yes

Slide 26

Slide 26 text

SUMMARY ·ͱΊ ▸ AndroidͷViewͷڞ௨Խʹ΋৭ʑͳํ๏͕͋Δ ▸ ੍໿΍ҙຯ෇͚ʹԠͯ͡࢖͍෼͚Δͱ… ▸ Ϧʔμϒϧͳίϯϙʔωϯτʹ ▸ ༨෼ͳ࣮૷ΛͤͣΑΓޮ཰తʹViewΛ࡞੒Մೳ

Slide 27

Slide 27 text

PROBLEMS ՝୊ ▸ component_ͩͬͨΓview_ͩͬͨΓɺ໋໊نଇ ͕όϥόϥ ▸ atomic designͷߟ͑ํΛద༻ͯ͠componentͷ ཻ౓Λ੔ཧग़དྷͳ͍͔ߟ͍͑ͯΔ

Slide 28

Slide 28 text

THANK YOU FOR LISTENING!!