【Android开源库】CityPicker:类似美团等APP城市选择器

CityPicker

现在使用较多的类似美团、外卖等APP的城市选择界面,一行代码搞定,就是这么简单粗暴!!!

Tips:(旧版本1.x)会报高德定位jar包冲突,推荐使用2.x版本。

主要功能:

  • 字母悬浮栏
  • 指定热门城市
  • 自定义动画效果
  • 自定义主题
  • 名称或拼音搜索
  • 返回城市名、code等数据
  • 提供定位接口,解耦定位SDK

Preview

默认
【Android开源库】CityPicker:类似美团等APP城市选择器_第1张图片
主题
【Android开源库】CityPicker:类似美团等APP城市选择器_第2张图片
搜索

APK

下载demo.apk体验.

Download

library已上传 Jitpack,需要在root build.gradle里添加如下代码:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

add dependency:

dependencies {
    implementation 'com.github.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"


  ......

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


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


    
    

    
    
    
    
    
    

    
    
    

    
    
    
    
    
    

    
    
    
    
    
    
    

    
    
    
    
    
    
    
    
    

OK,enjoy it~

Changelog

v2.0.3

  • 修复状态栏变黑问题
  • 修复字母索引栏被软遮挡的问题
  • 新增取消选择监听
  • 方法调用方式稍微改变

v2.0.2

  • 修复定位城市偶尔不刷新的bug

v2.0.1

  • 新增定位接口
  • 修改返回类型为City ,可获取城市名、code等数据

v2.0.0

  • 项目重构优化,结构更清晰
  • 使用RecyclerView

链接

https://github.com/zaaach/CityPicker

QQ群

有兴趣可以加入QQ群一起交流:601783167

你可能感兴趣的:(【Android开源库】CityPicker:类似美团等APP城市选择器)