自定義銀行種類選擇器
前言
年前的最後一個開發需求,將之前H5
開卡介面轉變成native
。意思就是開卡這個需求做成Android
原生的介面,就這單單一個介面需要請求 8 個介面!可想邏輯是有多複雜,其中中間有個小需求-「選擇銀行卡」。來看一下UI
出圖。
大致就是點選「銀行」彈出popupWindow
,在裡面巢狀一個銀行選擇器。這個「銀行選擇器」可以滾動類似IOS
那邊的UIPickerView
,或者安卓的日期選擇器,但是為了完成特殊的定製效果,所以咱們得自己寫一個。BankPickerView
看一下效果圖:
實現
思路其實也很簡單。
滾動
ScrollView
、ListView
和RecyclerView
offset
個位置是留佔坑,可以新增空資料作為佔坑的顯示。
回彈
那就在手指鬆開的時候,拿到滑動的距離,通過一系列的邏輯處理,回彈到最近的Item
處即可。
回撥
在滑動停止的時候,通過計算獲取當前所處的item
的位置,通過listener
回撥給呼叫者。
因為時間有限,所以沒對其進行封裝,如果想使用請自行下載,通過修改原始碼滿足特定的需求。
至於彈出的效果,用的是popupWindow
,其中遇到了一下坑,在這裡記錄並分享一下。
背景透明
popupWindow
不像dialog
本身是沒有背景透明的效果的,需要自己實現。主要就是兩種實現方式。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 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"> <!-- 內容 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#fff" android:layout_alignParentBottom="true" android:orientation="vertical"> </LinerarLayout> </RelativeLayout>
一種就是直接在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)
即可。
相關推薦
自定義銀行種類選擇器
前言 年前的最後一個開發需求,將之前H5開卡介面轉變成native。意思就是開卡這個需求做成Android原生的介面,就這單單一個介面需要請求 8 個介面!可想邏輯是有多複雜,其中中間有個小需求-「選擇銀行卡」。來看一下UI出圖。 大致就是點選「銀行」彈
Android自定義DataTimePicker 日期選擇器
package com.wwj.datetimepicker;import java.text.SimpleDateFormat;import java.util.Calendar;import android.app.Activity;import android.app.AlertDialog;impor
sizzle分析記錄: 自定義偽類選擇器
可見性 隱藏物件沒有寬高,前提是用display:none處理的 jQuery.expr.filters.hidden = function( elem ) { // Support: Opera <= 12.12 // Opera reports offsetWidth
自定義橫向日期選擇器,可滑動,可點選
佈局檔案比較簡單,直接上程式碼: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas
iOS自定義UIDatepicker日期選擇器檢視
由於專案需要,需要定製一個日期選擇器,找了半天沒找到合適的就自己寫了個demo; 自定義UIDatePicker日期選擇器檢視 效果如下: 下面貼上相關程式碼: ViewController: - (void)viewDidLoad { [super vie
Android 自定義檔案路徑選擇器
文中涉及到檔名稱排序,固定根目錄以及返回上一層在上面,方便選擇等。根據檔案字尾,篩選檔案還沒做。先看效果。 1、效果圖 2、核心程式碼如下 是通過繼承BaseAdapter 完成的,裡面有自定義layout介面。進行管理返回跟目錄以及上一層,方便管理。
Android 自定義含有滾動選擇器的對話方塊
1.概述 使用LIstView和Dialog實 自定義含有滾動選擇器的對話方塊,可以設定顯示字型的不同顏色,設定字型透明度,設定大小,設定顯示多少項。下面給兩個效果: 顯示7項,字型透明度和大小改變 顯示5項,字型顏色和大小改變
自定義一個校驗器--------------------------完成用戶註冊時候,對username是否符合規則以及時候已經存在於數據庫的校驗
實例 check ajax -- value ava .cn java 數據 實例: <!-- 自定義校驗表單--> $.validator.addMethod( "checkusername", //校驗規則名稱,類似於required
自定義類型轉換器之TypeConverter
can con ont rto 方法 contex int 讓我 tor C#提供了很多類型轉換的方法如ConvertToInt、int.Parse、int.tryParse等等,這些方法都能將一個C#的基本數據類型轉換成另一個C#基本數據類型.那麽.既然如此,C#肯定
spring boot框架學習7-spring boot的web開發(3)-自定義消息轉換器
spring boot 凱哥java本章節主要內容:通過前面的學習,我們了解並快速完成了spring boot第一個應用。spring boot企業級框架,那麽spring boot怎麽讀取靜態資源?如js文件夾,css文件以及png/jpg圖片呢?怎麽自定義消息轉換器呢?怎麽自定義spring mvc的配置
模仿CountDownLatch類自定義倒時計時器
嘗試 gets trace dstat nth 自定義 count new locks 簡介 這裏模仿CountDownLatch類自定義到時計時器,利用AQS模板中的嘗試獲得共享和釋放共享 1、MyCountDownLatch package com.jacky; i
Django 【第九篇】自定義的分頁器組件
ota pen mod href render art 頁碼 .get led 一、分頁的實現與使用 class Pagination(object): """ 自定義分頁 """ def __init__(self,current_pa
(轉)JVM——自定義類加載器
tails alloc cat .class 網上 一個 str int 運行 背景:為什麽要自定義,如何自定義,實現過程 轉載:http://blog.csdn.net/SEU_Calvin/article/details/52315125 0. 為什麽需要自定義類加
MyEclipse自定義運行服務器
img 找到 ref 技術 eclipse配置 sel 選中 enable ble MyEclipse配置Tomcat服務器比較簡單,在這裏直接給出簡要的配置步驟了,相信大家都能很容易明白…… 1、Window->Preferences
Spring MVC 自定義類型轉換器
import rtm ring type class ota 轉換 spa 新建 新建一個自定義轉換器 import org.springframework.core.convert.converter.Converter; import org.springfra
springboot(四).配置FastJson自定義消息轉化器
pes pen ext super fastjson 常用 conf 快速 true 配置F
[MVC]自定義模型綁定器,從表單對模型進行賦值
play hide 問題 request eth 效率 data 數據 大神 一、奇葩的問題 之前自己造輪子的時候,遇到一個很奇怪的問題,雖然需求很奇葩,但是還是嘗試解決了一下 當提交的表單裏包含多個重復名稱的字段的時候,例如 <form action="/Tes
自定義類加載器
code pac 路徑 中轉 efi sync protected tool 解析 自定義類加載器一般步驟大概為 1. 繼承 ClassLoader 類 2. 復寫 findClass方法 在findClass方法中傳入一個String類型參數 一般為類所在的路徑可以為網絡
自定義 java 加載器
new dmi ESS class a length turn ngs 加密 list 先寫個java類的:allen.java import java.util.Date; import java.util.List; /** * 加載類 * @author Adm
SpringMVC自定義多個攔截器執行順序
true pos out itl 表示 src blog lin 應用 一、正常流程下的攔截器(全部放行) 1.springMVC中攔截器實現這個接口HandlerInterceptor 第一個攔截器 HandlerInterceptor1 public cl