Slide 1

Slide 1 text

ͯ͞ɺAndroid ΞϓϦͷ ύϑΥʔϚϯεΛ্͛Δ ํ๏ʹ͍ͭͯޠΓ·͔͢ 1 2016೥5݄25೔ʢਫʣ
 ؔ੢ϞόΠϧΞϓϦݚڀձ #14

Slide 2

Slide 2 text

ڮ౓๎໻ʢ͸͠Ͳͱ΋΍ɺ1990೥7݄15೔ - ʣ ࣗݾ঺հ • ژ౎ࢢ੢ژ۠ ࡏॅʢ࣮Ոʣ • Android ྺɿ4.0 (Ice Cream Sandwich) ͕࠷৽όʔδϣϯͩͬͨࠒ͔ Β • ಛٕɿ48/46άϧʔϓͷݸମࣝผ • ࠷ۙѲखձʹߦͬͨਓɿਢ౻႒ʑՖʢNMB48ʣ
 ఩ֶຊͷൢଅΠϕϯτˏάϥϯϑϩϯτେࡕ 2

Slide 3

Slide 3 text

2016೥10݄15೔(౔) શࠃ౦ๅܥϩʔυγϣʔ өըʰԿऀʱʹөΓࠐΜͰ͍Δ͔΋ʁ • ݪ࡞ɿேҪϦϣ΢ • ʰۅౡɺ෦׆΍ΊΔͬͯΑʱ • ʰνΞஉࢠ!!ʱ • ʰ෢ಓؗʱ • ʰ··ͳΒͳ͍͔Βࢲͱ͋ͳͨʱ
 • ؂ಜɾ٭ຊɿࡾӜେี • ʰϘʔΠζɾΦϯɾβɾϥϯʱ • ʰѪͷӔʱ 3

Slide 4

Slide 4 text

͜ͷεϥΠυͷ಺༰͸
 աڈͷҨ෺ʹͳΓͦ͏Ͱ͢
 ࣌୅͸มΘΓ·͢ ʮؔϞό #14ʯൃදલʹ௥هᶃ
 લఏ 4

Slide 5

Slide 5 text

ConstraintLayout
 Λ࢖͍·͠ΐ͏ʂ ʮؔϞό #14ʯൃදલʹ௥هᶄ
 ͜Ε͔Β͸ Google I/O 2016 Ͱൃද͞Εͨ 5

Slide 6

Slide 6 text

ҎԼຊฤ 6

Slide 7

Slide 7 text

Android ΞϓϦ։ൃ → ϨΠΞ΢τͷ࿩ ຊ೔ͷൃද಺༰ ֓ཁ ᶃ ViewGroup Λଟॏʹωε τͤ͞Δͷ͸ྑ͘ͳ͍ ᶄ ը໘ඳը଎౓ˍεΫϩʔ ϧ଎౓Λվળ͢ΔͨΊʹ 7

Slide 8

Slide 8 text

ViewGroup ͷऔΓѻ͍ .xml ϨΠΞ΢τ࡞੒࣌ͷ஫ҙ఺ • ViewGroup ͷछྨ • LinearLayout • RelativeLayout • FrameLayout • ViewGroup Λଟ༻ͯ͠ϨΠ Ξ΢τͷ֊૚Λਂ͘͢Δͱը ໘ͷදࣔ଎౓͕஗ΕͨΓɺε Ϋϩʔϧ͕ΨλΨλ͢ΔͳͲ ͷฐ֐͕ੜ͡·͢ 8

Slide 9

Slide 9 text

ʙImageView Λදࣔ͢Δ .xml ϨΠΞ΢τͷαϯϓϧʙ ViewGroup Λωετ͢ΔͱύϑΥʔϚϯε͕௿Լ 
 
 
 
 
 
 
 
 
 
 
 
 
 
 9 
 
 
 
 
 
 ྑ͍ྫ ˕ LinearLayout ͕ 1 ֊૚ ѱ͍ྫ × LinearLayout ͕ ແବʹ 4 ֊૚

Slide 10

Slide 10 text

