package Ġco . hello code . micro . utils Ċ Ċ import Ġandroid . support . design . widget . AppBar Layout Ċ import Ġandroid . support . design . widget . Floating ActionButton Ċ import Ġandroid . support . design . widget . Coordinator Layout Ċ import Ġandroid . support . v 7 . widget . Toolbar Ċ import Ġco . hello code . micro . R ĊĊ Ċ class ĠF ab Offset ter ( private Ġval Ġparent : ĠCoord inator Layout , Ġprivate Ġval Ġfab : ĠFloating ActionButton ) Ġ: ĠApp Bar Layout . On Offset Changed Listener Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġon Offset Changed ( app Bar Layout : ĠApp Bar Layout , Ġvertical Offset : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġfab Ġshould Ġscroll Ġout Ġdown Ġin Ġsync Ġwith Ġthe Ġapp Bar Layout Ġscrolling Ġout Ġup . ĊĠĠĠĠĠĠĠ Ġ// Ġlet 's Ġsee Ġhow Ġfar Ġalong Ġthe Ġway Ġthe Ġapp Bar Layout Ġis ĊĠĠĠĠĠĠĠ Ġ// Ġ( if Ġdisplacement Fraction Ġ== Ġ 0 . 0 f Ġthen Ġno Ġdisplacement , Ġapp Bar Ġis Ġfully Ġexpanded ; ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġif Ġdisplacement Fraction Ġ== Ġ 1 . 0 f Ġthen Ġfull Ġdisplacement , Ġapp Bar Ġis Ġtotally Ġcollapsed ) ĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Height Ġ= Ġapp Bar Layout . findViewById < Toolbar >( R . id . toolbar ). height ĊĠĠĠĠĠĠĠ Ġval Ġdisplacement Fraction Ġ= Ġ- vertical Offset Ġ/ Ġtoolbar Height . toFloat () ĊĊĠĠĠĠĠĠĠ Ġval Ġdiff Ġ= Ġparent . height Ġ- Ġfab . top ĊĠĠĠĠĠĠĠ Ġfab . translation Y Ġ= Ġdiff Ġ* Ġdisplacement Fraction ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġother . java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġval Ġthat Ġ= Ġother Ġas ĠF ab Offset ter ? ĊĠĠĠĠĠĠĠ Ġreturn Ġparent Ġ== Ġthat !!. parent Ġ&& Ġfab Ġ== Ġthat . fab ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġparent . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġfab . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} Ċ }