2014年12月24日

Androidで日付と時刻入力を手軽に行えるダイアログをライブラリとして公開しました

メリークリスマス!
Seesaa東京オフィスでAndroidアプリ開発を行っている 今中 と申します。
東京オフィスでは技術ブログを保有していないため、京都の技術ブログに掲載させていただくこととなりました。
今後もネタがあればこのような形で出張ってくるかも知れません。よろしくお願いします。


この度Seesaaでは、自社アプリでも使用している日時入力ダイアログを実装するライブラリとして
「datetimepicker-android」をGitHubにて公開しました。
また、Bintray jcenter Mavenリポジトリにてライブラリの公開を行っております。

device-2014-12-24-114727.pngdevice-2014-12-24-114904.png

https://github.com/seesaa/datetimepicker-android

使い方は同梱のサンプルアプリ(app/)やREADME.mdをご確認ください。
ちなみに私は必要に応じて{Date|Time}PickerDialogクラスを継承し、onCancel()やonDismiss()を再実装して使っています。

Android 4.0(API14)以上の環境でご利用いただけます。
ぜひお使いいただければと思います。(とは言えほぼAOSPのコードそのものではあるのですが。。)


以下、ライブラリを作った経緯などをご説明いたします。
Seesaaブログアプリでは、日時入力部分をAndroidの標準UIに則った形で提供するようにしています。
AndroidのUIから逸脱しないことを重視するため、
Googleカレンダーや「日付と時刻」設定画面でどのように表示されるかを観察し、
その表示を実現できるライブラリを選定し、アプリに組み込んでいます。

これまで、とあるライブラリを使用してこの機能を実現していたのですが、
もともとAuthor都合による更新頻度が高くなかったことに加えて、Androidのサポートライブラリとの干渉を起こし、そのままでは使用できなくなりました。
この問題に対処するため、「日時入力ライブラリを内製化する必要」がありました。

とあるライブラリはOSSでしたので、そのままフォークしてメンテナンスしても良かったのですが、
日付入力以外にも数値入力(クレジットカードや整数値入力など)を行うダイアログも含まれていて、
これらは私にとっては不要なものでありました。
(あとフォントが同梱されているため、不要にapkのサイズが大きくなるのも微妙な点でした)

そもそも、とあるライブラリが使用していて私が使っていた日付入力ダイアログの部分のソースコードは、
実はAOSPのリポジトリに含まれているものでした。

https://android.googlesource.com/platform/frameworks/opt/datetimepicker/

なので、とあるライブラリをforkするのではなく、AOSPのリポジトリをforkすることで開発を進めることにしました。

ちなみに、seesaa/datetimepicker-androidとplatform/frameworks/opt/datetimepicker にはいくつか違いがあります。
例えば、AOSPの現在のmasterブランチの状態だと、DatePickerDialogの曜日のラベルが微妙にずれているのですが、これを修正してあります。
あと、AOSP版ではダイアログに似せたボタンが使われています
(そしてそれが不完全なのでLollipopではDatePickerDialogの表示不備が起こります)が、
これを修正しAndroid のダイアログのボタン(set{Positive|Negative}Button())を使うようにしました。
詳しくはdatetimepicker-androidのREADME.mdを参照してください。


日時入力はしばしばアプリ開発で要求される機能ですが、Androidの標準UIに則ったものを使いたい場合は、
是非当ライブラリをご活用いただければと思います。
posted by Seesaa京都スタッフ at 15:32| Comment(0) | Android | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: