package Ġcom . sk yy o . samples . features . view Pager Ċ Ċ import Ġandroidx . compose . animation . animate Color As State Ċ import Ġandroidx . compose . animation . core . Linear E asing Ċ import Ġandroidx . compose . animation . core . animate Int As State Ċ import Ġandroidx . compose . animation . core . t ween Ċ import Ġandroidx . compose . foundation . Image Ċ import Ġandroidx . compose . foundation . background Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . foundation . shape . Rounded Corner Shape Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . rounded . Car Repair Ċ import Ġandroidx . compose . runtime .* Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . draw . clip Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . Color Filter Ċ import Ġandroidx . compose . ui . graphics . lerp Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġcom . google . ac comp an ist . in sets . status Bars Padding Ċ import Ġcom . google . ac comp an ist . pager .* Ċ import Ġcom . sk yy o . samples . extensions . log Ċ import Ġkotlinx . coroutines . flow . collect Ċ import Ġkotlinx . coroutines . launch Ċ import Ġkotlin . math . absolute Value Ċ Ċ @ Experimental Pager Api Ċ @ Composable Ċ fun ĠView Pager Screen () Ġ{ ĊĠĠĠ Ġval Ġscope Ġ= Ġremember Coroutine Scope () ĊĠĠĠ Ġval Ġpages Ġ= Ġremember Ġ{ ĠlistOf ( 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 1 0 ) Ġ} ĊĠĠĠ Ġval Ġpager State Ġ= Ġremember Pager State ( ĊĠĠĠĠĠĠĠ Ġpage Count Ġ= Ġpages . size , ĊĠĠĠĠĠĠĠ Ġinitial Page Offset Ġ= Ġ 1 f , ĊĠĠĠĠĠĠĠ Ġinitial Off screen Limit Ġ= Ġ 3 , Ġ// Ġto Ġpreload Ġmore Ġitems ĊĠĠĠ Ġ) ĊĠĠĠ Ġval ĠbackgroundColor Ġby Ġanimate Color As State ( ĊĠĠĠĠĠĠĠ Ġtarget Value Ġ= Ġl erp ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Ġ= ĠMaterial Theme . colors . secondary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfraction Ġ= Ġwith ( pager State ) Ġ{ Ġ( currentPage Offset Ġ+ ĠcurrentPage ) Ġ/ Ġpage Count Ġ} ĊĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġ 2 5 0 , Ġeasing Ġ= ĠLinear E asing ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠLa unched Effect ( pager State ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsnapshot Flow Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager State . currentPage ĊĠĠĠĠĠĠĠ Ġ}. collect Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog (" current Ġpage Ġ$ page ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill MaxSize () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. status Bars Padding () ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠScroll able Tab Row ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselected TabIndex Ġ= Ġpager State . currentPage , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠColor . Unspecified , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Ġ= Ġ{ Ġtab Positions Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab Row Defaults . Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. pager Tab Indicator Offset ( pager State , Ġtab Positions ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Rounded Corner Shape ( 5 0 )), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġ 2 . dp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtabs Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpages . forEach Indexed Ġ{ Ġindex , Ġtitle Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcorner Size In Percent s Ġby Ġanimate Int As State ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġpager State . currentPage ) Ġ 1 0 0 Ġelse Ġ 2 5 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanimation Spec Ġ= Ġt ween ( duration Millis Ġ= Ġ 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey ( index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTab ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRo unded Corner Shape ( corner Size In Percent s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ{ ĠText ("$ title ") Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Content Color Ġ= ĠColor . White , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun selected Content Color Ġ= ĠColor . Black , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselected Ġ= Ġpager State . currentPage Ġ== Ġindex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġscope . launch Ġ{ Ġpager State . animate Scroll To Page ( index ) Ġ} Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠSp acer ( modifier Ġ= ĠModifier . height ( 1 6 . dp )) ĊĠĠĠĠĠĠĠ ĠHorizontal Pager ( state Ġ= Ġpager State , Ġmodifier Ġ= ĠModifier . fill Max Width ()) Ġ{ Ġpage Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkey ( page ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP ager Card ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Offset Ġ= Ġthis @ Horizontal Pager . calculate Current Offset For Page ( page ). absolute Value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġpage , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġ 0 . dp . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġscope . launch Ġ{ Ġpager State . animate Scroll To Page ( 0 ) Ġ} Ġ}) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP ager Card ( Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Offset Ġ= Ġthis @ Horizontal Pager . calculate Current Offset For Page ( page ). absolute Value , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Ġ= Ġpage , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Ġ= Ġ 1 2 0 . dp . value , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbackgroundColor Ġ= ĠbackgroundColor , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġscope . launch Ġ{ Ġpager State . animate Scroll To Page ( 0 ) Ġ} Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠHorizontal Pager Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager State Ġ= Ġpager State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ), ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠCustom Horizontal Pager Indicator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpager State Ġ= Ġpager State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. align ( Alignment . Center H orizontally ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġindicator Width Ġ= Ġ 1 6 . dp , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Indicator Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠImage ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . match Parent Size (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Rounded . Car Repair , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Filter Ġ= ĠColor Filter . tint ( Color . White ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinactive Indicator Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. match Parent Size () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. clip ( Rounded Corner Shape ( 2 . dp )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( backgroundColor ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