package Ġcom . p wj . parallax image . controller Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Drawable Ċ Ċ /** Ċ Ġ* Ġ@ Author : ĠĠĠĠĠĠĠĠĠ Ġp wj Ċ Ġ* Ġ@ Date : ĠĠĠĠĠĠĠĠĠĠĠĠ 2 0 2 0 / 4 / 2 2 Ġ 1 0 : 4 3 Ċ Ġ* Ġ@ FileName : ĠĠĠĠĠĠĠ ĠBase Image Controller Ċ Ġ* Ġ@ Description : ĠĠĠĠ Ġ åĽ¾çīĩ èµĦæºĲ æİ§åĪ¶åĻ¨ ï¼ļ 1 , åĬłè½½ æľ¬åľ° / res / url . ĠĠ 2 , å¯¹ åĽ¾çīĩ è¿Ľè¡Į ç¼© æĶ¾ æĵįä½ľ , çĶŁæĪĲ bitmap Ġ éĩį åĨĻ load Image () æĿ¥ å®ŀçİ° èĩªå·± åĬłè½½ çļĦ éĢ»è¾ĳ Ċ Ġ*/ Ċ abstract Ġclass ĠBase Image Controller Ġ: ĠI Controller Ġ{ ĊĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġis Processing Ġ= Ġfalse ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġcallback : ĠProcess Callback ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Jvm Field ĊĠĠĠ Ġvar Ġt Bitmap : ĠBitmap ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġprocess ( view Width : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Processing ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġis Processing Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġload Image ( view Width ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġload Image ( view Width : ĠInt ) ĊĊĠĠĠ Ġoverride Ġfun Ġset Process Callback ( callback : ĠProcess Callback ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . callback Ġ= Ġcallback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Target Bitmap (): ĠBitmap ? Ġ= Ġt Bitmap ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ è®¡ç®Ĺ éĩį éĩĩ æł· åĢ į æķ° ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcalculate In Sample Size ( source Width : ĠInt , Ġsource Height : ĠInt , Ġreq Width : ĠInt , Ġreq Height : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġin Sample Size Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġif Ġ( source Width Ġ> Ġreq Width Ġ|| Ġsource Height Ġ> Ġreq Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Width Ġ= Ġsource Width Ġshr Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhalf Height Ġ= Ġsource Height Ġshr Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(( half Width Ġ/ Ġin Sample Size Ġ> Ġreq Width ) Ġ&& Ġ( half Height Ġ/ Ġin Sample Size Ġ> Ġreq Height )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġin Sample Size Ġ*= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġin Sample Size ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ drawable ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Drawable ( view Width : ĠInt , Ġresource : ĠDrawable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 , get Ġthe Ġwidth / height Ġof Ġresource ĊĠĠĠĠĠĠĠ Ġval Ġorigin Width Ġ= Ġresource . intrinsic Width ĊĠĠĠĠĠĠĠ Ġval Ġorigin Height Ġ= Ġresource . intrinsic Height ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 , calc Ġthe Ġscale Ġfactor ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġ 1 . 0 f Ġ* Ġview Width Ġ/ Ġorigin Width ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 , calc Ġthe Ġtarget Ġwidth / height ĊĠĠĠĠĠĠĠ Ġval Ġscale Width Ġ= Ġ( scale Ġ* Ġorigin Width ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġscale Height Ġ= Ġ( scale Ġ* Ġorigin Height ). toInt () ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 , drawable Ġto Ġbitmap ĊĠĠĠĠĠĠĠ Ġvar Ġbmp : ĠBitmap ? Ġ= Ġdrawable 2 Bitmap ( resource ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġ// Ġ 5 , scaled Ġbitmap ĊĠĠĠĠĠĠĠ Ġt Bitmap Ġ= ĠBitmap . create Scaled Bitmap ( bmp !! , Ġscale Width , Ġscale Height , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġbmp Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġcallback !!. on Process Finished ( scale Width , Ġscale Height ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 7 , reset Ġflag ĊĠĠĠĠĠĠĠ Ġis Processing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å¤ĦçĲĨ bitmap ĊĠĠĠĠ Ġ* Ġ@ param Ġview Width ĊĠĠĠĠ Ġ* Ġ@ param Ġbitmap ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġhandle Bitmap ( view Width : ĠInt , Ġbitmap : ĠBitmap ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 , get Ġthe Ġwidth / height Ġof Ġresource ĊĠĠĠĠĠĠĠ Ġvar Ġbitmap Ġ= Ġbitmap ĊĠĠĠĠĠĠĠ Ġval Ġorigin Width Ġ= Ġbitmap !!. width ĊĠĠĠĠĠĠĠ Ġval Ġorigin Height Ġ= Ġbitmap . height ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 , calc Ġthe Ġscale Ġfactor ĊĠĠĠĠĠĠĠ Ġval Ġscale Ġ= Ġ 1 . 0 f Ġ* Ġview Width Ġ/ Ġorigin Width ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 , calc Ġthe Ġtarget Ġwidth / height ĊĠĠĠĠĠĠĠ Ġval Ġscale Width Ġ= Ġ( scale Ġ* Ġorigin Width ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġscale Height Ġ= Ġ( scale Ġ* Ġorigin Height ). toInt () ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 4 , scaled Ġbitmap ĊĠĠĠĠĠĠĠ Ġt Bitmap Ġ= ĠBitmap . create Scaled Bitmap ( bitmap , Ġscale Width , Ġscale Height , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 5 , callback ĊĠĠĠĠĠĠĠ Ġcallback !!. on Process Finished ( scale Width , Ġscale Height ) ĊĠĠĠĠĠĠĠ Ġ// Ġ 6 , reset Ġflag ĊĠĠĠĠĠĠĠ Ġis Processing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġdrawable è½¬ bitmap ĊĠĠĠĠ Ġ* Ġ@ param Ġdrawable ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġdrawable 2 Bitmap ( drawable : ĠDrawable ): ĠBitmap ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( drawable Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . bitmap ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }