1. 程式人生 > >自定義銀行種類選擇器

自定義銀行種類選擇器

前言

年前的最後一個開發需求,將之前H5開卡介面轉變成native。意思就是開卡這個需求做成Android原生的介面,就這單單一個介面需要請求 8 個介面!可想邏輯是有多複雜,其中中間有個小需求-「選擇銀行卡」。來看一下UI出圖。

設計圖

大致就是點選「銀行」彈出popupWindow,在裡面巢狀一個銀行選擇器。這個「銀行選擇器」可以滾動類似IOS那邊的UIPickerView,或者安卓的日期選擇器,但是為了完成特殊的定製效果,所以咱們得自己寫一個。BankPickerView

看一下效果圖:

BankPickerView.gif

實現

思路其實也很簡單。

滾動

ScrollViewListViewRecyclerView

都可以實現滾動,這自然不用說,首尾都有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