完成形
通常のプログレスダイアログ
ニュートラルな状態
Androidアプリケーションを作っていると、通信などでユーザーを待たせる場面がでてくる。こんな時にはプログレスダイアログを表示してあげると良いだろう。しかし、いつでもどこでも通常のプログレスダイアログ(上図)を表示しているとちょっとダサい。特にメッセージとして「通信中」と表示しているだけなら、もうメッセージいらないんじゃね?
若干無理がある導入はここまでにして、、、以下が今回必要な定義。
- レイアウト
- テーマ
- ダイアログクラス
レイアウトの定義
構成はこんな感じ
- FrameLayout
- ProgressBar
- ProgressBar
res/layout/custom_progress_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ProgressBar android:id="@android:id/progress" style="@android:style/Widget.ProgressBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:max="10000" android:layout_marginRight="12dip" /> </FrameLayout>
テーマの定義
タイトルを削除し、背景を透明に設定したダイアログテーマを定義する
res/values/themes_custom_progress_dialog.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <style name="Theme.CustomProgressDialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/transparent</item> </style> </resources>
ダイアログクラスの定義
定義したテーマとレイアウトでダイアログを初期化するクラスを定義
public class CustomProgressDialog extends Dialog { /** * コンストラクタ * @param context */ public CustomProgressDialog(Context context) { super(context, R.style.Theme_CustomProgressDialog); // レイアウトを決定 setContentView(R.layout.custom_progress_dialog); } }
使い方
使い方は簡単
但し、実際に利用する場合は、dialog.setCancelable(true)とか、AsyncTaskなどを使って処理完了後にdialog.dismiss()とかが必要になるはず。
CustomProgressDialog dialog = new CustomProgressDialog(MyActivicty.this); dialog.show();
0 件のコメント:
コメントを投稿