package Ġcom . lim x top . research . graphic Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Matrix Ċ import Ġandroid . graphics . Rect F Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . lim x top . research . R Ċ import Ġcom . lim x top . research . utils . R Log Ċ Ċ // ĠTODO : ĠRename Ġparameter Ġarguments , Ġchoose Ġnames Ġthat Ġmatch Ċ // Ġthe Ġfragment Ġinitialization Ġparameters , Ġe . g . ĠARG _ ITEM _ NUMBER Ċ private Ġconst Ġval ĠARG _ PARAM 1 Ġ= Ġ" param 1 " Ċ private Ġconst Ġval ĠARG _ PARAM 2 Ġ= Ġ" param 2 " Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġ[ Fragment ] Ġsubclass . Ċ Ġ* ĠUse Ġthe Ġ[ Bitmap Transition Fragment . newInstance ] Ġfactory Ġmethod Ġto Ċ Ġ* Ġcreate Ġan Ġinstance Ġof Ġthis Ġfragment . Ċ Ġ*/ Ċ class ĠBitmap Transition Fragment Ġ: ĠFragment () Ġ{ ĊĠĠĠ Ġ// ĠTODO : ĠRename Ġand Ġchange Ġtypes Ġof Ġparameters ĊĠĠĠ Ġprivate Ġvar Ġparam 1 : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġparam 2 : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġm ImageView : ĠImageView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Transition : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Bitmap : ĠBitmap ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġarguments ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam 1 Ġ= Ġit . getString ( ARG _ PARAM 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparam 2 Ġ= Ġit . getString ( ARG _ PARAM 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġlayout Ġfor Ġthis Ġfragment ĊĠĠĠĠĠĠĠ Ġreturn Ġinflater . inflate ( R . layout . fragment _ bitmap _ transition , Ġcontainer , Ġfalse ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĠĠĠĠĠĠĠ Ġm ImageView Ġ= Ġview . findViewById < ImageView >( R . id . image _ view ) ĊĠĠĠĠĠĠĠ Ġm Transition Ġ= Ġview . findViewById ( R . id . transition ) ĊĠĠĠĠĠĠĠ Ġm Transition ?. setOnClickListener ({ Ġview Ġ-> Ġtransition ( view )}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdecode Bitmap () Ġ{ ĊĠĠĠĠĠĠĠ ĠR Log . d (" hello 2 ") ĊĠĠĠĠĠĠĠ Ġval Ġsource : ĠBitmap Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . ic _ launcher ) ĊĠĠĠĠĠĠĠ Ġval Ġmeasure Width : ĠInt Ġ= Ġm ImageView !!. meas ured Width ĊĠĠĠĠĠĠĠ Ġval Ġmeasure Height : ĠInt Ġ= Ġm ImageView !!. meas ured Height ĊĊĊ Ċ // ĠĠĠĠĠĠĠ Ġval Ġview M : ĠMatrix Ġ Ġ= Ġm ImageView !!. getImage Matrix () Ċ // ĠĠĠĠĠĠĠ Ġval Ġrotate M : ĠMatrix Ġ= ĠMatrix () Ċ // ĠĠĠĠĠĠĠ Ġrotate M . post Translate (- source . width Ġ/ Ġ 2 f , Ġ- source . height Ġ/ Ġ 2 f ) Ċ // ĠĠĠĠĠĠĠ Ġview M . post Concat ( rotate M ) Ċ // ĠĠĠĠĠĠĠ Ġrotate M . post Rotate ( 9 0 f ) Ċ // ĠĠĠĠĠĠĠ Ġview M . post Concat ( rotate M ) Ċ // ĠĠĠĠĠĠĠ Ġval Ġview Rect : ĠRect F Ġ= ĠRect F ( 0 f , Ġ 0 f , Ġmeasure Width . toFloat (), Ġmeasure Height . toFloat ()) Ċ // ĠĠĠĠĠĠĠ Ġval Ġdrawable Rect : ĠRect F Ġ= ĠRect F ( 0 f , Ġ 0 f , Ġsource . width . toFloat (), Ġsource . height . toFloat ()) Ċ // ĠĠĠĠĠĠĠ Ġmap M . set Rect To Rect ( drawable Rect , Ġview Rect , ĠMatrix . Scale To Fit . START ); Ċ // ĠĠĠĠĠĠĠ Ġmap M . post Rotate ( 9 0 f ) ĊĊĠĠĠĠĠĠĠ Ġval Ġview M : ĠMatrix Ġ Ġ= Ġm ImageView !!. getImage Matrix () ĊĠĠĠĠĠĠĠ Ġval Ġrotate M : ĠMatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠ Ġview M . post Translate (- source . width Ġ/ Ġ 2 f , Ġ- source . height Ġ/ Ġ 2 f ) Ċ // ĠĠĠĠĠĠĠ Ġview M . post Translate ( source . width Ġ/ Ġ 2 f , Ġsource . height Ġ/ Ġ 2 f ) Ċ Ċ // ĠĠĠĠĠĠĠ Ġview M . post Concat ( rotate M ) ĊĠĠĠĠĠĠĠ Ġview M . post Rotate ( 9 0 f ) Ċ // ĠĠĠĠĠĠĠ Ġview M . post Concat ( rotate M ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtranslate M : ĠMatrix Ġ= ĠMatrix () ĊĠĠĠĠĠĠĠ Ġval Ġdx : ĠFloat Ġ= Ġ( m ImageView !!. meas ured Width ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġval Ġdy : ĠFloat Ġ= Ġ( m ImageView !!. meas ured Height ) Ġ/ Ġ 2 f ĊĠĠĠĠĠĠĠ Ġtranslate M . post Translate ( dx , Ġdy ) ĊĠĠĠĠĠĠĠ Ġ// ĠM ' Ġ= ĠT ( dx , Ġdy ) Ġ* ĠM , Ġthe ĠM Ġmatrix Ġtakes Ġeffect Ġfirst Ġand Ġthen Ġthe Ġtranslate Ġmatrix . Ċ // ĠĠĠĠĠĠĠ Ġview M . post Concat ( translate M ) ĊĠĠĠĠĠĠĠ Ġview M . post Translate ( dx , Ġdy ) ĊĠĠĠĠĠĠĠ Ġm ImageView !!. setImage Matrix ( view M ) ĊĠĠĠĠĠĠĠ Ġm ImageView ?. setImage Bitmap ( source ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġtransition ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdecode Bitmap () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUse Ġthis Ġfactory Ġmethod Ġto Ġcreate Ġa Ġnew Ġinstance Ġof ĊĠĠĠĠĠĠĠĠ Ġ* Ġthis Ġfragment Ġusing Ġthe Ġprovided Ġparameters . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparam 1 ĠParameter Ġ 1 . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġparam 2 ĠParameter Ġ 2 . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠA Ġnew Ġinstance Ġof Ġfragment ĠBitmap Transition Fragment . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠRename Ġand Ġchange Ġtypes Ġand Ġnumber Ġof Ġparameters ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( param 1 : ĠString , Ġparam 2 : ĠString ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBitmap Transition Fragment (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġarguments Ġ= ĠBundle (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( ARG _ PARAM 1 , Ġparam 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput String ( ARG _ PARAM 2 , Ġparam 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }