package Ġcom . den iz sub asi . credit card view Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . LayoutInflater . from Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Accel erate De cel erate Interpolator Ċ import Ġandroid . view . animation . De cel erate Interpolator Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroidx . appcompat . widget . AppCompat ImageView Ċ import Ġandroidx . appcompat . widget . AppCompat TextView Ċ import Ġandroidx . constraint layout . widget . Constraint Layout Ċ import Ġcom . den iz sub asi . credit card view . ext . after Measured Ċ import Ġcom . den iz sub asi . credit card view . ext . g one Ċ import Ġcom . den iz sub asi . credit card view . ext . invisible Ċ import Ġcom . den iz sub asi . credit card view . ext . visible Ċ import Ġcom . den iz sub asi . credit card view . utils . Card Type Ċ import Ġcom . den iz sub asi . credit card view . utils . Card Type .* Ċ import Ġcom . den iz sub asi . credit card view . utils . card Number Mask Ċ import Ġcom . den iz sub asi . credit card view . utils . format ĊĊ Ċ class ĠCredit Card View Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style : ĠInt ? Ġ= Ġ 0 Ċ ) Ġ: ĠLinearLayout ( context , Ġattrs ) Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġparent View Ġ= Ġfrom ( context ). inflate ( R . layout . credit _ card _ view , Ġthis , Ġtrue ) ĊĊĠĠĠ Ġprivate Ġval Ġfront View Ġ= Ġparent View . findViewById < View >( R . id . front View ) ĊĊĠĠĠ Ġprivate Ġval Ġback View Ġ= Ġparent View . findViewById < View >( R . id . back View ) ĊĊĠĠĠ Ġprivate Ġval Ġcard Number TextView Ġ= ĊĠĠĠĠĠĠĠ Ġparent View . findViewById < AppCompat TextView >( R . id . card Number TextView ) ĊĊĠĠĠ Ġprivate Ġval Ġcard Front View View Pointer Ġ= ĊĠĠĠĠĠĠĠ Ġparent View . findViewById < AppCompat ImageView >( R . id . card Front View View Pointer ) ĊĊĠĠĠ Ġprivate Ġval Ġcard Type ImageView Ġ= ĊĠĠĠĠĠĠĠ Ġparent View . findViewById < AppCompat ImageView >( R . id . card Type ImageView ) ĊĊĠĠĠ Ġprivate Ġval Ġcard Holder Name TextView Ġ= ĊĠĠĠĠĠĠĠ Ġparent View . findViewById < AppCompat TextView >( R . id . card Holder Name TextView ) ĊĊĠĠĠ Ġprivate Ġval Ġcard C vv TextView Ġ= Ġparent View . findViewById < AppCompat TextView >( R . id . card C vv TextView ) ĊĊĠĠĠ Ġprivate Ġval Ġexpiry Date TextView Ġ= ĊĠĠĠĠĠĠĠ Ġparent View . findViewById < AppCompat TextView >( R . id . expiry Date TextView ) ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcard Number TextView . after Measured Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Card Number ( card Number : ĠString , Ġcard Type : ĠCard Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Card Type ( card Type ) ĊĠĠĠĠĠĠĠ Ġcard Number TextView . text Ġ= Ġcard Number ĊĠĠĠĠĠĠĠ Ġcard Number TextView . format ( card Type . card Number Mask ()) ĊĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( card Number TextView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Card Holder Name ( holder Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( card Holder Name TextView ) ĊĠĠĠĠĠĠĠ Ġcard Holder Name TextView . text Ġ= Ġholder Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Card C vv ( cv v : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcard C vv TextView . text Ġ= Ġcv v ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Back Of Card () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġback Ġ= ĠObject Animator . of Float ( front View , Ġ" scale X ", Ġ 1 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfront Ġ= ĠObject Animator . of Float ( back View , Ġ" scale X ", Ġ 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġback . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation Start ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfront View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback View . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfront . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġback . start () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Front Of Card () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġback Ġ= ĠObject Animator . of Float ( back View , Ġ" scale X ", Ġ 1 f , Ġ 0 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠDec el erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfront Ġ= ĠObject Animator . of Float ( front View , Ġ" scale X ", Ġ 0 f , Ġ 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinterpol ator Ġ= ĠAccel erate De cel erate Interpolator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration Ġ= Ġ 5 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġback . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation Start ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfront View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation End ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation End ( animation ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġback View . g one () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfront View . visible () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfront . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġback . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Card Expiry Date ( expiry Date : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexpiry Date TextView . text Ġ= Ġexpiry Date ĊĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( expiry Date TextView ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Card Type ( card Type : ĠCard Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( card Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUNKNOWN _ CARD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠA ME X _ CARD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ ame x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ ame x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMASTER _ CARD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ master card ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ master card ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠV ISA _ CARD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ visa ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ visa ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDIS COVER _ CARD Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ discover ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Type ImageView . setImage Resource ( R . drawable . ic _ discover ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠView . moveTo ( target View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanimate () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. x ( target View . x ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. y ( target View . y Ġ- Ġ 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Params Ġ= ĠConstraint Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . width Ġ+ Ġ 1 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget View . height Ġ+ Ġ 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġnotify Pager Position Changed ( new Position : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( new Position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( card Number TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( card Holder Name TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( expiry Date TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Front View View Pointer . moveTo ( card Number TextView ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfill Default Items ( item : ĠCredit Card Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcard Number TextView . text Ġ= Ġitem . card Number ĊĠĠĠĠĠĠĠ Ġcard Holder Name TextView . text Ġ= Ġitem . holder Name ĊĠĠĠĠĠĠĠ Ġexpiry Date TextView . text Ġ= Ġitem . expiry Date ĊĠĠĠĠĠĠĠ Ġcard C vv TextView . text Ġ= Ġitem . cv v ĊĠĠĠ Ġ} Ċ Ċ }