/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 . ĠF y ber ĠN . V Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . fy ber . fair bid . sample Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . support . v 7 . widget . RecyclerView Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Button Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . ProgressBar Ċ import Ġandroid . widget . TextView Ċ import Ġcom . fy ber . fair bid . ads . Rew arded Ċ import Ġcom . fy ber . fair bid . ads . re warded . Rew arded Listener Ċ import Ġcom . fy ber . fair bid . utilities . On Screen Callbacks Helper Ċ import Ġcom . fy ber . fair bid . utilities . Main Fragment Ċ Ċ /** Ċ Ġ* ĠLog Ġtag Ċ Ġ*/ Ċ private Ġconst Ġval ĠRE WAR DED _ FRAGMENT _ TAG Ġ= Ġ" Rew arded Fragment " Ċ Ċ /** Ċ Ġ* ĠA ĠFragment Ġdemonstr ating Ġhow Ġto Ġrequest Ġand Ġdisplay Ġinter stitial Ġads Ġusing Ġthe ĠF air Bid ĠSDK . Ċ Ġ*/ Ċ class ĠRew arded Fragment Ġ: ĠFragment (), ĠOn Screen Callbacks Helper . Logs Listener Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe ĠRew arded 's Ġplacement Ġname Ġ- Ġas Ġconfigured Ġat ĠF y ber Ġconsole ĊĠĠĠĠĠĠĠĠ Ġ* Ġ" Rew arded Placement Id Example " Ġcan Ġbe Ġused Ġusing Ġthe Ġprovided Ġexample ĠAPP _ ID ĊĠĠĠĠĠĠĠĠ Ġ* ĠTODO Ġchange Ġto Ġyour Ġown Ġconfigured Ġplacement . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠRE WAR DED _ PLACE MENT _ NAME Ġ= Ġ" 1 9 7 4 0 6 " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġrequest Button : ĠView ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġclean CallBack s : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġshow Button : ĠButton ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġre cyclerView : ĠRecyclerView ĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠprogressBar : ĠProgress Bar ĊĠĠĠ Ġprivate Ġvar Ġfragment View : ĠView ? Ġ= Ġnull ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment View Ġ= Ġinflater . inflate ( R . layout . ad _ container _ fragment , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment View ?. let Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinitialize Ui Elements ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Listener () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġrequest Button Ġis Ġclicked ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġprovides Ġan Ġexample Ġfor Ġcalling Ġthe ĠAPI Ġmethod ĠRew arded . r que est Ġin Ġorder Ġto Ġrequest Ġa Ġre warded Ġplacement ĊĠĠĠĠ Ġ* Ġ@ param Ġre warded Placement Name Ġname Ġof Ġplacement Ġto Ġbe Ġrequested ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġrequest Rew arded ( re warded Placement Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" Request ing ĠRew arded Video ") ĊĠĠĠĠĠĠĠ Ġ/** Ġrequest Ġa Ġnew Ġad Ġin Ġcase Ġthere Ġis Ġno Ġavailable Ġad Ġto Ġshow Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ(! Rew arded . is Available ( re warded Placement Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRew arded . request ( re warded Placement Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Request Animation () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġshow Button Ġis Ġclicked ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġprovides Ġan Ġexample Ġfor Ġcalling Ġthe ĠAPI Ġmethod ĠRew arded . show Ġin Ġorder Ġto Ġshow Ġthe Ġad Ġreceived Ġin Ġthe Ġprovided Ġplacement ĊĠĠĠĠ Ġ* Ġ@ param Ġre warded Placement Name Ġname Ġof Ġplacement Ġto Ġbe Ġdisplayed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġshow Rew arded ( re warded Placement Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" Showing ĠRew arded Video ") ĊĠĠĠĠĠĠĠ ĠRew arded . show ( re warded Placement Name , Ġactivity ) ĊĠĠĠĠĠĠĠ Ġreset Animation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġfunction Ġprovides Ġan Ġexample Ġof ĠList ening Ġto ĠF air Bid ĠB an Rew arded ner ĠCallback s Ġand Ġevents . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġset Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġre warded Listener Ġ= Ġobject Ġ: ĠRew arded Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show ( placement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" on Show Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , ĠOn Screen Callbacks Helper . ON _ SHOW ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonClick ( placement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" onClick Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , ĠOn Screen Callbacks Helper . ON _ CLICK ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Hide ( placement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" on Hide Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , ĠOn Screen Callbacks Helper . ON _ HIDE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Show Failure ( placement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" on Show Failure Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , ĠOn Screen Callbacks Helper . ON _ SHOW _ FAILURE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Available ( placement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" on Available Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , ĠOn Screen Callbacks Helper . ON _ AVAILABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Ad Available Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Unavailable ( placement : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" on Unavailable Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , ĠOn Screen Callbacks Helper . ON _ UN AVAILABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreset Animation () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Completion ( placement : ĠString , Ġuser Rew arded : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . log And Toast ( re cyclerView , Ġcontext , Ġif Ġ( user Rew arded ) Ġ"${ On Screen Callbacks Helper . ON _ COMP LE TION }" Ġelse Ġ"${ On Screen Callbacks Helper . ON _ COMP LE TION }: Ġ$ user Rew arded ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v ( RE WAR DED _ FRAGMENT _ TAG , Ġ" on Completion Ġre warded Ġstatus : Ġ$ user Rew arded , Ġ$ placement ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠRew arded . set Rew arded Listener ( re warded Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . Ġinitialize Ġthe ĠUI Ġelements Ġin Ġthis Ġfragment . ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġthe Ġcontainer Ġview Ġfor Ġthis Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinitialize Ui Elements ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Log Recycler ( view ) ĊĠĠĠĠĠĠĠ Ġinit Text Views ( view ) ĊĠĠĠĠĠĠĠ Ġinit Buttons ( view ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . Ġinitialize Ġthe Ġre cycler Ġview Ġused Ġto Ġdisplay Ġcallbacks Ġand Ġevents . ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġthe Ġcontainer Ġview Ġfor Ġthis Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Log Recycler ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġre cyclerView Ġ= Ġview . findViewById ( R . id . recycler _ callbacks ) ĊĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . configure Recycler ( re cyclerView , Ġactivity !! , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . Ġinitialize Ġthe Ġtext Ġviews Ġin Ġthis Ġfragment ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġthe Ġcontainer Ġview Ġfor Ġthis Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Text Views ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplacement Name : ĠTextView Ġ= Ġview . findViewById ( R . id . placement _ name _ tv ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġplacement Name . text Ġ= ĠRE WAR DED _ PLACE MENT _ NAME ĊĠĠĠĠĠĠĠ Ġval Ġheader Name : ĠTextView Ġ= Ġview . findViewById ( R . id . fragment _ header ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġheader Name . text Ġ= ĠgetString ( R . string . re warded _ header _ name ) ĊĠĠĠĠĠĠĠ Ġval Ġplacement Icon : ĠImageView Ġ= Ġview . findViewById ( R . id . placement _ icon ) Ġas ĠImageView ĊĠĠĠĠĠĠĠ Ġplacement Icon . background Ġ= ĠContext Compat . get Drawable ( context !! , ĠR . drawable . re warded _ icon ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . Ġinitialize Ġthe Ġbuttons Ġand Ġclick Ġlisteners Ġin Ġthis Ġfragment ĊĠĠĠĠ Ġ* Ġ@ param Ġview Ġthe Ġcontainer Ġview Ġfor Ġthis Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġinit Buttons ( view : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠ Ġrequest Button Ġ= Ġview . findViewById ( R . id . text _ progress _ bar ) ĊĠĠĠĠĠĠĠ Ġrequest Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Rew arded ( RE WAR DED _ PLACE MENT _ NAME ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġshow Button Ġ= Ġview . findViewById ( R . id . show _ ad ) ĊĠĠĠĠĠĠĠ Ġshow Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Rew arded ( RE WAR DED _ PLACE MENT _ NAME ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġback Button : ĠImageView Ġ= Ġview . findViewById ( R . id . back _ button ) Ġas ĠImageView ĊĠĠĠĠĠĠĠ Ġback Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity !!. on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclean CallBack s Ġ= Ġview . findViewById ( R . id . clean _ callback _ button ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġclean CallBack s . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclean CallBack s . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOn Screen Callbacks Helper . clear Log ( re cyclerView ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠprogressBar Ġ= Ġview . findViewById ( R . id . progress _ bar ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . ĊĠĠĠĠ Ġ* ĠStarts Ġthe Ġrequest / loading Ġanimation ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġstart Request Animation () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġshow Button . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . ĊĠĠĠĠ Ġ* ĠSto ps Ġthe Ġrequest / loading Ġanimation Ġand Ġenables Ġdestroy ing Ġthe Ġbanner ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġon Ad Available Animation () Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Button . isEnabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġsample Ġmethod . ĊĠĠĠĠ Ġ* ĠRe sets Ġthe ĠUI Ġstate Ġfor Ġthe Ġprogress Ġanimation Ġ/ Ġdestroy Ġbutton ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġreset Animation () Ġ{ ĊĠĠĠĠĠĠĠ ĠprogressBar . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġshow Button . isEnabled Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInv oked Ġwhen Ġthe Ġon - screen Ġlog Ġbecame Ġnon - empty . Ġused Ġto Ġenable / disable Ġthe Ġclean Ġbutton ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon First Log Line () Ġ{ ĊĠĠĠĠĠĠĠ Ġclean CallBack s . isEnabled Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊ Ċ } Ċ