Home

Awesome

CityPicker

API</br> 一个仿大众点评的城市快速选择器, 最少只需 一行 代码即可启动城市选择器, 支持页面样式修改,多元化自定义

ScreenShot

Version Log

Import

Maven
  <dependency>
  <groupId>com.desmond</groupId>
  <artifactId>CityPicker</artifactId>
  <version>xxx</version>
  <type>pom</type>
</dependency>
Gradle
compile 'com.desmond:CityPicker:xxx'

Wiki

Functions

Use

Step1

对于Android 6.0需要配置动态权限</br>

Manifest.permission.WRITE_EXTERNAL_STORAGE
Step2

启动城市选择页面及相关自定义配置

        CityPicker.with(getContext())        
        
        //是否需要显示当前城市,如果为false那么就隐藏当前城市,并且调用setGpsCityByBaidu()或setGpsCityByAMap()都不会生效,非必选项,默认为true
        .setUseGpsCity(true)

        //自定义热门城市,输入数据库中的城市id(_id),非必选项,默认为数据库中的热门城市
        .setHotCitiesId("2", "9", "18", "11", "66", "1", "80", "49", "100");

        //设置最多显示历史点击城市数量,0为不显示历史城市
        .setMaxHistory(6);

        // 自定义城市基础数据列表,必须放在项目的assets文件夹下,并且表结构同citypicker项目下的assets中的数据库表结构相同
        // 该方法当前为beta版本,不推荐使用
        .setCustomDBName("xx.sqlite");

        // 设置标题栏背景,非必选项
        .setTitleBarDrawable(...);

        // 设置返回按钮图片,非必选项
        .setTitleBarBackBtnDrawable(...);

        // 设置搜索框背景,非必选项
        .setSearchViewDrawable(...);

        // 设置搜索框字体颜色,非必选项
        .setSearchViewTextColor(...);

        // 设置搜索框字体大小,非必选项
        .setSearchViewTextSize(...);

        // 设置右边检索栏字体颜色,非必选项
        .setIndexBarTextColor(...);

        // 设置右边检索栏字体大小,非必选项
        .setIndexBarTextSize(...);

        // 是否使用沉浸式状态栏,默认使用,非必选项
        .setUseImmerseBar(true);
        
        // 回调
        .setOnCityPickerCallBack(new IOnCityPickerCheckedCallBack()
        {
           @Override
           public void onCityPickerChecked(BaseCity baseCity)
           {
               //获取选择城市编码
               baseCity.getCodeByBaidu();  //baseCity.getCodeByAMap();//高德code
        
               //获取选择城市名称
               baseCity.getCityName();
        
               // 获取选择城市拼音全拼
               baseCity.getCityPinYin();
        
               //获取选择城市拼音首字母
               baseCity.getCityPYFirst();
           }
         })
         
        .open();
      
Step3

获取到位置信息后调用该静态方法可以在页面打开后设置当前城市</br> 百度定位或高德定位需要自行配置,在这个库中没有集成任何与定位相关的模块

//使用百度定位
CityPicker.setGpsCityByBaidu("南京市","315");

//高德定位
CityPicker.setGpsCityByAMap("南京市","025");

Be careful

项目中使用了如下三方库,如与你项目中的库冲突,请及时排除</br>

def supportLibraryVersion = '24.2.1'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile "com.android.support:support-v4:$supportLibraryVersion"
    compile "com.android.support:appcompat-v7:$supportLibraryVersion"
    compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
    compile "com.android.support:design:$supportLibraryVersion"
    compile "com.android.support:gridlayout-v7:$supportLibraryVersion"
    compile 'com.gjiazhe:wavesidebar:1.3'
    compile 'com.squareup.sqlbrite:sqlbrite:1.1.1'
    compile 'io.reactivex:rxjava:1.2.0'
    //rx系列
    compile 'io.reactivex:rxandroid:1.2.1'

    compile 'org.greenrobot:eventbus:3.0.0'

}

排除示例:

compile ('com.desmond:CityPicker:0.3.0' ){
        exclude group: 'com.android.support'
        exclude group:'com.squareup.sqlbrite'
        exclude group:'io.reactivex'
        exclude group:'io.rxandroid'
        exclude group:'org.greenrobot'
    }

Demo

手机扫描下方二维码下载demo尝鲜</br>

Thanks

Contact author

QQ 350248823 添加时注明github-citypicker</br> 欢迎issues,作者看到后会第一时间回复