android 行布局选择器,『自定义View实战』—— 银行种类选择器
在工作中难免遇到自定义 View 的相关需求,本身这方面比较薄弱,因此做个记录,也是自己学习和成长的积累。自定义View实战
前言
年前的最后一个开发需求,将之前H5开卡界面转变成native。意思就是开卡这个需求做成Android原生的界面,就这单单一个界面需要请求 8 个接口!可想逻辑是有多复杂,其中中间有个小需求-「选择银行卡」。来看一下UI出图。
设计图
大致就是点击「银行」弹出popupWindow,在里面嵌套一个银行选择器。这个「银行选择器」可以滚动类似IOS那边的UIPickerView,或者安卓的日期选择器,但是为了完成特殊的定制效果,所以咱们得自己写一个。BankPickerView
看一下效果图:
BankPickerView.gif
实现
思路其实也很简单。
滚动
ScrollView、ListView和RecyclerView都可以实现滚动,这自然不用说,首尾都有offset个位置是留占坑,可以添加空数据作为占坑的显示。
回弹
那就在手指松开的时候,拿到滑动的距离,通过一系列的逻辑处理,回弹到最近的Item处即可。
回调
在滑动停止的时候,通过计算获取当前所处的item的位置,通过listener回调给调用者。
因为时间有限,所以没对其进行封装,如果想使用请自行下载,通过修改源码满足特定的需求。
至于弹出的效果,用的是popupWindow,其中遇到了一下坑,在这里记录并分享一下。
背景透明
popupWindow不像dialog本身是没有背景透明的效果的,需要自己实现。主要就是两种实现方式。
xmlns:skin="http://schemas.android.com/android/skin"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#7D000000"
skin:enable="true">
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#fff"
android:layout_alignParentBottom="true"
android:orientation="vertical">
一种就是直接在pooupWidnow展示的布局强行假如半透明的背景。
第二种获取WindowManager修改当前窗口的透明值。
点击返回关闭 popupWindow
首先如果想实现点击返回让popupWindow消失,就得实现View.OnKeyListener接口,并且在回调中,让其消失。
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
dismiss();
return true;
}
return false;
}
但是你会发现并没有生效,那是因为当前没有获取到焦点,需要设置setFocusable(true)即可。
android 行布局选择器,『自定义View实战』—— 银行种类选择器相关推荐
- android 选择银行类型,『自定义View实战』—— 银行种类选择器
在工作中难免遇到自定义 View 的相关需求,本身这方面比较薄弱,因此做个记录,也是自己学习和成长的积累.自定义View实战 前言 年前的最后一个开发需求,将之前H5开卡界面转变成native.意思就 ...
- 『自定义View实战』—— 仿ios图标下载view DownloadLoadingView
2019独角兽企业重金招聘Python工程师标准>>> ## 前言 最近项目需要接入环信客服 SDK ,我配合这同事完成,其中我负责文件下载这部分. 因为时间比较紧张,8 天的时间完 ...
- android 弹出菜单环形,『Android自定义View实战』实现一个小清新的弹出式圆环菜单...
前言 Android表现快捷菜单的形式有很多种,比如使用PopupWindow弹出来的小弹窗,类似QQ的侧拉功能菜单,以及之前讲过的弧形菜单( Android 自定义弧形旋转菜单栏--卫星菜单),这次 ...
- android 图片处理过程中添加进度条,『Android自定义View实战』给我一个图标,还你一个水波纹进度球...
前言 我们都知道,平时表现进度的方式有千千万万种(没有UI想不到的,只有你做不到的= =.),其中有一种就是水波纹进度球的形式,网上很多种实现都是直接采用纯色填充的方式,即水波纹都是纯颜色填充,效果看 ...
- android 画圆弧动画,『Android自定义View实战』自定义带入场动画的弧形百分比进度条...
写在前面 这是在简书发表的处女座,这个想法也停留在脑海中很久了,一直拖到现在(懒癌发作2333),先自我介绍一番,一枚刚毕业不久的Android程序猿,初出茅庐的Android小生,之前一直在CSDN ...
- Android 系统(201)---Android 自定义View实战系列 :时间轴
Android 自定义View实战系列 :时间轴 Android开发中,时间轴的 UI需求非常常见,如下图: 本文将结合 自定义View & RecyclerView的知识,手把手教你实现该常 ...
- 【Android自定义View实战】之自定义评价打分控件RatingBar,可以自定义星星大小和间距...
[Android自定义View实战]之自定义评价打分控件RatingBar,可以自定义星星大小和间距
- [自定义控件]android自定义view实战之太极图
android自定义view实战之太极图 尊重原创,转载请注明出处: http://blog.csdn.net/qq137722697 自定义view是Android工程师进阶不可避免要接触的,我的学 ...
- Android进阶之自定义View实战(二)九宫格手势解锁实现
一.引言 在上篇博客Android进阶之自定义View实战(一)仿iOS UISwitch控件实现中我们主要介绍了自定义View的最基本的实现方法.作为自定义View的入门篇,仅仅介绍了Canvas的 ...
最新文章
- MYSQL使用存储过程插入中文数据的疑似bug(UTF8)
- 软件项目开发流程RUP上
- sdn专线架构是怎样的?如何工作?——Vecloud
- 直播 | 清华大学郑楚杰:知识增强对话生成中的差异感知知识选择
- FFmpeg代码导读——HEVC在RTMP中的扩展
- 微软面向初学者的机器学习课程:3.1-构建使用ML模型的Web应用程序
- win10录屏工具_win10怎么录屏?这才是最长情陪伴你的录屏工具
- EJB分布式对象实现方式描述
- 【2016年第5期】位置大数据在车辆保险风险管理中的应用
- AI工程师的崩溃,是从你的薪资比我高开始
- 12864汉字液晶显示驱动程序
- mysql报错:Host ***.***.***.*** is not allowed to connect to this MySQL server
- 简单理解JavaScript中的闭包
- Range的学习笔记
- 用selenium做模拟登录163邮箱(有两种方式,行为链)
- deb包一般放在linux的哪个目录下,deb包安装目录详解
- 魔兽世界 圣骑士唯一的远程武器任务
- Altium Designer使用介绍和界面介绍
- 中国电信无线网服务器,如何使用路由器共享电信天翼无线网络?
- ESP8266 Ticker学习
热门文章
- s5pv210——I2C的代码实践
- STM32的PA15、PB3、 PB4管脚作普通管脚的解决办法
- H5活动产品设计指南基础版
- [luoguP2760] 科技庄园(背包DP)
- iSCSI存储设备的udev绑定 以及iscsi重启卡住解决方法
- Asp.net 中 Eval 调用后台函数的写法
- Postgres主进程文件—postmaster.pid
- c++ 线程间通信方式
- 一种简单、实用的测量程序运行时间的方法
- mysql模糊查询与预编译_mysql预编译模糊查询恶心了我一天的时间,终于弄好了。但是还有一点不明白。如下:...