package Ġcom . example . say em . share de lement transition demo . listener Ċ Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . transition . Transition Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . example . say em . share de lement transition demo . MainActivity Ċ import Ġcom . example . say em . share de lement transition demo . R Ċ import Ġcom . example . say em . share de lement transition demo . fragment . Image Pager Fragment Ċ import Ġjava . util . concurrent . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġsay em Ġon Ġ 2 / 2 2 / 2 0 1 8 . Ċ Ġ*/ Ċ class ĠViewHolder Listener Impl ( private Ġval Ġfragment : ĠFragment ) Ġ: ĠViewHolder Listener Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġenter Transition Started Ġ= ĠAtomic Boolean () ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad Completed ( view : ĠImageView , Ġadapter Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( MainActivity . current Position Ġ!= Ġadapter Position ) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( enter Transition Started . get AndSet ( true )) Ġreturn ĊĠĠĠĠĠĠĠ Ġfragment . start Post p oned Enter Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Clicked ( view : ĠView , Ġadapter Position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠMainActivity . current Position Ġ= Ġadapter Position ĊĠĠĠĠĠĠĠ Ġ( fragment . exit Transition Ġas ĠTransition Set ). exclude Target ( view , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġval Ġtransition ing View : ĠView Ġ= Ġview . findViewById ( R . id . card _ image ) ĊĠĠĠĠĠĠĠ Ġfragment . fragment Manager ?. beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . set Re ordering Allowed ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . add Shared Element ( transition ing View , Ġtransition ing View . transition Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . replace ( R . id . fragment _ container , ĠImage Pager Fragment (), ĠImage Pager Fragment :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . addTo Back Stack ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . commit () ĊĠĠĠ Ġ} Ċ }