Android 仿淘宝2018添加地址
先来看看淘宝2018的添加收货地址的效果
分析实现的原理: bottomDialog=tabLayout+RecyclerView
其中的2个特点:
1、tablayout的动态添加的,并且选中item之后会自动跳入下一个tab
2、RecyclerView选中之后,下次选中对应的tab会定位的RecyclerView指定的位置。(比如:选中广州市tab,下面的RecyclerView定位到广州市)
这里的地址数据来自:2018最新area.json(智行火车票)
项目实现的效果:
其中BottomDialog.class:
/*** Description :** @author WSoBan* @date 2018/05/03*/
public class BottomDialog extends Dialog {private OnSelectedResultCallBack resultCallBack;private LayoutBottomSheetDialogBinding mDialogBinding;private AreaAdapter mAdapter;private Map<Integer, AreaBean> currentMap = new TreeMap<>();public BottomDialog(Context context) {super(context, R.style.bottom_dialog);init(context);}private void init(Context context) {mDialogBinding = DataBindingUtil.inflate(LayoutInflater.from(getContext()),R.layout.layout_bottom_sheet_dialog, null, false);setContentView(mDialogBinding.getRoot());initView();Window window = getWindow();WindowManager.LayoutParams params = window.getAttributes();params.width = WindowManager.LayoutParams.MATCH_PARENT;
// params.height = DensityUtils.dp2px(context, 400);window.setAttributes(params);window.setGravity(Gravity.BOTTOM);}private void initView() {mDialogBinding.ivClose.setOnClickListener(v -> dismiss());mAdapter = new AreaAdapter(R.layout.item_area);mAdapter.setOnSelectedListener((map, pos) -> {if (pos >= 2) {if (resultCallBack != null) {resultCallBack.onResult(currentMap.get(pos).getNames());}dismiss();} else {currentMap = map;mDialogBinding.tlTitle.removeAllTabs();for (Integer in : map.keySet()) {mDialogBinding.tlTitle.addTab(mDialogBinding.tlTitle.newTab().setText(map.get(in).getName()));}addChooseTab();}});LinearLayoutManager manager = new LinearLayoutManager(getContext());mDialogBinding.rv.setLayoutManager(manager);mDialogBinding.rv.addItemDecoration(new LineAreaItemDecoration(getContext(), 2));mDialogBinding.rv.setAdapter(mAdapter);mDialogBinding.tlTitle.setTabMode(TabLayout.MODE_SCROLLABLE);mDialogBinding.tlTitle.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {@Overridepublic void onTabSelected(TabLayout.Tab tab) {int pos = tab.getPosition();if (pos == 0) {mAdapter.setData(pos, AreaParser.getInstance().getProvinceList());} else {mAdapter.setData(pos, AreaParser.getInstance().getChildList(currentMap.get(pos - 1).getTid()));}//移动到指定位置mAdapter.moveToPosition(manager);}@Overridepublic void onTabUnselected(TabLayout.Tab tab) {}@Overridepublic void onTabReselected(TabLayout.Tab tab) {}});addChooseTab();}private void addChooseTab() {mDialogBinding.tlTitle.addTab(mDialogBinding.tlTitle.newTab().setText("请选择"), true);TabLayoutUtil.reflex(mDialogBinding.tlTitle);}public BottomDialog(Context context, int themeResId) {super(context, themeResId);init(context);}public BottomDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {super(context, cancelable, cancelListener);init(context);}public void setResultCallBack(OnSelectedResultCallBack resultCallBack) {this.resultCallBack = resultCallBack;}public interface OnSelectedResultCallBack {void onResult(String result);}
}
代码太多久不一一写出来了,这里附上源码,了解下
Android 仿淘宝2018添加地址相关推荐
- Android 仿淘宝2017添加地址
最近想做个商城仿淘宝收货地址选择,在网上搜索"android 淘宝收货地址",就看到了想要的效果. 文章写的不错,可惜菜鸟级的我很多看不懂,所以用例外一种方式实现了. 这里用到的数 ...
- Android仿淘宝、京东Banner滑动查看图文详情
文章目录 写在前面 效果图 原理分析 核心代码 源码地址 写在前面 本文基于 ViewPager2 实现的 Banner 效果,进而实现了仿淘宝.京东Banner滑动至最后一页时继续滑动来查看图文详情 ...
- Android仿淘宝详情页面viewPager滑动到最后一张图片跳转的功能
需要做一个仿淘宝客户端ViewPager滑动到最后一页,再拖动的时候跳到详情的功能,刚开始我也迷糊了,通过查阅相关资料发现有好多种实现方法,下面小编给大家分享实例代码,感兴趣的朋友一起看看吧 需要做一 ...
- Android仿淘宝首页UI(附代源代码及示例图片)
Android仿淘宝首页UI(附代源代码及示例图片) 可以收获 运行出来的效果 部分代码 源代码 可以收获 更改Layout中的文字和drawble中的图片即可生成适应于不同情景的APP,帮助开发者完 ...
- Android仿淘宝淘口令实现
先复制信息到剪切板,然后再打开淘宝,.既然是复制,肯定是复制到系统的剪切板了,我们可以通过下边的代码来把口令给复制到系统的剪切板里 1 2 3 4 5 6 //获取剪贴板管理器: ClipboardM ...
- Android仿淘宝tab返回
一.概述 淘宝相信大家都在用过,不过不知道各位有没有仔细观察过淘宝的tab界面,尤其是返回的时候的逻辑.最近闲来无事,猛然发现淘宝的tab界面还真的挺好玩,废话不多说, ...
- Android 仿淘宝商品详情页下拉足迹Demo
DropDownMultiPager 仿淘宝等商品详情页下拉足迹效果SimpleDemo 可colne之后看MainActivity的调用,方便二次开发 依赖 compile 'com.nineold ...
- Android仿淘宝底部图标导航栏
在上一篇中,简单的使用透明主题的Activity实现了仿微信右侧顶部的对话框,上午又花了两个小时研究了一下淘宝底部的导航栏实现,网上的做法也有很多,今天我就使用一种通过基本控件加上布局的方式,没有任 ...
- Android仿淘宝口令复制弹出框功能
1.我要做什么 应用场景: 我的朋友使用微信给我发一个淘宝链接的口令,我复制口令,进入我的淘宝,弹框,显示口令的详情,点击详情,进入商品页面. 存在的问题: 但这存在一个问题,我的淘宝并不总是关闭状态 ...
最新文章
- ssm启动报错cannot find class_SSM整合补充 RBAC(权限控制)过滤器
- 白话Elasticsearch46-深入聚合数据分析之Cardinality Aggs-cardinality去重算法以及每月销售品牌数量统计
- linux kernel中cache代码解读
- Keil uVision2 简介
- 二叉树的三叉链表实现c语言,数据结构:二叉树的三叉链表存储--Java实现
- Remoting入门实例
- 自定义session,cookie
- 上海高一物理公式整理
- 苹果电脑双系统正确打开方式,虚拟机已经Out了
- Java 浅拷贝和深拷贝的理解和实现方式
- 游戏画质修改器GFX工具箱(GFX tool)_9.9.8特别版
- Chrome源码剖析、上--多线程模型、进程通信、进程模型
- twitter如何以图搜图_没有完整图时,如何使用图深度学习?你需要了解流形学习2.0版本...
- transporter上传卡正在交付_Xcode11或Transporter上传app store 一直卡在Authenticating with the App Store 的解决...
- 掘金万亿母婴市场,宝宝树价值在哪里? | 一点财经
- 繁简转换的实现方式。
- 使用QrCode解析二维码
- 程序人生 - 猫咪驱虫多久一次?
- 游戏中为什么使用脚本游戏为什么会有脚本这个东西
- 《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记03
热门文章
- 微信小程序拍照加水印
- android webpage err_unknown_url_scheme
- 什么办法可以快速减肥,助你轻松摆脱赘肉烦恼
- 真实的上海IT圈:张江男vs漕河泾男(文末送书)
- 站长必装软件之火孤插件
- 实验3-11 计算油费 (15分)
- java 我爱你_java代码30行实现用我爱你重绘女朋友美照(我对你的爱,在每一个字里行间)...
- python中a* b是什么意思_Python中a-=b与a=a-b的区别是什么?
- python简单工厂模式_python版简单工厂模式
- 如何利用cmd删除文件夹