package Ġcom . b ichi . demo . android . canvas Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Bitmap Factory Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . LinearLayout Ċ import Ġcom . b ichi . demo . android . R Ċ import Ġcom . b ichi . lib . common . android . ui . Base Activity Ċ Ċ class ĠCanvas Scale A ty Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġscale From Ġ= ĊĠĠĠĠĠĠĠĠ 0 // 0 : no Ġchange ĠĠ 1 : change Ġacross Ġorigin ĠĠĠ 2 : change Ġacross Ġa Ġpointed Ġpoint ( center Ġin Ġthis Ġdemo ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġll Root Ġ= ĠLinearLayout ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġbtn Root Ġ= ĠLinearLayout ( this ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( ll Root ) ĊĠĠĠĠĠĠĠ Ġval Ġshow View Ġ= ĠDemo View ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġorigin Scale Ġ= ĠButton ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text (" ç» ķ åİŁ çĤ¹ ç¼© æĶ¾ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale From Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow View . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpoint Scale Ġ= ĠButton ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text (" ç» ķ ä¸Ńå¿ĥ ç¼© æĶ¾ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale From Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow View . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġno Change Ġ= ĠButton ( this ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Text (" è¿ĺ åİŁ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale From Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow View . invalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbtn Root . orientation Ġ= ĠLinearLayout . HORIZONTAL ĊĠĠĠĠĠĠĠ Ġbtn Root . addView ( origin Scale ) ĊĠĠĠĠĠĠĠ Ġbtn Root . addView ( point Scale ) ĊĠĠĠĠĠĠĠ Ġbtn Root . addView ( no Change ) ĊĠĠĠĠĠĠĠ Ġll Root . orientation Ġ= ĠLinearLayout . VERTICAL ĊĠĠĠĠĠĠĠ Ġll Root . addView ( btn Root ) ĊĠĠĠĠĠĠĠ Ġll Root . addView ( show View ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠDemo View ( context : ĠContext ?) Ġ: ĠView ( context ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Temp B mp : ĠBitmap ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġm Bitmap Rect Ġ= ĠRect () ĊĊĠĠĠĠĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Temp B mp Ġ= ĠBitmap Factory . decode Resource ( resources , ĠR . drawable . k aren ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Bitmap Rect Ġ= ĠRect ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Detached From Window () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Temp B mp ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Re cyc led ) Ġre cycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Detached From Window () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Temp B mp ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( scale From ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġscale ( 0 . 5 f , Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġscale ( 0 . 5 f , Ġ 0 . 5 f , Ġm Bitmap Rect . width () Ġ* Ġ 0 . 5 f , Ġm Bitmap Rect . height () Ġ* Ġ 0 . 5 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}// no Ġchange ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Bitmap ( it , Ġm Bitmap Rect . left . toFloat (), Ġm Bitmap Rect . top . toFloat (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}// end Ġof Ġon Draw ĊĠĠĠ Ġ} Ċ } Ċ