# CityPicker **Repository Path**: codreamx/CityPicker ## Basic Information - **Project Name**: CityPicker - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-04-16 - **Last Updated**: 2024-04-16 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

# CityPicker [![Platform](https://img.shields.io/badge/platform-android-green.svg)](http://developer.android.com/index.html) [![API](https://img.shields.io/badge/API-14%2B-yellow.svg?style=flat)](https://android-arsenal.com/api?level=14) 现在使用较多的类似美团、外卖等APP的城市选择界面,**一行代码搞定**,就是这么简单粗暴!!! **Tips:**(旧版本1.x)会报高德定位jar包冲突,推荐使用2.x版本。 #### 主要功能: - 字母悬浮栏 - 指定热门城市 - 自定义动画效果 - 自定义主题 - 名称或拼音搜索 - 返回城市名、code等数据 - 提供定位接口,解耦定位SDK # Preview ![image](https://github.com/zaaach/CityPicker/raw/master/art/screen.gif) ![image](https://github.com/zaaach/CityPicker/raw/master/art/screen1.gif) ![image](https://github.com/zaaach/CityPicker/raw/master/art/screen2.gif) # APK 下载[demo.apk](https://github.com/zaaach/CityPicker/raw/master/art/demo.apk)体验. # Download **1:** 项目根目录的build.gradle添加如下配置: ```groovy allprojects { repositories { ... maven { url 'https://jitpack.io' } } } ``` **2:** app添加依赖: ```groovy dependencies { implementation 'com.github.zaaach:CityPicker:x.y.z' } ``` 记得把`x.y.z`替换为[![jitpack](https://jitpack.io/v/zaaach/CityPicker.svg)](https://jitpack.io/#zaaach/CityPicker)中的数字 # Usage `CityPicker` 基于`DialogFragment` 实现,已提供定位接口,需要APP自身实现定位。 ### 基本使用: #### Step1: 在`manifest.xml`中给使用`CityPicker` 的`activity`添加主题`android:theme="@style/DefaultCityPickerTheme"` ```xml ...... ``` #### Step2: 注意:热门城市使用`HotCity` ,定位城市使用`LocatedCity` ```java 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`。 ```xml ``` `CityPicker` 中自定义的所有属性如下,有些属性值必须是引用类型`refrence`,使用时注意。 ```xml ``` OK,enjoy it~ # Changelog #### v2.1.0 - 迁移至AndroidX #### v2.0.3 - 修复状态栏变黑问题 - 修复字母索引栏被软遮挡的问题 - 新增取消选择监听 - 方法调用方式稍微改变 #### v2.0.2 - 修复定位城市偶尔不刷新的bug #### v2.0.1 - 新增定位接口 - 修改返回类型为`City` ,可获取城市名、code等数据 #### v2.0.0 - 项目重构优化,结构更清晰 - 使用RecyclerView # 感谢 [ImmersionBar](https://github.com/gyf-dev/ImmersionBar) # About me 掘金:[ https://juejin.im/user/56f3dfe8efa6310055ac719f ](https://juejin.im/user/56f3dfe8efa6310055ac719f) 简书:[ https://www.jianshu.com/u/913a8bb93d12 ](https://www.jianshu.com/u/913a8bb93d12) 淘宝店:[ LEON家居生活馆 (动漫摆件)]( https://shop238932691.taobao.com) ![LEON](https://raw.githubusercontent.com/zaaach/imgbed/master/arts/leon_shop_qrcode.png) :wink:淘宝店求个关注:wink: # QQ群 有兴趣可以加入QQ群一起交流: ![扫码入群601783167](https://raw.githubusercontent.com/zaaach/imgbed/master/arts/qqgroup.jpg)