Slide 1

Slide 1 text

2019.02.28 Kenichi Kambara (@korodroid) ʲAndroid࿮ʳ AndroidΞϓϦͷUI/UXվળྫͦͷ2 potatotips #59

Slide 2

Slide 2 text

About me •ϞόΠϧؔ࿈׆ಈ •ࠃ಺֎Ͱͷߨԋ׆ಈ • Droidcon UK/FR/NL/ES/SH • Developers Summit • Android Bazaar and Conference • StackOverflow DevDays • Cloud Days •ॻ੶ࣥච •ݸਓϒϩάʮMobile Dev Blogʯ •ձࣾϒϩάʮਆݪ݈ҰͷAndroidͰ޿͕Δੈքʯ •झຯɿཱྀߦʢಛʹॳΊͯͷ৔ॴɿݱࡏ26Χࠃʣ •NTTςΫϊΫϩεɹॴଐ ਆݪɹ݈Ұ(@korodroid)

Slide 3

Slide 3 text

•͓୊໨ͷΞϓϦ •UI/UXվળͷBefore/After •ࠓճͷ͓୊໨ʢϨΠΞ΢τʣ Agenda

Slide 4

Slide 4 text

͓୊໨ͷΞϓϦ

Slide 5

Slide 5 text

ηΧΠϑΥϯ

Slide 6

Slide 6 text

UI/UXվળͷBefore/After

Slide 7

Slide 7 text

Before [Supporting 18 Languages]

Slide 8

Slide 8 text

18ϲࠃޠˠ100ϲࠃޠରԠ͢Δͱ…

Slide 9

Slide 9 text

After [Supporting 100 Languages]

Slide 10

Slide 10 text

UI/UXվળྫ

Slide 11

Slide 11 text

ଟ͘ͷ߲໨͔Βͷબ୒ Ωʔϫʔυݕࡧ Dialog with Search Feature

Slide 12

Slide 12 text

search-dialog by @mirrajabi https://github.com/mirrajabi/search-dialog

Slide 13

Slide 13 text

Implementation Sample data class SampleModel(private var title: String) : Searchable { // ϥΠϒϥϦͷSearchableΠϯλϑΣʔε࣮૷ͷͨΊ override fun getTitle(): String { return title; } } ࣮૷Πϝʔδ: SampleModel.kt (ϞσϧΫϥε(Ϧετ಺ͷ֤߲໨))

Slide 14

Slide 14 text

Implementation Sample private fun createSampleList(): ArrayList{ val items = ArrayList() items.add(SampleModel(“߲໨1", R.drawable.image1)) items.add(SampleModel("߲໨2", R.drawable.image2)) items.add(SampleModel("߲໨3", R.drawable.image3)) items.add(SampleModel("߲໨4", R.drawable.image4)) items.add(SampleModel("߲໨5", R.drawable.image5)) return items } ࣮૷Πϝʔδ: MainActivity.kt (Ϧετ߲໨ͷੜ੒)

Slide 15

Slide 15 text

Implementation Sample private fun showSampleDialog() { SampleSearchDialogCompat(this, “߲໨ΛબΜͰ͍ͩ͘͞ɻ", "߲໨", null, createSampleList(), SearchResultListener { dialog, item, position -> Toast.makeText(this, item.title, Toast.LENGTH_SHORT ).show() dialog.dismiss() } ).show() } ࣮૷Πϝʔδ: MainActivity.kt (μΠΞϩάදࣔ/Πϕϯτॲཧ)

Slide 16

Slide 16 text

ͪΐͬ͜ͱϋϚͬͨ͜ͱ

Slide 17

Slide 17 text

[Problem] Index of Selected Item after Search

Slide 18

Slide 18 text

[Before]Implementation private fun showCountryListDialog() { CountrySearchDialogCompat(this, "Select Country", "Country name", null, createSampleLocalContacts(), SearchResultListener { dialog, item, position -> // [OLD]position͕બ୒͞Ε߲ͨ໨ͱߟ͑ɺॲཧ // … dialog.dismiss() } ).show() } positionʹ͸ҙਤͨ͠஋ͱҟͳΔΠϯσοΫε͕ฦͬͯ͘Δ
 (ݕࡧޙʹީิ͕ϑΟϧλϦϯά͞Ε߲ͨ໨಺ͰͷΠϯσοΫε)

Slide 19

Slide 19 text

[After]Implementation ϞσϧଆʹϢχʔΫͳΠϯσοΫεΛ௥Ճ
 (ͦͷΠϯσοΫεΛ༻͍ͯॲཧΛ࣮ࢪ͢ΔΑ͏ʹमਖ਼) private fun showCountryListDialog() { CountrySearchDialogCompat(this, "Select Country", "Country name", null, createSampleLocalContacts(), SearchResultListener { dialog, item, position -> // [NEW]Ϟσϧ΁ϢχʔΫΠϯσοΫε௥Ճ+ಉΠϯσοΫεΛ༻͍ͯॲཧ // … dialog.dismiss() } ).show() }

Slide 20

Slide 20 text

•search-dialog
 https://github.com/mirrajabi/search-dialog Reference

Slide 21

Slide 21 text

Please let me know if you have any requests 
 such as technical speeches, technical writings and so on. Facebook:http://fb.com/kanbara.kenichi Google+:+Kenichi Kambara LinkedIn:http://www.linkedin.com/in/korodroid Twitter:@korodroid Thank you so much