在iOS上,我可以采用简单的视图,只需填充屏幕即可禁用用户的任何互动。
在某些操作(保存,请求等)期间,它与进度条/微调器结合使用。
在Android中执行此操作的最佳方式是什么?我尝试过使用View / * Layout并填充屏幕。它看起来一样,但不会阻止用户触摸事件。
目前我正在使用上述方法,并且有两个函数{disableUI,resetUI}。但这很麻烦。
我没想到的任何更好的方法?欢呼声。
答案 0 :(得分:2)
您应该使用FragmentDialog或Dialog(如果您使用的是obselete API)。
这是一个例子
public class ProgressDialogFragment extends DialogFragment {
// ----------------------------------
// CONSTANTS
// ----------------------------------
private static final String BUNDLE_KEY_TITLE = "BUNDLE_KEY_TITLE";
private static final String BUNDLE_KEY_MESSAGE = "BUNDLE_KEY_MESSAGE";
// ----------------------------------
// ATTRIBUTES
// ----------------------------------
private String title;
private String message;
// ----------------------------------
// PUBLIC METHODS
// ----------------------------------
public static ProgressDialogFragment newInstance(String title) {
return createProgressDialogFragment(title, null);
}
public static ProgressDialogFragment newInstance(String title, String message) {
ProgressDialogFragment fragment = new ProgressDialogFragment();
Bundle bundle = new Bundle();
bundle.putString(BUNDLE_KEY_TITLE, title);
bundle.putString(BUNDLE_KEY_MESSAGE, message);
fragment.setArguments(bundle);
return fragment;
}
// ----------------------------------
// LIFE CYCLE
// ----------------------------------
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final ProgressDialog dialog = new ProgressDialog(getActivity());
// get params from the bundle
if (getArguments() != null) {
this.title = getArguments().getString(BUNDLE_KEY_TITLE);
this.message = getArguments().getString(BUNDLE_KEY_MESSAGE);
}
dialog.setTitle(this.title);
dialog.setMessage(this.message);
dialog.setIndeterminate(true);
dialog.setCancelable(false);
return dialog;
}
}
答案 1 :(得分:0)
您可以使用普通ProgressDialog
并将cancelable设置为false。见下文
ProgressDialog progDailog = ProgressDialog.show(_context,
progressString, "Please wait...",
true);
progDailog.setCancelable(false);
你必须在一个单独的线程中运行它。最好是AsyncTask