Androidの日付取得ダイアログのDatePickerDialogは、かっこわるいし、使いづらいったらありゃしないと思う。iPhoneのUIDatePickerダイアログは使いやすいし、見た目もかっこ良いと思う、iPhoneとAndroidの両方の開発をしている方がいたら、Androidでも使えたらなと思うことがあると思う。
ちなみに、Androidの日付ダイアログは下のような感じ。
みてもらってもわかるように、フリックでスクロールとかできないので、最初に設定した日付から遠い日付とか選びにくい。iPhoneはというとこんな感じ
そこで、Android用のiPhoneみたいなピッカーのUIが使えるソースがあります。それが、githubからダウンロードできます、ライセンス的には、Apacheライセンスみたいです。
https://github.com/sys1yagi/AndroidPractice/tree/master/DrumPicker/trunk
ここからです、ちなみに、このピッカーを使うと、以下のようになります。
ちなみに、ここのソースには、そのままだとちょっと問題があるため、直す方法を残しておきます。
まず、導入方法ですが、SDKのminVersionは、4から使えるので、自分のプロジェクトの設定をしておき、コンパイルするAPIの対応バージョンを2.3以上にしておきます。そうしないと、コンパイルができないです。(あるソースを抜かすとできるのですが、そうすると2.3以上で動かなくなってしまいます。)
問題がある部分は、DateDrumPicker.javaで、
setMonthメソッドの
setPosition(1, MONTH.length -1 - month);
の部分を
setPosition(1, MONTH.length - month);
にします。これで、日付をCalendarのmonthに1を足した値で設定できるようになります(これをやらないと、10月は値を9として設定することになります。)
また、
setDayメソッドの
setPosition(2, days -1 - day);
の部分も
setPosition(2, days - day);
に直します。これによって、設定する日付が1日ずれるのを直せます。
あとinitメソッドの
setPosition(2, day - oldd);
の部分を
setPosition(2, day - oldd-1);
に直します、
あと、initメソッドの
// リスナー
と書いてあるリスナーを設定してあるところの前に
mYear=oldy;
mMonth=oldm;
mDay=oldd;
これでOKです。こうすることによって、普通に表示すると、最初の日付が現在の日付になります。
ほか種類のDrumPickerを作りたければ、TimeDrumPickerを参考にするといいと思います、そっちの方がシンプルにできてるようなので、