ʙؔ੢ϞόΠϧΞϓϦݚڀձ#14 LT༻ʹݕূಈըΛ࡞ͬͯΈΔʙ ViewGroup Λωετ͢ΔͱύϑΥʔϚϯε͕௿Լ 10 εΫϩʔϧॲཧ͕ॏ͘ͳΔ͜ͱ͕Ұ໨Ͱ෼͔Δಈը 
 खॱɿ 1.ηϧͷ ViewGroup ͕1֊૚ͱ100֊૚ͷ ListView ΞϓϦΛ࡞੒ 2.λʔϛφϧͰ adb shell screenrecord /sdcard/video.mp4 ࣮ߦͯ͠ ୺຤ͷը໘Λ࿥ը͢Δ 3.શ͘ಉ͡੎͍ͰεΫϩʔϧ͢ΔͨΊʹλʔϛφϧ͔Β adb shell input touchscreen swipe x1 y1 x2 y2 Λ࣮ߦ͢Δ 4.iMovie ͷʮεϓϦοτεΫϦʔϯʯͰ2ͭͷಈըΛฒ΂ͨ΋ͷΛ1 ͭͷಈըͱͯ͠อଘ͢Δ

Slide 11

Slide 11 text

ʙεΫϩʔϧͷൺֱಈը ViewGroup 1֊૚ VS 100֊૚ʙ ViewGroup Λωετ͢ΔͱύϑΥʔϚϯε͕௿Լ 11 ViewGroup 1 ֊૚ ˕ ܰ΍͔ʹಈ͘ ViewGroup 100 ֊૚ × ΨλΨλ͢Δ

Slide 12

Slide 12 text

ͦͷଞʹಘͨ஌ݟʢ୤ઢؾຯʣ ViewGroup ೖΕࢠͷൺֱಈըΛ࡞ͬͯΈͯ • Android 5.0 ܥ (Lollipop) Ͱ͸ LinearLayout Λ໿100֊૚ೖΕࢠʹ͠ ͯ΋ StackOverflow ΤϥʔͰڧ੍ऴྃ͠ͳ͍ • Android 4.x ܥҎԼͰ͸ LinearLayout ͷೖΕࢠ20֊૚Ҏ಺Ͱ StackOverflow Τϥʔൃੜ • Android 5.0, 6.0 ܥͰ͸ ViewGroup Λଟ༻ͯ͠΋ಈ࡞͸ׂͱ͍ܰ
 ʢωετͷӨڹΛड͚ʹ͍͘ʣ
 ʢͱ͍͏͔ݩʑૉૣ͘ಈ͘ʣ 12

Slide 13

Slide 13 text


 ϨΠΞ΢τ಺ͷ
 ແବͳ ViewGroup
 ࡟ݮํ๏
 
 ᶃ PercentRelativeLayout
 ᶄ merge λά ը໘දࣔ଎౓ˍεΫϩʔ ϧ଎౓Λվળ͢ΔͨΊʹ 13

Slide 14

Slide 14 text

PercentRelativeLayout ํ๏ͦͷᶃ 14

Slide 15

Slide 15 text

ͦͷᶃ PercentRelativeLayout ViewGroup ͷ࡟ݮํ๏ • ଟػೳʹͳͬͨ RelativeLayout • LinearLayout ͷ layout_weight ૬౰ͷ΋ͷ͕ RelativeLayout Ͱ ࢖͑ΔʢαΠζΛ%Ͱࢦఆʣ ྫʣɹ
 15

Slide 16

Slide 16 text

ͦͷᶃ PercentRelativeLayout ViewGroup ͷ࡟ݮํ๏ • LinearLayout ͱ FrameLayout ͔͠࢖Θͳ͍റΓͰෳࡶͳσβΠϯͷ ϨΠΞ΢τΛ࡞Ζ͏ͱͨ͠৔߹
 ˠ ؤுͬͯ ViewGroup ͷ࢖༻Λ཈͑Α͏ͱͯ͠΋ଟॏʹωετ͠ ͯ͠·͏ 1֊૚Ͱ࡞Ζ͏ͱ͢Δͱݶք͕དྷΔ • PercentRelativeLayout Λ࢖༻ͨ͠৔߹
 ˠ PercentRelativeLayout 1֊૚ͰෳࡶͳσβΠϯͷϨΠΞ΢τ͕࠶ ݱͰ͖ΔՄೳੑ͕͋Δ 16

Slide 17

Slide 17 text

merge λά ํ๏ͦͷᶄ 17

