とりあえずDatePickerとTimePickerです。
まだサイズとか決め打ちっぽいのでレイアウト的に微妙です。
レイアウトxmlで適当に配置するとたまに死にます。
見た感じは↓
仕組み
DrumPickerというクラスをつくって、そこに任意の文字列コレクションと幅を指定すると列を一個作るみたいな感じになっています。
内部的にはScrollViewとLinearLayoutを組み合わせてドラム部分を作っています。
影はShade,レンズ部分はアルファ値を適当に指定して色を重ねあわせてる感じです。
例えばTimePickerは24時間,60分の文字列を突っ込んで、リスナーとかで時間の変更を貰っていろいろあれしています。
TimePickerは60行くらいで出来たので、まぁまぁ拡張性があるのか、何なのか。DatePickerの方は泥沼で195行。やっぱダメだ。
表示周りはリソースを使わず全てコード上でやっているので、jar形式かなんかで配布可能です。
今後
GitHubでソースを公開してます。まだ実用性は薄いかもなぁと。
https://github.com/sys1yagi/AndroidPractice/tree/master/DrumPicker/trunk
サンプル
サンプル実装をAndroid Marketに公開しました。使い心地とかバグとか感想いただけるとありがたいです。
https://market.android.com/details?id=jp.dip.sys1.android.drumpicker&feature=search_result
いつも勉強させて頂いています。
返信削除こちらのドラムピッカー自体のheightを大きくするにはどこをいじればいいのでしょうか。
もしよろしければよろしくお願いします。
素晴らしいです
返信削除ソースコードのライセンスに関してはどのようにお考えでしょうか?
こんにちは。
返信削除上の匿名さん:
DrumPicker.javaの93行目で決め打ちで書いています。この辺りはいずれ修正したいですねー
下の匿名さん:
そういえばライセンスについて明記していませんでした。MIT Licenseです。何に利用していただいても構いません。
>yagi様
返信削除早急なご回答ありがとうございます
早速ライブラリ化して利用させてもらいます
yagi様
返信削除とても素晴らしいサンプルです。
参考にさせて頂いております。ありがとうございます。
一点、もし可能であればご教授して頂きたいです。
ピッカーのスクロール(onScrollChanged?)ですが、
スクロール直前に位置によって、早いスピードでスクロールを実施すると
onPositionChangedイベントが発生されないです。
例:分列にて操作
現在位置 1分又は2分 -> 0分方向(下)に早くスクロールする。
このときスクロール自体はされますが、イベントが発生されないのです。
軽くスクロールをするとイベントは発生します。
この点に関しては改善もしくは変更可能ですしょうか。
宜しくお願い致します。
あなたは素晴らしい仕事をしました。
返信削除はじめまして、いろいろと勉強させてもらっています。
返信削除DrumPickerを触らせてもらい感動しました。
サンプルをもとに勉強中です。
そこで一点質問させてください。
ドラムをループさせることは可能でしょうか?
よろしくお願いいします。
はじめまして、DrumPickerを使わせて頂いてます。
返信削除ドラムをAlertDialog等に設置した上で、
AlertDialog上にあるドラムを思いきりスクロールさせ、
ドラムが止まる前にAlertDialogを閉じた場合に、
ドラムの位置が、移動前の位置を報告します。
スクロール途中の現在位置を取得する、良い方法は存在するでしょうか?
はじめまして。
返信削除ピッカーのカスタマイズを検索に検索を重ね、こちらにたどりつきました。
現在、年月日、時分で2行の表示になっていますが、
年月日時分を1行で表示したいと思っています。
各ピッカーの幅は変更ができたのですが、一行で表示する、レンズを併せる部分に四苦八苦しております。どう対応したらよいのかご教示いただけないでしょうか?