Android|城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能

CityPicker 项目地址:zaaach/CityPicker Android|城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能
文章图片

简介:城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能
更多:作者提 Bug
标签:



现在使用较多的类似美团、外卖等 APP 的城市选择界面,一行代码搞定,就是这么简单粗暴!!!
Tips:(旧版本 1.x)会报高德定位 jar 包冲突,推荐使用 2.x 版本。
主要功能:

  • 字母悬浮栏
  • 指定热门城市
  • 自定义动画效果
  • 自定义主题
  • 名称或拼音搜索
  • 返回城市名、code 等数据
  • 提供定位接口,解耦定位 SDK
Preview Android|城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能
文章图片

APK 下载demo.apk体验.
Download Gradle:
dependencies { implementation 'com.zaaach:citypicker:2.0.3'//必选 implementation 'com.android.support:recyclerview-v7:27.1.1'//必选 }

or Maven:
com.zaaach citypicker 2.0.3 pom

or 下载 library 手动导入.
Usage CityPicker 基于DialogFragment 实现,已提供定位接口,需要 APP 自身实现定位。
基本使用:
Step1:
manifest.xml中给使用CityPickeractivity添加主题android:theme="@style/DefaultCityPickerTheme"
......

【Android|城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能】Step2:
注意:热门城市使用HotCity ,定位城市使用LocatedCity
List hotCities = new ArrayList<>(); hotCities.add(new HotCity("北京", "北京", "101010100")); //code 为城市代码 hotCities.add(new HotCity("上海", "上海", "101020100")); hotCities.add(new HotCity("广州", "广东", "101280101")); hotCities.add(new HotCity("深圳", "广东", "101280601")); hotCities.add(new HotCity("杭州", "浙江", "101210101")); ......CityPicker.from(activity) //activity 或者 fragment .enableAnimation(true)//启用动画效果,默认无 .setAnimationStyle(anim)//自定义动画 .setLocatedCity(new LocatedCity("杭州", "浙江", "101210101")))//APP 自身已定位的城市,传 null 会自动定位(默认) .setHotCities(hotCities)//指定热门城市 .setOnPickListener(new OnPickListener() { @Override public void onPick(int position, City data) { Toast.makeText(getApplicationContext(), data.getName(), Toast.LENGTH_SHORT).show(); }@Override public void onCancel(){ Toast.makeText(getApplicationContext(), "取消选择", Toast.LENGTH_SHORT).show(); }@Override public void onLocate() { //定位接口,需要 APP 自身实现,这里模拟一下定位 new Handler().postDelayed(new Runnable() { @Override public void run() { //定位完成之后更新数据 CityPicker.getInstance() .locateComplete(new LocatedCity("深圳", "广东", "101280601"), LocateState.SUCCESS); } }, 3000); } }) .show();

关于自定义主题:
style.xml 中自定义主题并且继承DefaultCityPickerTheme ,别忘了在manifest.xml 设置给activity
@color/color_green @color/color_green @color/color_green @color/color_green @dimen/custom_section_height @color/color_green ......

CityPicker 中自定义的所有属性如下,有些属性值必须是引用类型refrence,使用时注意。

OK,enjoy it~
Changelog v2.0.3
  • 修复状态栏变黑问题
  • 修复字母索引栏被软遮挡的问题
  • 新增取消选择监听
  • 方法调用方式稍微改变
v2.0.2
  • 修复定位城市偶尔不刷新的 bug
v2.0.1
  • 新增定位接口
  • 修改返回类型为City ,可获取城市名、code 等数据
v2.0.0
  • 项目重构优化,结构更清晰
  • 使用 RecyclerView

    推荐阅读