<学习笔记>FloatingActionsMenu悬浮按钮菜单+ArcGIS Android API地图类型切换
2015-11-23 14:21
543 查看
进行地图服务开发总需要不同的底图类型,地形图、街道图、遥感图等。
ArcGIS Android API提供不同的底图类型,初步设计是在地图界面上设置一个悬浮按钮,通过点击按钮弹出切换菜单进行切换。
Android Material Design提供FloatingActionButton控件可以直接在视图界面添加一个最常使用的悬浮按钮,不过要重写点击按钮弹出的菜单等等操作实在太复杂。可喜的是GitHub上有做得很好的开源项目android-floating-action-button,可以直接定制悬浮按钮菜单(FloatingActionMenu)。 https://github.com/futuresimple/android-floating-action-button
Android Studio中
一、添加包
Module中的build.gradle,dependencies中添加 compile 'com.getbase:floatingactionbutton:1.10.1'
二、activity_main.xml中添加悬浮按钮菜单控件
三、 切换地图逻辑,初始化ArcGIS的地图方式在此不做讨论了,具体方式见上一篇文章。
设置地图类型:
为悬浮按钮菜单和几个按钮设置类:
onCreate()函数中添加悬浮按钮菜单和按钮的获取以及监听函数:
监听函数:
效果图:
ArcGIS Android API提供不同的底图类型,初步设计是在地图界面上设置一个悬浮按钮,通过点击按钮弹出切换菜单进行切换。
Android Material Design提供FloatingActionButton控件可以直接在视图界面添加一个最常使用的悬浮按钮,不过要重写点击按钮弹出的菜单等等操作实在太复杂。可喜的是GitHub上有做得很好的开源项目android-floating-action-button,可以直接定制悬浮按钮菜单(FloatingActionMenu)。 https://github.com/futuresimple/android-floating-action-button
Android Studio中
一、添加包
Module中的build.gradle,dependencies中添加 compile 'com.getbase:floatingactionbutton:1.10.1'
二、activity_main.xml中添加悬浮按钮菜单控件
<!--切换底图类型悬浮按钮菜单--> <com.getbase.floatingactionbutton.FloatingActionsMenu android:id="@+id/changeMaptypeBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentTop="true" android:layout_margin="@dimen/fab_margin" android:layout_marginEnd="16dp" android:layout_marginRight="16dp" android:layout_marginTop="16dp" app:fab_addButtonColorNormal="@color/white" app:fab_addButtonColorPressed="@color/white_pressed" app:fab_addButtonPlusIconColor="@color/half_black" app:fab_addButtonSize="mini" app:fab_expandDirection="down" app:fab_labelStyle="@style/menu_labels_style"> <!--切换街道图按钮--> <com.getbase.floatingactionbutton.FloatingActionButton android:id="@+id/streetMapBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" app:fab_colorNormal="@color/white" app:fab_colorPressed="@color/white_pressed" app:fab_size="mini" app:fab_title="街道图" /> <!--切换遥感图按钮--> <com.getbase.floatingactionbutton.FloatingActionButton android:id="@+id/satelliteMapBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" app:fab_colorNormal="@color/white" app:fab_colorPressed="@color/white_pressed" app:fab_size="mini" app:fab_title="遥感图" /> <!--切换地形图按钮--> <com.getbase.floatingactionbutton.FloatingActionButton android:id="@+id/topoMapBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" app:fab_colorNormal="@color/white" app:fab_colorPressed="@color/white_pressed" app:fab_size="mini" app:fab_title="地形图" /> </com.getbase.floatingactionbutton.FloatingActionsMenu>
三、 切换地图逻辑,初始化ArcGIS的地图方式在此不做讨论了,具体方式见上一篇文章。
设置地图类型:
//地图底图类型,街道、地形、遥感 final MapOptions mStreetBaseMap = new MapOptions(MapOptions.MapType.STREETS);//街道图 final MapOptions mTopoBaseMap = new MapOptions(MapOptions.MapType.TOPO);//地形图 final MapOptions mSatelliteBaseMap = new MapOptions(MapOptions.MapType.SATELLITE);//遥感图
为悬浮按钮菜单和几个按钮设置类:
private FloatingActionsMenu menuChangeMaptype;//改变地图类型菜单按钮 private FloatingActionButton menuStreetMapBtn;//改变地图类型为街道图按钮 private FloatingActionButton menuSatelliteMapBtn;//改变地图类型为遥感图按钮 private FloatingActionButton menuTopoMapBtn;//改变地图类型为地形图按钮
onCreate()函数中添加悬浮按钮菜单和按钮的获取以及监听函数:
//获得改变地图类型悬浮菜单按钮 menuChangeMaptype = (FloatingActionsMenu)findViewById(R.id.changeMaptypeBtn); //获得改变地图类型按钮并设置点击的监听函数 menuStreetMapBtn = (FloatingActionButton)findViewById(R.id.streetMapBtn); menuStreetMapBtn.setOnClickListener(new MapListener()); menuSatelliteMapBtn = (FloatingActionButton)findViewById(R.id.satelliteMapBtn); menuSatelliteMapBtn.setOnClickListener(new MapListener()); menuTopoMapBtn = (FloatingActionButton)findViewById(R.id.topoMapBtn); menuTopoMapBtn.setOnClickListener(new MapListener());
监听函数:
//地图操作监听函数 //改变地图类型监听监听函数 class MapListener implements OnClickListener { @Override public void onClick(View v) { switch (v.getId()){ case R.id.streetMapBtn: //设置底图为街道图并收起菜单 mMapView.setMapOptions(mStreetBaseMap); menuChangeMaptype.collapse(); break; case R.id.satelliteMapBtn: //设置底图为遥感图并收起菜单 mMapView.setMapOptions(mSatelliteBaseMap); menuChangeMaptype.collapse(); break; case R.id.topoMapBtn: //设置底图为地形图并收起菜单 mMapView.setMapOptions(mTopoBaseMap); menuChangeMaptype.collapse(); break; } } }
效果图:
相关文章推荐
- Android 输入法汇总
- Android应用启动优化:一种DelayLoad的实现和原理
- Android使用fitsSystemWindows属性实现–状态栏【status_bar】各版本适配方案
- Activity的生命周期(转载)
- AndroidManifest.xml权限设置
- Android studio 使用问题汇总
- Android屏幕适配初探
- Android Studio 1.5 RC1搭建NDK开发环境
- Android AVD 出现No content provider found for permission revoke可能的一种解决方案
- Android,activity托管fragment的方式
- Android开发进阶系列(一) 序言
- Android Handler
- android进程和线程使用总结
- Android Resource Types之Style简介
- Android智能指针
- android获取屏幕宽高与获取控件宽高 方法总结
- Android性能优化之使用线程池处理异步任务
- android5.0 物理键盘与软键盘同时使用修改
- android DatePicker、TimePicker
- Android组件之BroadcastReceiver详解