package Ġcom . kn ight . kotlin . module _ home . view Ċ Ċ import Ġandroid . animation . Animator Ċ import Ġandroid . animation . Animator Listener Adapter Ċ import Ġandroid . animation . Object Animator Ċ import Ġandroid . view . View Ċ import Ġandroid . view . animation . Over shoot Interpolator Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ Ċ /** Ċ Ġ* ĠAuthor : K night Ċ Ġ* ĠTime : 2 0 2 2 / 1 / 2 8 Ġ 1 5 : 2 6 Ċ Ġ* ĠDescription : Util Show Anim Ċ Ġ*/ Ċ class ĠUtil Show Anim Ġconstructor ( view Pager 2 : ĠView Pager 2 ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬ¨çĶ» ç±»åŀĭ Ġ= ãĢĭ éĢ Ĳ ä¸Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠAN IM _ TYPE _ IN PROPER ORDER Ġ= Ġ 1 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬ¨çĶ» ç±»åŀĭ Ġ= ãĢĭ å±ķ å¼Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠAN IM _ TYPE _ UN FOLD Ġ= Ġ 2 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬ¨çĶ» ç±»åŀĭ Ġ= ãĢĭ æĹ ĭ è½¬ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval ĠAN IM _ TYPE _ ROT ATION Ġ= Ġ 3 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠView Pager å¯¹è±¡ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm ViewPager : ĠView Pager 2 Ġ= Ġview Pager 2 ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åį¡ çīĩ åĬ¨çĶ» ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġanim Type Ġ åĬ¨çĶ» ç±»åŀĭ ĊĠĠĠĠ Ġ* ĠãĢĲ ANIM _ TYPE _ IN PROPER ORDER ï¼ļ éĢ Ĳ ä¸Ģ ãĢĳ ĊĠĠĠĠ Ġ* ĠãĢĲ ANIM _ TYPE _ UN FOLD ï¼ļ å±ķ å¼Ģ ãĢĳ ĊĠĠĠĠ Ġ* ĠãĢĲ ANIM _ TYPE _ ROT ATION ï¼ļ æĹ ĭ è½¬ ãĢĳ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcard Anim ( anim Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m ViewPager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( anim Type Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm ViewPager . alpha Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ Ġ// Ġ çŃīå¾ħ View åĬłè½½ å®ĮæĪĲ ï¼Į åĲ¦åĪĻ åĬ¨çĶ» åı¯èĥ½ä¼ļ åıĹ å½±åĵį ĊĠĠĠĠĠĠĠ Ġm ViewPager . post ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġm ViewPager . child Count ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ Runnable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( anim Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAN IM _ TYPE _ IN PROPER ORDER Ġ-> ĠĠĠĠĠ Ġ// Ġ åĬ¨çĶ» æķĪæŀľ Ġ= ãĢĭ éĢ Ĳ ä¸Ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Anim In proper order () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAN IM _ TYPE _ UN FOLD Ġ-> ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĬ¨çĶ» æķĪæŀľ Ġ= ãĢĭ å±ķ å¼Ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Anim Un fold () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAN IM _ TYPE _ ROT ATION Ġ-> ĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åĬ¨çĶ» æķĪæŀľ Ġ= ãĢĭ æĹ ĭ è½¬ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard Anim Rotation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm ViewPager . alpha Ġ= Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬ¨çĶ» æķĪæŀľ Ġ= ãĢĭ éĢ Ĳ ä¸Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcard Anim In proper order () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġåı¯ è§ģ çļĦ åį¡ çīĩ æķ°éĩı ĊĠĠĠĠĠĠĠ Ġval Ġoff screen Ġ= Ġm ViewPager . off screen Page Limit ĊĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ æĢ» æķ°éĩı ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġm ViewPager . adapter ?. item Count Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. off screen ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ è¶Ĭ çķĮ åĪ¤æĸŃ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ åį¡ çīĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Ġ= Ġm ViewPager . getChild At ( i ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard . alpha Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ éĢı æĺİ åº¦ æ¸ Ĳ åıĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Alpha Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" alpha ", Ġ 0 f , Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim Alpha . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim Alpha . start Delay Ġ= Ġ( i Ġ* Ġ 1 5 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim Alpha . start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ Y è½´ ä½į ç§»åĬ¨ çĶ» ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim TY Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" translation Y ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . translation Y Ġ+ Ġ 3 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . translation Y ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . duration Ġ= Ġ 4 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . start Delay Ġ= Ġ( i Ġ* Ġ 1 5 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . interpol ator Ġ= ĠOver shoot Interpolator ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬ¨çĶ» æķĪæŀľ Ġ= ãĢĭ å±ķ å¼Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcard Anim Un fold () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġåı¯ è§ģ çļĦ åį¡ çīĩ æķ°éĩı ĊĠĠĠĠĠĠĠ Ġval Ġoff screen Ġ= Ġm ViewPager . off screen Page Limit ĊĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ æĢ» æķ°éĩı ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġm ViewPager . adapter ?. item Count Ġ?: Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ ç¬¬ä¸Ģ å¼ł åį¡ çīĩ ĊĠĠĠĠĠĠĠ Ġval Ġcard One Ġ= Ġm ViewPager . getChild At ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ éĢı æĺİ åº¦ æ¸ Ĳ åıĺ ĊĠĠĠĠĠĠĠ Ġval Ġanim Alpha Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard One , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" alpha ", Ġ 0 f , Ġ 1 f ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġanim Alpha . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠ Ġanim Alpha . start () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ Y è½´ ä½į ç§»åĬ¨ çĶ» ĊĠĠĠĠĠĠĠ Ġval Ġanim TY Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard One , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" translation Y ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard One . translation Y Ġ+ Ġ 3 5 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard One . translation Y ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġanim TY . duration Ġ= Ġ 4 5 0 ĊĠĠĠĠĠĠĠ Ġanim TY . interpol ator Ġ= ĠOver shoot Interpolator ( 2 f ) ĊĠĠĠĠĠĠĠ Ġanim TY . start () ĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 1 .. off screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ åį¡ çīĩ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Ġ= Ġm ViewPager . getChild At ( i ) Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ éļĲèĹı åį¡ çīĩ ï¼Į åĬ¨çĶ» å¼Ģå§ĭ æĹ¶ åĨį è®¾ ä¸º åı¯ è§ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ X è½´ ä½į ç§»åĬ¨ çĶ» ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim TX Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" translation X ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . translation X Ġ- Ġcard . width Ġ* Ġ 0 . 0 7 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . translation X Ġ+ Ġcard . width Ġ* Ġ 0 . 0 3 5 f , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . translation X ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim TX . duration Ġ= Ġ 3 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim TX . start Delay Ġ= Ġ( 1 8 0 Ġ+ Ġi Ġ* Ġ 1 0 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim TX . addListener ( object Ġ: ĠAn imator Listener Adapter () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Animation Start ( animation : ĠAn imator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Animation Start ( animation ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ åĬ¨çĶ» å¼Ģå§ĭ æĹ¶ ï¼Į è®¾ç½® åį¡ çīĩ åı¯ è§ģ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanim TX . start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åĬ¨çĶ» æķĪæŀľ Ġ= ãĢĭ æĹ ĭ è½¬ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġcard Anim Rotation () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġåı¯ è§ģ çļĦ åį¡ çīĩ æķ°éĩı ĊĠĠĠĠĠĠĠ Ġval Ġoff screen Ġ= Ġm ViewPager . off screen Page Limit ĊĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ æĢ» æķ°éĩı ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġm ViewPager . adapter ?. item Count Ġ?: 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. off screen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ>= Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġèİ·åıĸ åį¡ çīĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcard Ġ= Ġm ViewPager . getChild At ( i ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcard . alpha Ġ= Ġ 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ éĢı æĺİ åº¦ æ¸ Ĳ åıĺ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim Alpha Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" alpha ", Ġ 0 f , Ġ 1 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim Alpha . duration Ġ= Ġ 2 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim Alpha . start Delay Ġ= Ġ( i Ġ* Ġ 1 5 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim Alpha . start () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ åį¡ çīĩ æĹ ĭ è½¬ åĬ¨çĶ» ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanim TY Ġ= ĠObject Animator . of Float ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" rotation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . rotation Ġ- Ġ 3 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcard . rotation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . duration Ġ= Ġ 4 5 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . start Delay Ġ= Ġ( i Ġ* Ġ 1 5 0 ). to Long () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . interpol ator Ġ= ĠOver shoot Interpolator ( 2 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġanim TY . start () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }