Android osmdroid / osmbonuspack - 加载地图时显示进度微调器
Android osmdroid / osmbonuspack - show progress spinner while loading a map
使用Androidosmdroid/osmbonuspack时:
如何在加载地图时显示进度对话框(或微调器)?
当我也将所有项目都放在地图上时,它应该完成。
您可以创建自己的活动,例如 this。
然后只需在 onCreate 中启动进度对话框,并在地图初始化时停止它。
这个答案只是 !!!在构建 UI 需要相当长的时间时很有用。然后您可能会显示一个临时弹出窗口,指示工作正在进行中。
我的第一个猜测当然是使用 RelativeLayout 在 Layout 文件中添加 ProgressBar。构建具有许多属性的 OSM 地图禁止显示 ProgressBar。
通常情况下,只有在后台完成繁重的工作时,ProgressBar 或类似的东西才能正常工作。 las,由于第三方软件包而不可能。
在我的例子中,我使用 OsmBonusPack(OSM 地图)并且我必须在地图上绘制许多项目。
现在显示地图的构建正在进行中,您可以执行以下(通用)技巧:
第 1 步:制作一个扩展 DialogFragment 的 MessageDialog(显示一条消息):
public class MessageDialog extends DialogFragment {
ProgressDialog mDialog = null;
public MessageDialog () {
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
mDialog = new ProgressDialog( getActivity());
this.setStyle( STYLE_NO_TITLE, getTheme());
mDialog.setMessage("Building the map ... ");
mDialog.setCancelable(false);
return mDialog;
}
}
第 2 步:当您开始繁重的 UI 工作(例如构建地图(上面有很多项目)时,开始显示 MessageDialog,然后在后台等待 300 毫秒左右的短时间。这将允许显示消息框!
FragmentManager fm = getActivity().getSupportFragmentManager();
myInstance = new MessageDialog ();
myInstance.show( fm, "some_tag");
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground( Void... voids ) {
try { Thread.sleep( 300); } catch( Exception e) {}
return null;
}
@Override
protected void onPostExecute( Void msg) {
// OPTION A:
start navigating to the map screen ... and do there the myInstance.dismiss();
// OPTION B:
do the work on the UI here AND myInstance.dismiss();
}
}.execute();
使用Androidosmdroid/osmbonuspack时:
如何在加载地图时显示进度对话框(或微调器)? 当我也将所有项目都放在地图上时,它应该完成。
您可以创建自己的活动,例如 this。
然后只需在 onCreate 中启动进度对话框,并在地图初始化时停止它。
这个答案只是 !!!在构建 UI 需要相当长的时间时很有用。然后您可能会显示一个临时弹出窗口,指示工作正在进行中。
我的第一个猜测当然是使用 RelativeLayout 在 Layout 文件中添加 ProgressBar。构建具有许多属性的 OSM 地图禁止显示 ProgressBar。
通常情况下,只有在后台完成繁重的工作时,ProgressBar 或类似的东西才能正常工作。 las,由于第三方软件包而不可能。
在我的例子中,我使用 OsmBonusPack(OSM 地图)并且我必须在地图上绘制许多项目。
现在显示地图的构建正在进行中,您可以执行以下(通用)技巧:
第 1 步:制作一个扩展 DialogFragment 的 MessageDialog(显示一条消息):
public class MessageDialog extends DialogFragment {
ProgressDialog mDialog = null;
public MessageDialog () {
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
mDialog = new ProgressDialog( getActivity());
this.setStyle( STYLE_NO_TITLE, getTheme());
mDialog.setMessage("Building the map ... ");
mDialog.setCancelable(false);
return mDialog;
}
}
第 2 步:当您开始繁重的 UI 工作(例如构建地图(上面有很多项目)时,开始显示 MessageDialog,然后在后台等待 300 毫秒左右的短时间。这将允许显示消息框!
FragmentManager fm = getActivity().getSupportFragmentManager();
myInstance = new MessageDialog ();
myInstance.show( fm, "some_tag");
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground( Void... voids ) {
try { Thread.sleep( 300); } catch( Exception e) {}
return null;
}
@Override
protected void onPostExecute( Void msg) {
// OPTION A:
start navigating to the map screen ... and do there the myInstance.dismiss();
// OPTION B:
do the work on the UI here AND myInstance.dismiss();
}
}.execute();