Android|城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能
CityPicker 项目地址:zaaach/CityPicker
文章图片
简介:城市选择、定位、搜索及右侧字母导航,类似美团 百度糯米 饿了么等 APP 选择城市功能
更多:作者提 Bug
标签:
现在使用较多的类似美团、外卖等 APP 的城市选择界面,一行代码搞定,就是这么简单粗暴!!!
Tips:(旧版本 1.x)会报高德定位 jar 包冲突,推荐使用 2.x 版本。
主要功能:
- 字母悬浮栏
- 指定热门城市
- 自定义动画效果
- 自定义主题
- 名称或拼音搜索
- 返回城市名、code 等数据
- 提供定位接口,解耦定位 SDK
文章图片
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
中给使用CityPicker
的activity
添加主题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
- 修复状态栏变黑问题
- 修复字母索引栏被软遮挡的问题
- 新增取消选择监听
- 方法调用方式稍微改变
- 修复定位城市偶尔不刷新的 bug
- 新增定位接口
- 修改返回类型为
City
,可获取城市名、code 等数据
- 项目重构优化,结构更清晰
- 使用 RecyclerView
推荐阅读
- android第三方框架(五)ButterKnife
- 奔向你的城市
- 华为旁!大社区、地铁新盘,佳兆业城市广场五期!
- Android中的AES加密-下
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 带有Hilt的Android上的依赖注入
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 下雪了,飞去你的城市拥抱你|下雪了,飞去你的城市拥抱你 | 有个直男向我表白了
- android|android studio中ndk的使用
- 一个选择排序算法