在 iOS 上,我可以采用简单的视图来填充屏幕以禁用来自用户的任何交互。
这在某些操作(保存、请求等)期间与进度条/微调器结合使用。
在 Android 中执行此操作的最佳方法是什么?我尝试使用 View/*Layout 并填充屏幕。它看起来一样,但不会阻止用户触摸事件。
目前我正在使用上述方法并有两个功能 { disableUI, resetUI }。不过,这很麻烦。
我没有想到的更好的方法?干杯。
在 iOS 上,我可以采用简单的视图来填充屏幕以禁用来自用户的任何交互。
这在某些操作(保存、请求等)期间与进度条/微调器结合使用。
在 Android 中执行此操作的最佳方法是什么?我尝试使用 View/*Layout 并填充屏幕。它看起来一样,但不会阻止用户触摸事件。
目前我正在使用上述方法并有两个功能 { disableUI, resetUI }。不过,这很麻烦。
我没有想到的更好的方法?干杯。
您应该使用 FragmentDialog 或 Dialog(如果您使用的是过时的 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;
}
}
您可以使用正常ProgressDialog
并将可取消设置为 false。见下文
ProgressDialog progDailog = ProgressDialog.show(_context,
progressString, "Please wait...",
true);
progDailog.setCancelable(false);
不过,您将不得不在单独的线程中运行它。AsyncTask
更可取