package Ġcom . sc wang . refresh layout . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . ImageView Ċ import Ġcom . sc wang . smart . refresh . layout . api . Refresh Header Ċ import Ġcom . sc wang . smart . refresh . layout . api . Refresh Layout Ċ import Ġcom . sc wang . smart . refresh . layout . constant . Refresh State Ċ import Ġcom . sc wang . smart . refresh . layout . constant . Spinner Style Ċ import Ġcom . sc wang . smart . refresh . layout . simple . Simple Component Ċ Ċ class ĠCustom Refresh Header Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull , ĊĠĠĠ Ġdef Style Attr : ĠInt Ġ= Ġ 0 , Ċ ) Ġ: ĠSimple Component ( context , Ġattrs , Ġdef Style Attr ), ĠRefresh Header Ġ{ Ċ Ċ // ĠĠĠ Ġprotected Ġval Ġm Progress Drawable : ĠProgress Drawable Ċ // ĠĠĠ Ġprotected Ġval Ġm Progress : ĠMaterial Progress Drawable ĊĠĠĠ Ġprivate Ġval Ġm ImageView : ĠImageView ĊĠĠĠ Ġprivate Ġval Ġdrawable : ĠCustom Progress Drawable ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġthis Group : ĠViewGroup Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġset BackgroundColor ( Color . BLUE ) ĊĠĠĠĠĠĠĠ Ġset Will Not Draw ( false ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( style Ġin ĠSp inner Style . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( style . scale ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Spinner Style Ġ= Ġstyle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠ Ġm Progress Drawable Ġ= ĠProgress Drawable () Ċ // ĠĠĠĠĠĠĠ Ġdrawable Ġ= ĠResources Compat . get Drawable ( context . resources , ĠR . drawable . spinner , Ġnull ) ĊĠĠĠĠĠĠĠ Ġdrawable Ġ= ĠCustom Progress Drawable ( context ) ĊĠĠĠĠĠĠĠ Ġdrawable . alpha Ġ= Ġ 0 Ċ // ĠĠĠĠĠĠĠ Ġval Ġprogress Drawable : ĠDrawable Ġ= Ġm Progress Drawable Ċ // ĠĠĠĠĠĠĠ Ġprogress Drawable . callback Ġ= Ġthis Ċ // ĠĠĠĠĠĠĠ Ġprogress Drawable . setBounds ( 0 , Ġ 0 , ĠSmart Util . dp 2 px ( 2 0 f ), ĠSmart Util . dp 2 px ( 2 0 f )) ĊĊĠĠĠĠĠĠĠ Ġm ImageView Ġ= ĠImageView ( context ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠ Ġm Progress . set BackgroundColor ( 0 xffffffff ); Ċ // ĠĠĠĠĠĠĠ Ġm Progress . set Alpha ( 2 5 5 ); Ċ // ĠĠĠĠĠĠĠ Ġm Progress Ġ= ĠMaterial Progress Drawable ( m ImageView ) Ċ // ĠĠĠĠĠĠĠ Ġm Progress . setColor Scheme Colors (- 0 x 1 , Ġ- 0 xff 6 6 3 4 , Ġ- 0 xb bbc , Ġ- 0 x 9 9 6 7 0 0 , Ġ- 0 x 5 5 9 9 3 4 , Ġ- 0 x 7 8 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġm ImageView . setImage Drawable ( drawable ) ĊĊĠĠĠĠĠĠĠ Ġthis Group . addView ( m ImageView , Ġdrawable . bounds . width (), Ġdrawable . bounds . height ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Measure ( width Measure Spec : ĠInt , Ġheight Measure Spec : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Measure ( width Measure Spec , Ġheight Measure Spec ) ĊĠĠĠĠĠĠĠ Ġval ĠimageView : ĠView Ġ= Ġm ImageView ĊĠĠĠĠĠĠĠ Ġval Ġlp Image Ġ= ĠimageView . layout Params Ġas ĠLayout Params ĊĠĠĠĠĠĠĠ ĠimageView . measure ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . make Measure Spec ( lp Image . width , ĠMeasure Spec . EX ACT LY ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMeasure Spec . make Measure Spec ( lp Image . height , ĠMeasure Spec . EX ACT LY ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval ĠmaxWidth Ġ= ĠMath . max ( imageView . meas ured Width , Ġsuggested Minimum Height ) ĊĠĠĠĠĠĠĠ Ġval ĠmaxHeight Ġ= ĠMath . max ( imageView . meas ured Height , Ġsuggested Minimum Width ) ĊĠĠĠĠĠĠĠ Ġsuper . set Measured Dimension ( View . resolve Size ( maxWidth , Ġwidth Measure Spec ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠView . resolve Size ( max Height , Ġheight Measure Spec )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġl : ĠInt , Ġt : ĠInt , Ġr : ĠInt , Ġb : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġl , Ġt , Ġr , Ġb ) ĊĠĠĠĠĠĠĠ Ġval Ġthis View : ĠView Ġ= Ġthis ĊĠĠĠĠĠĠĠ Ġval ĠimageView : ĠView Ġ= Ġm ImageView ĊĠĠĠĠĠĠĠ Ġval Ġmeasured Width Ġ= Ġthis View . meas ured Width ĊĊĠĠĠĠĠĠĠ Ġval Ġwidth Image Ġ= ĠimageView . meas ured Width ĊĠĠĠĠĠĠĠ Ġval Ġheight Image Ġ= ĠimageView . meas ured Height ĊĠĠĠĠĠĠĠ Ġval Ġleft Image Ġ= Ġ( meas ured Width Ġ- Ġwidth Image ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġtop Image Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ ĠimageView . layout ( left Image , Ġtop Image , Ġleft Image Ġ+ Ġwidth Image , Ġtop Image Ġ+ Ġheight Image ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon StateChanged ( ĊĠĠĠĠĠĠĠ Ġrefresh Layout : ĠRefresh Layout , ĊĠĠĠĠĠĠĠ Ġold State : ĠRefresh State , ĊĠĠĠĠĠĠĠ ĠnewState : ĠRefresh State , ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on StateChanged ( refresh Layout , Ġold State , ĠnewState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// </ editor - fold > ĊĠĠĠ Ġ// < editor - fold Ġdesc =" Refresh Header "> ĊĠĠĠ Ġoverride Ġfun Ġon Moving ( ĊĠĠĠĠĠĠĠ Ġis Dragging : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġpercent : ĠFloat , ĊĠĠĠĠĠĠĠ Ġoffset : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt , ĊĠĠĠĠĠĠĠ Ġmax Drag Height : ĠInt , ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġoriginal Drag Percent Ġ= Ġ 1 f Ġ* Ġoffset Ġ/ Ġheight ĊĠĠĠĠĠĠĠ Ġval Ġalpha Ġ= ĠMath . min ( original Drag Percent Ġ* Ġ 2 5 5 , Ġ 2 5 5 f ). toInt () ĊĠĠĠĠĠĠĠ Ġif Ġ( is Dragging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrag Percent Ġ= ĠMath . min ( 1 f , ĠMath . abs ( original Drag Percent )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadjusted Percent Ġ= ĠMath . max ( drag Percent Ġ- Ġ. 4 , Ġ 0 . 0 ). toFloat () Ġ* Ġ 5 Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġextra OS Ġ= Ġ( Math . abs ( offset ) Ġ- Ġheight ). toFloat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ension S ling shot Percent Ġ= ĠMath . max ( 0 f , ĠMath . min ( extra OS , Ġheight . toFloat () Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/ Ġheight . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġt ension Percent Ġ= Ġ( t ension S ling shot Percent Ġ/ Ġ 4 Ġ- ĠMath . pow ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( t ension S ling shot Percent Ġ/ Ġ 4 ). toDouble (), Ġ 2 . 0 )). toFloat () Ġ* Ġ 2 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstroke Start Ġ= Ġadjusted Percent Ġ* Ġ. 8 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrotation Ġ= Ġ(. 4 f Ġ* Ġadjusted Percent Ġ+ Ġt ension Percent Ġ* Ġ 2 ) Ġ* Ġ. 5 f ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdrawable . set Clock wise Rotate ( rotation ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġdrawable . alpha Ġ= Ġalpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Released ( refresh Layout : ĠRefresh Layout , Ġheight : ĠInt , Ġmax Drag Height : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdrawable . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Finish ( refresh Layout : ĠRefresh Layout , Ġsuccess : ĠBoolean ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġdrawable . stop () ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} Ċ }