Spannable芸 〜郵便番号編〜
by
HiroYUKI Seto
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
Spannable芸 〜郵便番号編〜 potatotips #49 株式会社ノハナ 瀬戸優之 @seto_hi
Slide 2
Slide 2 text
自己紹介 ● 瀬戸優之 Seto HiroYUKI @seto_hi ● Androidエンジニア & アプリデザイン ● 株式会社ノハナ ○ 一組でも多くの家族に笑顔を届ける ○ 絶賛採用中 ● Material Design大好き ● 好きなAPIはCanvas#saveとViewGroup#layout
Slide 3
Slide 3 text
最高の 郵便番号入力欄を 作りたい
Slide 4
Slide 4 text
最高の郵便番号入力欄 要件 ● 3桁目と4桁目の間にハイフンを表示したい ● 3桁目を打ったらハイフンの後にカーソルが移動 ○ ハイフンは入力させたくない ○ アプリ側で入力したくもない ○ inputType=numberでやりたい ● 上3桁と下4桁をシームレスに移動したい ○ カーソル、文字削除、ペースト
Slide 5
Slide 5 text
郵便番号入力欄問題 ● EditText2つ ○ 2つのEditText間のカーソル移動問題 ○ 削除、ペースト問題 ● EditText1つ ○ ハイフンが表示できない ○ or ハイフンが文字として入力される ● 恐らくクレカ番号入力欄でも同じ課題がある
Slide 6
Slide 6 text
簡単!写真1枚で 子どもの成長を届ける カレンダー付き ポストカードアプリ
Slide 7
Slide 7 text
Spannableで解決
Slide 8
Slide 8 text
Spannable ● 文字列のデコレーションのinterface ● SpannableStringBuilderなどが対応 ● 文字(列)に対してSpanを設定する ○ URLSpan, StyleSpan, TypefaceSpan, etc.. ● 未確定文字列の色や下線もSpan
Slide 9
Slide 9 text
ReplacementSpan
Slide 10
Slide 10 text
ReplacementSpan ● TextViewの文字列を置換するSpan ● 独自絵文字やデコ絵文字などに使われている ● 文字列の描画幅を任意に変更できる ● 文字列と描画を異なるものにできる
Slide 11
Slide 11 text
実装
Slide 12
Slide 12 text
サンプル https://github.com/hiroyuki-seto/PostalCodeSample
Slide 13
Slide 13 text
カスタムEditText+カスタムSpan ● EditText ○ 3文字目にカスタムSpanを設定 ○ onDrawでハイフンを描画 ● Span ○ ReplacementSpanを継承 ○ getSizeで対象の文字の幅+ハイフンの幅を返す ○ drawで対象の文字を描画
Slide 14
Slide 14 text
罠
Slide 15
Slide 15 text
罠 ● 0文字の際はReplacementSpanが効かない →仕様 ● 未確定文字列の背景の描画 →サンプル見てね! ● SurrogatePairを考慮したSpan →気合 かなり地道に実装する必要がある
Slide 16
Slide 16 text
Have a nice Spannable!