/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġandroidx . fragment . test app . kit ten fragment transitions Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . RadioButton Ċ import Ġandroidx . core . view . One Shot Pre Draw Listener Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . commit Ċ import Ġandroidx . fragment . test app . R Ċ import Ġandroidx . fragment . test app . kit ten fragment transitions . Details Fragment . Companion . newInstance Ċ import Ġandroidx . recyclerview . widget . Grid LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġandroidx . transition . Fade Ċ Ċ /** Ċ Ġ* ĠDisplays Ġa Ġgrid Ġof Ġpictures Ċ Ġ*/ Ċ class ĠGrid Fragment Ġ: ĠFragment ( R . layout . kit ten _ fragment _ grid ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( ĊĠĠĠĠĠĠĠ Ġview : ĠView , ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġview . findViewById < RecyclerView >( R . id . recyclerview ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadapter Ġ= ĠKit ten Grid Adapter ( callback ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlayout Manager Ġ= ĠGrid LayoutManager ( context , Ġ 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// ĠView Ġis Ġcreated Ġso Ġpost p one Ġthe Ġtransition ĊĠĠĠĠĠĠĠ Ġpost p one Enter Transition () ĊĠĠĠĠĠĠĠ ĠOne Shot Pre Draw Listener . add ( view . parent Ġas ĠViewGroup ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Post p oned Enter Transition () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcallback Ġ= Ġ{ Ġholder : ĠKit ten ViewHolder , Ġposition : ĠInt Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġkit ten Number Ġ= Ġposition Ġ% Ġ 6 Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġval Ġkit ten Details Ġ= Ġnew Instance ( kit ten Number ) ĊĠĠĠĠĠĠĠ Ġ// ĠNote Ġthat Ġwe Ġneed Ġthe ĠAPI Ġversion Ġcheck Ġhere Ġbecause Ġthe Ġactual Ġtransition ĊĠĠĠĠĠĠĠ Ġ// Ġclasses ( e . g . ĠF ade ) Ġare Ġnot Ġin Ġthe Ġsupport Ġlibrary Ġand Ġare Ġonly Ġavailable Ġin ĠAPI Ġ 2 1 +. ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġmethods Ġwe Ġare Ġcalling Ġon Ġthe ĠFragment ĠARE Ġavailable Ġin Ġthe Ġsupport Ġlibrary ĊĠĠĠĠĠĠĠ Ġ// Ġ( though Ġthey Ġdon 't Ġdo Ġanything Ġon ĠAPI Ġ< Ġ 2 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkit ten Details . shared Element Enter Transition Ġ= ĠDetails Transition () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkit ten Details . enter Transition Ġ= ĠF ade () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit Transition Ġ= ĠF ade () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkit ten Details . shared Element Return Transition Ġ= ĠDetails Transition () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġradio Replace Ġ= Ġrequire Activity (). findViewById < RadioButton >( R . id . radioButton 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( radio Replace . isChecked ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent FragmentManager . commit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Re ordering Allowed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Shared Element ( holder . image , Ġ" kit ten Image ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace ( R . id . container , Ġkit ten Details ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent FragmentManager . commit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Re ordering Allowed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Shared Element ( holder . image , Ġ" kit ten Image ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( R . id . container , Ġkit ten Details ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhide ( this @ Grid Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠaddTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