导航有2种模式,分别是轻导航和专业导航。
前台轻导航的实现需要在Activity.onCreate()或者Fragment.onCreateView()中初始化轻导航View,把轻导航View add进入第三方APP页面布局中,还需要在Activity或者Fragment的生命周期调用轻导航的生命周期,相关方法在BaiduNaviManagerFactory.getLightNaviManager()中:
/*** 获取百度地图轻导航view** @param activity** @return*/View onCreate (Activity activity);/*** 需要在Activity的onStart() 或者 Fragment的onStart() 中调用*/void onStart ();/*** 需要在Activity的onResume() 或者 Fragment的onResume() 中调用*/void onResume ();/*** 需要在Activity的onPause() 或者 Fragment的onPause() 中调用*/void onPause ();/*** 需要在Activity的onStop() 或者 Fragment的onStop() 中调用*/void onStop ();/*** 需要在Activity的onDestroy() 或者 Fragment的onDestroy() 中调用** @param isSwitchToNavi 是否准备切换到专业导航模式*/void onDestroy ( boolean isSwitchToNavi);
调用方法以OnCreate为例:
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {contentView = inflater.inflate(R.layout.onsdk_fragment_light_navi, container, false);// 获取百度地图轻导航viewView view = BaiduNaviManagerFactory.getLightNaviManager().onCreate(getActivity());FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,FrameLayout.LayoutParams.MATCH_PARENT);if (view != null) {FrameLayout contentContainer = contentView.findViewById(R.id.content_container);BaiduNaviManagerFactory.getLightNaviSettingManager().setRouteMargin(100,ScreenUtil.getInstance().dip2px(280),100,ScreenUtil.getInstance().dip2px(80));if (view.getParent() != null) {ViewGroup parent = (ViewGroup) view.getParent();parent.removeView(view);}// add 导航viewcontentContainer.addView(view, layoutParams);}return contentView;}
更详细的api请参考Demo中的使用。
专业导航的实现需要在Activity.onCreate()或者Fragment.onCreateView()中初始化专业导航View,把专业导航View add进入第三方APP页面布局中,还需要在Activity或者Fragment的生命周期调用专业导航的生命周期,相关方法在BaiduNaviManagerFactory.getRouteGuideManager()中:
/*** 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.** @param activity 应用导航过程所属Activity对象* @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等* @param callback 添加自定义View到导航中的callback对象** @return*/View onCreate(final Activity activity, final OnNavigationListener listener, final NaviAddViewCallback callback);/*** 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.** @param activity 应用导航过程所属Activity对象* @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等** @return*/View onCreate(final Activity activity, final OnNavigationListener listener);/*** 在 Activity的onStart() 或者 Fragment的onStart() 中调用*/void onStart();/*** 在Activity的onResume() 或者 Fragment的onResume() 中调用*/void onResume();/*** 在Activity的onPause() 或者 Fragment的onPause() 中调用*/void onPause();/*** 在Activity的onStop() 或者 Fragment的onStop() 中调用*/void onStop();/*** 在Activity的onDestroy() 或者 Fragment的onDestroy() 中调用** @param isSwitchToLightNavi 在退出专业导航后是否切换到轻导航*/void onDestroy(boolean isSwitchToLightNavi);
调用方法以OnCreate为例:
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.onsdk_activity_professional);contentContainer = (FrameLayout) findViewById(R.id.view_container);// 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.View view = BaiduNaviManagerFactory.getRouteGuideManager().onCreate(this, mOnNavigationListener, null);if (view != null) {if (view.getParent() != null) {ViewGroup parent = (ViewGroup) view.getParent();parent.removeView(view);}contentContainer.addView(view);}}
更详细用法可参考Demo中BNOrderNaviFragment类。
为了防止在手机横竖屏切换过程中,导航出现布局混乱以及crash等情况,请在页面的onConfigurationChanged生命周期方法内调用专业导航的onConfigurationChanged接口。
@Overridepublic void onConfigurationChanged(android.content.res.Configuration newConfig) {super.onConfigurationChanged(newConfig);BaiduNaviManagerFactory.getRouteGuideManager().onConfigurationChanged(newConfig);}
上一篇
下一篇
本篇文章对您是否有帮助?