Android で同様の画面が必要です。つまり、進行状況インジケーターをアラート ビュー内に配置します。
4 に答える
AndroidにはProgressDialog
、ほぼ同じことを実行でき、ダイアログを表示し、タイトルとメッセージを表示し、不確定な進行状況インジケーターも表示できますが、スクリーンショットとは少し異なって見えます。
ただし、ProgressDialog
読み込み中または不確定な進行状況を示すためにを使用することは、Androidのドキュメントではアドバイスされていません。
ProgressDialogの回避
Androidには、プログレスバー付きのダイアログを表示するProgressDialogと呼ばれる別のダイアログクラスが含まれています。ただし、読み込み中または不確定な進行状況を示す必要がある場合は、代わりに進行状況とアクティビティの設計ガイドラインに従い、レイアウトでProgressBarを使用する必要があります。
したがって、カスタムダイアログを定義する必要があります。
CustomAlertDialog
レイアウトからビューを膨らませて作成します。
プロパティをとで指定してそのレイアウトの中央に配置RelativeLayout
できるように、レイアウトはにある必要があります。ProgessDialog
CENTER_HORIZONTAL
CENTER_VERTICAL
参照:リンク
- ダイアログコンテンツのレイアウトxmlを作成します。
- ビューにそれを膨らませます。
- ビューでALertDialog.setViewを呼び出します
private static final int DIALOG_PROGRESS = 4;
private ProgressDialog mProgressDialog;
private int mProgress;
private Handler mProgressHandler;
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case DIALOG_PROGRESS:
mProgressDialog = new ProgressDialog(Test.this);
mProgressDialog.setIconAttribute(android.R.attr.alertDialogIcon);
mProgressDialog.setTitle("R.string.select_dialog");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mProgressDialog.setMax(MAX_PROGRESS);
mProgressDialog.setButton(DialogInterface.BUTTON_POSITIVE,
"R.string.alert_dialog_hide", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked Yes so do some stuff */
}
});
mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
"R.string.alert_dialog_cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked No so do some stuff */
}
});
return mProgressDialog;
}
return null;
}
/**
* Initialization of the Activity after it is first created. Must at least
* call {@link android.app.Activity#setContentView(int)} to
* describe what is to be displayed in the screen.
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showDialog(DIALOG_PROGRESS);
mProgressHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (mProgress >= MAX_PROGRESS) {
mProgressDialog.dismiss();
} else {
mProgress++;
mProgressDialog.incrementProgressBy(1);
mProgressHandler.sendEmptyMessageDelayed(0, 100);
}
}
};
}
}
ここから参照すると、Handler メソッドで処理して簡単に取得できます。