导航有2种模式,分别是轻导航和专业导航。
前台轻导航的实现需要在activity.oncreate()或者fragment.oncreateview()中初始化轻导航view,把轻导航view add进入第三方app页面布局中,还需要在activity或者fragment的生命周期调用轻导航的生命周期,相关方法在baidunavimanagerfactory.getlightnavimanager()中:
/*** 获取百度地图轻导航view** @param activity** @return*/viewoncreate(activity activity);/*** 需要在activity的onstart() 或者 fragment的onstart() 中调用*/voidonstart();/*** 需要在activity的onresume() 或者 fragment的onresume() 中调用*/voidonresume();/*** 需要在activity的onpause() 或者 fragment的onpause() 中调用*/voidonpause();/*** 需要在activity的onstop() 或者 fragment的onstop() 中调用*/voidonstop();/*** 需要在activity的ondestroy() 或者 fragment的ondestroy() 中调用** @param isswitchtonavi 是否准备切换到专业导航模式*/voidondestroy( boolean isswitchtonavi);
调用方法以oncreate为例:
@overridepublicviewoncreateview(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 =newframelayout.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*/viewoncreate(final activity activity, final onnavigationlistener listener, final naviaddviewcallback callback);/*** 获取百度专业导航过程view对象,将其加入应用布局内即可显示导航过程.** @param activity 应用导航过程所属activity对象* @param listener 导航过程监听器,主要是监听导航过程中消息分发,比如到达终点、导航结束和更新路名等** @return*/viewoncreate(final activity activity, final onnavigationlistener listener);/*** 在 activity的onstart() 或者 fragment的onstart() 中调用*/voidonstart();/*** 在activity的onresume() 或者 fragment的onresume() 中调用*/voidonresume();/*** 在activity的onpause() 或者 fragment的onpause() 中调用*/voidonpause();/*** 在activity的onstop() 或者 fragment的onstop() 中调用*/voidonstop();/*** 在activity的ondestroy() 或者 fragment的ondestroy() 中调用** @param isswitchtolightnavi 在退出专业导航后是否切换到轻导航*/voidondestroy(boolean isswitchtolightnavi);
调用方法以oncreate为例:
@overrideprotectedvoidoncreate(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接口。
@overridepublicvoidonconfigurationchanged(android.content.res.configuration newconfig){super.onconfigurationchanged(newconfig);baidunavimanagerfactory.getrouteguidemanager().onconfigurationchanged(newconfig);}
上一篇
下一篇
本篇文章对您是否有帮助?