Slide 18

Slide 18 text

ͦͷᶄ merge λά ViewGroup ࡟ݮํ๏ • ViewGroup Λ extends ͨ͠ΧελϜϏϡʔͰ .xml Λ࢖༻ͯ͠
 ϨΠΞ΢τશମΛ࡞੒͢Δ৔߹ .xml ͷ1൪֎ଆ͸ merge λάʹ
 ͠·͠ΐ͏ ⭐ • ͜ͷ .xml ͷ1൪֎ଆΛ ViewGroup ʹͯ͠͠·͏ͱɺ1֊૚ແବʹ ViewGroup ͕૿͑ͯ͠·͏͜ͱʹͳΓ·͢ ☠ 18

Slide 19

Slide 19 text

ͦͷᶄ merge λάɿJava ଆαϯϓϧίʔυ ViewGroup ࡟ݮํ๏ 19 package jp.co.sample.package;
 
 import android.content.Context;
 import android.support.percent.PercentRelativeLayout;
 import android.util.AttributeSet;
 import android.view.View;
 
 /**
 * merge λάΛ࢖༻ͨ͠ΧελϜϏϡʔ
 */
 public class SampleCustomView extends PercentRelativeLayout {
 
 public SampleCustomView(Context context) {
 this(context, null);
 }
 
 public SampleCustomView(Context context, AttributeSet attrs) {
 this(context, attrs, 0);
 }
 
 public SampleCustomView(Context context, AttributeSet attrs, int defStyle) {
 super(context, attrs, defStyle);
 View.inflate(context, R.layout.custom_view, this);
 }
 } SampleCustamView.java

Slide 20

Slide 20 text

ͦͷᶄ merge λάɿ.xml ଆαϯϓϧίʔυ ViewGroup ࡟ݮํ๏ 20 
 
 
 
 
 
 
 custom_view.xml

Slide 21

Slide 21 text

ϨΠΞ΢τͷ ViewGroup ֊૚Λઙ͘͢ΔϝϦοτ ·ͱΊ • Android 4.x ܥҎԼͷ৔߹͸ಛʹΞϓϦͷύϑΥʔϚϯε͕ྑ͘ͳΔ • ViewGroup Λ1֊૚࡟ݮ͚ͨͩ͠Ͱ΋ޮՌ͕ग़Δ • .xml ͷίʔυ͕ಡΈқ͘ͳΔ • .xml ͷωετ͕ઙ͍ͱ௥͍͔͚қ͍Ͱ͢ 21 ViewGroup ͷ۩ମతͳ࡟ݮํ๏ • PercentRelativeLayout • merge λά

Slide 22

Slide 22 text

ऴΘΓ FIN. 22

Slide 23

Slide 23 text

࣭ٙԠ౴ᶃ ʮؔϞό #14ʯൃදऴྃޙ • Q: ࣮ྫͱͯ͠Կ֊૚͙Β͍ͷϨΠΞ΢τͰ ViewGroup Λ࡟ݮͯ͠ ͲΕ͘Β͍ߴ଎Խͨ͠ʁ • A: ViewGroup ͕ 4ɺ5֊૚ωετͨ͠ ListView ͷϨΠΞ΢τ͔Β 1 ֊૚࡟ݮ͢ΔͱεΫϩʔϧ͕ҎલΑΓܰ͘ͳͬͨͱ෼͔Δ͙Β͍ 23

Slide 24

Slide 24 text

࣭ٙԠ౴ᶄ ʮؔϞό #14ʯൃදऴྃޙ • Q: RelativeLayout Ͱ͸μϝͳΜͰ͔͢ʁ PercentRelativeLayout ͷ Ͳ͕͍͍͜ΜͰ͔͢ʁ • A: PercentRelativeLayout ͸ RelativeLayout ͷੑೳ ʴ TextView ౳ ΢ΟδΣοτͷαΠζΛॎԣύʔηϯτࢦఆͰ͖ΔͷͰ 1 ֊૚Ҏ಺ Ͱ࡞੒Ͱ͖ΔσβΠϯͷόϦΤʔγϣϯ͕૿͑Δ͸ͣ 24

Slide 25

Slide 25 text

