新しいTimePickerDialogを使用して時間を選択する

G +でテープを閲覧しているときに、Androidデバイスの最新バージョンのカレンダーアプリケーションで新しいダイアログボックスを使用して時刻を選択するというメッセージが表示されました。 Android 4.3を搭載したNexus 7タブレットでアプリケーションを起動したところ、実際にそうであると確信しました。 しかし、私は開発者として、ダイアログボックスのソースコードがhttps://android.googlesource.com/platform/frameworks/opt/datetimepicker/+/master/で入手できるというフレーズに興味がありました。 私は楽しみのためにいじることに決めました。



この記事は多かれ少なかれ経験豊富な開発者向けに設計されているため、説明についてはあまり触れません。

Gitリポジトリのクローンを作成するのではなく、さまざまなクラスとリソースをテストプロジェクトにコピーし始めただけです。 まず、プロジェクトで、新しいパッケージを作成し、 src / com / android / datetimepicker / time /フォルダーからすべてのクラスをコピーしました。 また、 src / com / android / datetimepickerフォルダーからUtils.javaとAccessibleTextView.javaの2つのクラスをコピーしました。 必要に応じて、他のクラスを自分にコピーできますが、時間を選択するためのダイアログを作成するには、これで十分です。 次に、必要なすべてのリソース(文字列、色、サイズ、テーマ、ロシア語のローカライズ)をコピーしました。 最後の仕上げ-マニフェストでは、バイブレーターを使用する許可を登録する必要があります。

これで準備作業は完了です。

新しいダイアログボックスは、DialogFragmentフラグメントに基づいています。 android属性を備えたボタンが1つだけのシンプルなマークアップの概要を説明します。onClick =“ onClick” 、ダイアログボックスが表示されます。 そして、コードを書きます:

public void onClick(View v) { openDialog(); } void openDialog() { TimePickerDialog timepickerdialog = TimePickerDialog.newInstance( new OnTimeSetListener() { @Override public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "   " + hourOfDay + ":" + minute, Toast.LENGTH_LONG).show(); } }, 19, 17, false); timepickerdialog.show(getFragmentManager(), "myDialogFragment"); }
      
      







エミュレーターでアプリケーションを実行しようとします。







やった、うまくいった!

デバイスをロシア語に切り替えて、結果を見てください







率直に言って、それは印象的ではありません-文字が収まりません。 しかし一方で、私は24時間形式を好みます。 したがって、 OnTimeSetListenerの最後のパラメーターをfalseからtrueに変更し、プロジェクトを再度開始します。











写真から、これがどのように機能するかは完全には明らかではないので、言葉で説明します。 最初に、数字の2つの内接円で時間の円が表示されます。 内側の円は前半の時間、外側の円は後半の時間を担当します。 ユーザーが希望の時間を選択して指を離すと、アニメーションの助けを借りて時間の円が分円に変わり、5分間隔で数字が移動します。 ユーザーは、2つの部門間の中間位置を選択して、より正確な時間を選択できます。 時間の円に戻す必要がある場合は、ダイアログの上部にある時計(現在は灰色の非アクティブな色になっています)をタップします。

最後に時間が選択されたら、[ 完了 ]ボタンをクリックして、メインアクティビティに戻ります。 私の例では、Toastポップアップメッセージが選択された時間について通知します。

私の意見では、新しいダイアログボックスはきれいに見えます。 この新規性を別のライブラリとして利用できるようにするか、Androidシステムに組み込みたいと思います。 ただし、ご覧のとおり、必要に応じて、自分でプロジェクトにこの機能を実装できます。

プログラミングを頑張ってください!



All Articles