package Ġcom . example . float button . function 2 Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics .* Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġcom . example . float button . R ĊĊ Ċ /** Ċ Ġ* Ġdescription : æ°´ æ³¢ æİ§ä»¶ Ċ Ġ* Ċ Ġ* Ġ@ author Ġz wp Ċ Ġ* Ġ@ since Ġ 2 0 2 1 / 1 / 2 7 Ċ Ġ*/ Ċ class ĠWater Wave View Ġ: ĠView Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Paint : ĠPaint Ġ= ĠPaint () ĊĠĠĠ Ġprivate Ġvar Ġm Width : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġm Height : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġvar Ġm G lass Path : ĠPath Ġ= ĠPath () ĊĠĠĠ Ġprivate Ġvar Ġm Wave 1 Path : ĠPath Ġ= ĠPath () ĊĠĠĠ Ġprivate Ġvar Ġm Wave 2 Path : ĠPath Ġ= ĠPath () ĊĊĠĠĠ Ġprivate Ġvar Ġoffset X Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġoffset Y Ġ= Ġ 0 ĊĊĠĠĠ Ġvar Ġtemp Ġ= Ġ 0 ĊĠĠĠ Ġvar Ġtemp 1 Ġ= Ġ 1 ĊĊĠĠĠ Ġprivate Ġval Ġxfer mode Ġ= ĠPort er D uff X fer mode ( Port er D uff . Mode . SRC _ IN ) ĊĊĠĠĠ Ġprivate Ġvar Ġdst Bitmap : ĠBitmap ĊĠĠĠ Ġprivate Ġvar Ġsrc Bitmap : ĠBitmap ĊĊĠĠĠ Ġconstructor ( context : ĠContext ?) Ġ: Ġsuper ( context ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?) Ġ: Ġsuper ( context , Ġattrs ) ĊĠĠĠ Ġconstructor ( context : ĠContext ?, Ġattrs : ĠAttributeSet ?, Ġdef Style Attr : ĠInt ) Ġ: Ġsuper ( ĊĠĠĠĠĠĠĠ Ġcontext , ĊĠĠĠĠĠĠĠ Ġattrs , ĊĠĠĠĠĠĠĠ Ġdef Style Attr ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġm Paint . stroke Width Ġ= Ġ 5 F ĊĠĠĠĠĠĠĠ Ġm Paint . style Ġ= ĠPaint . Style . FILL _ AND _ ST RO KE ĊĠĠĠĠĠĠĠ Ġdst Bitmap Ġ= ĠBitmap . create Bitmap ( 1 0 0 0 , Ġ 1 0 0 0 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġsrc Bitmap Ġ= ĠBitmap . create Bitmap ( 1 0 0 0 , Ġ 1 0 0 0 , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠĠĠĠĠ Ġdraw SRC Bitmap () ĊĠĠĠĠĠĠĠ Ġdraw DST Bitmap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Width Ġ= Ġright Ġ- Ġleft ĊĠĠĠĠĠĠĠ Ġm Height Ġ= Ġbottom Ġ- Ġtop ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġcanvas ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreset Path () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclear Paint () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsc Ġ= Ġcanvas . save Layer ( 0 F , Ġ 0 F , Ġm Width . toFloat (), Ġm Height . toFloat (), Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw G lass () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( dst Bitmap , Ġm Width Ġ/ Ġ 2 f Ġ- Ġ 5 0 0 , Ġm Height Ġ/ Ġ 2 f Ġ- Ġ 5 0 0 , Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Wave () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Paint . xfer mode Ġ= Ġxfer mode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Bitmap ( src Bitmap , Ġm Width Ġ/ Ġ 2 f Ġ- Ġ 5 0 0 Ġ+ Ġtemp , Ġm Height Ġ/ Ġ 2 f Ġ- Ġ 5 0 0 , Ġm Paint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . restore To Count ( sc ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( temp Ġ> Ġ 1 9 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 1 Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( temp < 1 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp 1 Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtemp Ġ+= Ġtemp 1 ĊĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclear Paint () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint . reset () ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= ĠColor . BLACK ĊĠĠĠĠĠĠĠ Ġm Paint . stroke Width Ġ= Ġ 5 F ĊĠĠĠĠĠĠĠ Ġm Paint . style Ġ= ĠPaint . Style . FILL _ AND _ ST RO KE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreset Path () Ġ{ ĊĠĠĠĠĠĠĠ Ġm G lass Path . reset () ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . reset () ĊĠĠĠĠĠĠĠ Ġm Wave 2 Path . reset () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw G lass () Ġ{ ĊĠĠĠĠĠĠĠ Ġm G lass Path . moveTo ( 2 0 0 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġm G lass Path . lineTo ( 2 0 0 F , Ġ 8 0 0 F ) ĊĠĠĠĠĠĠĠ Ġm G lass Path . lineTo ( 6 0 0 F , Ġ 8 0 0 F ) ĊĠĠĠĠĠĠĠ Ġm G lass Path . lineTo ( 6 0 0 F , Ġ 0 F ) ĊĠĠĠĠĠĠĠ Ġdst Canvas . draw Path ( m G lass Path , Ġm Paint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw Wave () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Paint . color Ġ= Ġcontext . resources . getColor ( R . color . wave _ color ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . moveTo ( 0 f Ġ+ Ġoffset X , Ġ 2 0 0 f Ġ+ Ġoffset Y ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . quad To ( 1 0 0 f Ġ+ Ġoffset X , Ġ 1 5 0 F Ġ+ Ġoffset Y , Ġ 2 0 0 f Ġ+ Ġoffset X , Ġ 2 0 0 f Ġ+ Ġoffset Y ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . quad To ( 3 0 0 f Ġ+ Ġoffset X , Ġ 2 5 0 f Ġ+ Ġoffset Y , Ġ 4 0 0 f Ġ+ Ġoffset X , Ġ 2 0 0 f Ġ+ Ġoffset Y ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . quad To ( 5 0 0 f Ġ+ Ġoffset X , Ġ 1 5 0 F Ġ+ Ġoffset Y , Ġ 6 0 0 F Ġ+ Ġoffset X , Ġ 2 0 0 F Ġ+ Ġoffset Y ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . lineTo ( 6 0 0 F Ġ+ Ġoffset X , Ġ 8 0 0 F ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . lineTo ( 0 f Ġ+ Ġoffset X , Ġ 8 0 0 f ) ĊĠĠĠĠĠĠĠ Ġm Wave 1 Path . close () ĊĠĠĠĠĠĠĠ Ġsrc Canvas . draw Path ( m Wave 1 Path , Ġm Paint ) ĊĊĠĠĠĠĠĠĠ Ġm Paint . xfer mode Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġsrc Canvas : ĠCanvas ĊĠĠĠ Ġlateinit Ġvar Ġdst Canvas : ĠCanvas ĊĊĠĠĠ Ġprivate Ġfun Ġdraw SRC Bitmap () Ġ{ ĊĠĠĠĠĠĠĠ Ġsrc Canvas Ġ= ĠCanvas ( src Bitmap ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdraw DST Bitmap () Ġ{ ĊĠĠĠĠĠĠĠ Ġdst Canvas Ġ= ĠCanvas ( dst Bitmap ) ĊĠĠĠ Ġ} Ċ }