࣭ٙԠ౴ᶅ ʮؔϞό #14ʯൃදऴྃޙ • Q: ൃදͰ͋ͬͨಈըҎ֎Ͱ ViewGroup ࡟ݮͷޮՌΛଌఆͰ͖Δํ ๏͸͋Γ·ͤΜ͔ʁ • A: ౰೔͸υ๨Εͯ͠౴͑ΒΕ·ͤΜͰ͕ͨ͠ɺݕࡧͯ͠ࢥ͍ग़͠· ͨ͠ɻHierarchy Viewer Λ࢖͏ͱϨΠΞ΢τ࡞੒·Ͱʹ͔͔ͬͨ࣌ ͕ؒදࣔ͞ΕΔΑ͏Ͱ͢ 25

Slide 26

Slide 26 text

Ϙπʹͨ͠
 εϥΠυ 26

Slide 27

Slide 27 text

ͦͷᶃ աڈͷաͪ • େֶੜ࣌୅ʹ RelativeLayout Ͱ࠳ંͨͨ͠ΊɺҎ߱ LinearLayout ͱ FrameLayout ͔͠࢖Θͳ͘ͳΔ • ʮ layout_above, layout_below Λ
 ͪΌΜͱઃఆ͍ͯ͠Δ͸ͣͳͷʹ
 ࢥͬͨ௨Γදࣔ͞Εͳ͍ʂ ʯ • ↑ ࠓͰ͸࢖͍͜ͳͤΔΑ͏ʹͳΓ·ͨ͠ ※ ্ख͘ RelativeLayout Λ࢖͍͜ͳ͍ͤͯͳ͍ਤ 27

Slide 28

Slide 28 text

ͦͷᶄ աڈͷաͪ • ΋͏͍͍େਓͳͷʹɺViewGroup ͷωετ͕ਂ͘ͳΔͱΞϓϦͷύ ϑΥʔϚϯε͕ѱ͘ͳΔ͜ͱΛ஌Βͣʹ LinearLayout ͱ FrameLayout Λ࢖͍·͘Δ • ʮݮΔ΋Μ͡Όແ͍͠ʯ • ʮ TextView Λάϧʔϐϯάͯ͠ margin, padding ·ͱΊͯઃఆ͠ Αʂʯ • ʮ ViewGroup Ͱ·ͱΊͯ ClickListener ઃఆͨ͠Ζʂ ʯ 28

Slide 29

Slide 29 text

ͦͷᶅ աڈͷաͪ • RelativeLayout ΛҰ੾࢖ΘͣແࣄΞϓϦΛϦϦʔεʂ • ViewGroup ͷ֊૚͕ਂ͗ͯ͢ WebView ͷํ͕εΫϩʔϧ͕଎͍Ϩ ϕϧʂ • ޾͍ʹ΋(ʁ)ϨϏϡʔͰʮεΫϩʔϧ஗ա͗Δ΍Ζʂʯ
 ͱ͍͏ҙݟ͸ແ͔ͬͨ • ਓ͸஌Γಘͳ͍΋ͷΛٻΊͳ͍ͷ͔ 29

Slide 30

Slide 30 text

ΞϓϦͷεΫϩʔϧ͕ ΊͪΌ×2 ஗͘ͳΔ ViewGroup ͷଟॏωετʹΑΔѱӨڹ • Android 5.0, 6.0ܥ͸εϖοΫ͕͍͍ͷͰ ViewGroup Λωετͤ͞ ͍ͯͯ΋ׂͱεϜʔζʹεΫϩʔϧ͢Δ • Android 4.0ܥͰ͸εΫϩʔϧ͕ॏ͗ͯ͢࢖͍෺ʹͳΒͳ͍Ϩϕϧ • ૣ͘αϙʔτΛ੾Γ͍ͨʂͱࢥ͏΄Ͳ 30

Slide 31

Slide 31 text

͋Δ೔
 ʮViewGroup Λ࢖͍ա͗Δͱ
 ύϑΥʔϚϯε͕௿Լ͢Δʯ
 ͱ͍͏هࣄΛ໨ʹ͢Δ 31

Slide 32

Slide 32 text

ͦͯ͠
 ϨΠΞ΢τ಺ͷ
 ແବͳ ViewGroup
 ۦஞ࡞ۀʹಥೖ͢Δ 32

Slide 33

Slide 33 text

FIN. ऴΘΓ 33