网站速成,html5旅游网站源码,产品设计专业介绍,wordpress第三方存储在工作中难免遇到自定义 View 的相关需求#xff0c;本身这方面比较薄弱#xff0c;因此做个记录#xff0c;也是自己学习和成长的积累。自定义View实战前言年前的最后一个开发需求#xff0c;将之前H5开卡界面转变成native。意思就是开卡这个需求做成Android原生的界面本身这方面比较薄弱因此做个记录也是自己学习和成长的积累。自定义View实战前言年前的最后一个开发需求将之前H5开卡界面转变成native。意思就是开卡这个需求做成Android原生的界面就这单单一个界面需要请求 8 个接口可想逻辑是有多复杂其中中间有个小需求-「选择银行卡」。来看一下UI出图。设计图大致就是点击「银行」弹出popupWindow在里面嵌套一个银行选择器。这个「银行选择器」可以滚动类似IOS那边的UIPickerView或者安卓的日期选择器但是为了完成特殊的定制效果所以咱们得自己写一个。BankPickerView看一下效果图BankPickerView.gif实现思路其实也很简单。滚动ScrollView、ListView和RecyclerView都可以实现滚动这自然不用说首尾都有offset个位置是留占坑可以添加空数据作为占坑的显示。回弹那就在手指松开的时候拿到滑动的距离通过一系列的逻辑处理回弹到最近的Item处即可。回调在滑动停止的时候通过计算获取当前所处的item的位置通过listener回调给调用者。因为时间有限所以没对其进行封装如果想使用请自行下载通过修改源码满足特定的需求。至于弹出的效果用的是popupWindow,其中遇到了一下坑在这里记录并分享一下。背景透明popupWindow不像dialog本身是没有背景透明的效果的需要自己实现。主要就是两种实现方式。xmlns:skinhttp://schemas.android.com/android/skinxmlns:apphttp://schemas.android.com/apk/res-autoandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:background#7D000000skin:enabletrueandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:background#fffandroid:layout_alignParentBottomtrueandroid:orientationvertical一种就是直接在pooupWidnow展示的布局强行假如半透明的背景。第二种获取WindowManager修改当前窗口的透明值。点击返回关闭 popupWindow首先如果想实现点击返回让popupWindow消失就得实现View.OnKeyListener接口并且在回调中让其消失。Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {if (keyCode KeyEvent.KEYCODE_BACK) {dismiss();return true;}return false;}但是你会发现并没有生效那是因为当前没有获取到焦点需要设置setFocusable(true)即可。