发布时间:2022-08-19 12:44
关于自定义 UI 布局,您还可以参考官方Demo——完全自定义UI导航。
单元素自定义
可以通过AMapNaviViewOptions中如下接口进行单UI元素显示隐藏,只列出部分接口,更多功能请参考AMapNaviViewOptions类。
/**
* 设置菜单按钮是否在导航界面显示。
*
* @param enabled 菜单按钮是否在导航界面显示。true代表显示,false代表不显示。
*/
public void setSettingMenuEnabled(Boolean enabled)
/**
* 设置是否显示路口放大图(实景图)
*
* @param isCrossDisplayEnabled true,开启;false,不开启
* @since 5.0.0
*/
public void setRealCrossDisplayShow(boolean isCrossDisplayEnabled)
/**
* 设置是否显示路口放大图(路口模型图)
*
* @param isCrossDisplayShow true,显示;false,不显示
* @since 1.5.0
*/
@Deprecated
public void setCrossDisplayShow(boolean isCrossDisplayShow)
/**
* 设置路况按钮的开启态图片和关闭态图片(开启态与关闭态图片同时设置才生效)
*
* @param defaultBitmap 开启态图片
* @param pressedBitmap 关闭态图片
*/
public void setTrafficBitmap(Bitmap defaultBitmap, Bitmap pressedBitmap)
/**
* 设置全览按钮的默认图片和点击图片(默认态与点击态图片同时设置才生效)
*
* @param defaultBitmap 默认的图片
* @param pressedBitmap 点击的图片
*/
public void setOverBitmap(Bitmap defaultBitmap, Bitmap pressedBitmap)
/**
* 设置导航界面是否显示路线全览按钮。
*
* @param isShow 设置全览按钮是否在导航界面显示,默认显示。true,显示;false,隐藏。
*/
public void setRouteListButtonShow(boolean isShow)
整体UI自定义
如上图所示,我们可以通过AMapNaviViewOptions中如下接口,来一键控制所有 UI 控件的显示和隐藏。
/**
* 设置导航界面UI是否显示。
* @param isLayoutVisible true导航界面显示,false导航界面不显示。
*/
public void setLayoutVisible(boolean isLayoutVisible)
当不显示UI时,地图锚点也可以通过AMapNaviViewOptions进行自定义,可以根据自己的UI布局来调整比例尺的位置和锁车态时自车图标的默认显示位置,接口如下:
/**
* 设置自车位置锁定在屏幕中的位置,(0, 0)为地图左上角,(1, 1)为地图右下角
* @param x 取值范围:0-1 在x轴的位置,百分比
* @param y 取值范围:0-1 在y轴的位置,百分比
* @since 1.5.0
*/
public void setPointToCenter(double x, double y)
借助导航提供的View(DriveWayView、ZoomInIntersectionView、TrafficProgressBar、TrafficButtonView、OverviewButtonView等),组装自己的导航界面。
创建View以后在布局中调整好View的位置,调用AMapNaviView相应接口,将View托管给SDK,无需关心View的业务逻辑。
/**
* 设置用户自定义的车道线
* @param lazyDriveWayView
* @since 1.9.0
*/
public void setLazyDriveWayView(DriveWayView lazyDriveWayView)
/**
* 设置用户自定义的路口放大图
* @param zoomInIntersectionView
* @since 1.9.0
*/
public void setLazyZoomInIntersectionView(ZoomInIntersectionView zoomInIntersectionView)
/**
* 设置用户自定义的路况按钮
* @param lazyTrafficButtonView
* @since 1.9.0
*/
public void setLazyTrafficButtonView(TrafficButtonView lazyTrafficButtonView)
/**
* 设置用户自定义的全览按钮
* @param lazyOverviewButtonView
*/
public void setLazyOverviewButtonView(OverviewButtonView lazyOverviewButtonView)
/**
* 设置用户自定义的导航光柱条View
* 设置自定义的光柱条view,只需要设置位置和宽、高即可、颜色车标等元素,导航SDK内部会帮助进行更新操作。
* @param lazyTrafficProgressBarView
* @since 7.4.0
*/
public void setLazyTrafficProgressBarView(TrafficProgressBar lazyTrafficProgressBarView)