EasySideBar
一款按字母排序的库,已封装好城市数据,可定制化强,也可以下载源代码用Module的形式引入自己改一改来使用,也可稍做改造定制成通讯录。手指触摸选中的屏幕区域,A-Z字母会有偏移动画,防止手指遮挡住字母,很大程度上提升了交互和用户体验度。觉得还不错的话欢迎Star ~
使用步骤:
1.添加Jcenter仓库 Gradle依赖:
compile 'com.contrarywind:EasySideBar:1.1.0'
2.在Activity中添加如下代码:
//热门城市数据 ,不添加数据的时候会隐藏该布局ArrayListhotCityList = new ArrayList<>();
hotCityList.add("北京");
hotCityList.add("上海");
hotCityList.add("广州");
hotCityList.add("深圳");
hotCityList.add("杭州");
hotCityList.add("成都");
hotCityList.add("厦门");
hotCityList.add("天津");
hotCityList.add("武汉");
hotCityList.add("长沙");
//初始化以及配置
new EasySideBarBuilder(MainActivity.this)
.setTitle("城市选择")
/*.setIndexColor(Color.BLUE)*/
.setIndexColor(0xFF0095EE)
/*.isLazyRespond(true) //懒加载模式*/
.setHotCityList(hotCityList)//热门城市列表
.setIndexItems(mIndexItems)//索引字母
.setLocationCity("广州")//定位城市
.setMaxOffset(60)//索引的最大偏移量
.start();
3.在Activity中重写onActivityResult方法,接收回调数据:
//resultCode 是使用封装好的EasySideBarBuilder.CODE_SIDEREQUEST
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case EasySideBarBuilder.CODE_SIDEREQUEST:
if (data!=null){
String city = data.getStringExtra("selected");
Toast.makeText(this,"选择的城市:"+city,Toast.LENGTH_SHORT).show();
}
break;
default:
break;
}
}
GitHub项目地址: EasySideBar
觉得还不错的话,动动手指Star一下呗,抱拳了老铁~
实现原理可下载源代码阅读研究,有疑问之处可随时留言,有问题欢迎Call我。也非常欢迎 Pull Request、 提Issue~