/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġn uh k oca . com Ċ Ġ* Ċ Ġ* Ġ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 . mobile movement . kot lint v ma ze . base . util . keyboard Ċ Ċ import Ġandroid . view . View Tree Observer Ċ Ċ object ĠKeyboard Visibility Detector Ġ{ ĊĊĠĠĠ Ġfun Ġlisten ( view Holder : ĠActivity ViewHolder , Ġlistener : Ġ( Keyboard Visibility Changed ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdetector Ġ= ĠDetector ( view Holder , Ġlistener ) ĊĠĠĠĠĠĠĠ ĠviewHolder . non Resizable Layout . view Tree Observer . add On Pre Draw Listener ( detector ) ĊĠĠĠĠĠĠĠ ĠviewHolder . on Detach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewHolder . non Resizable Layout . view Tree Observer . remove On Pre Draw Listener ( detector ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠDetector ( ĊĠĠĠĠĠĠĠ Ġval ĠviewHolder : ĠActivity ViewHolder , ĊĠĠĠĠĠĠĠ Ġval Ġlistener : Ġ( Keyboard Visibility Changed ) Ġ-> ĠUnit ĊĠĠĠ Ġ) Ġ: ĠView Tree Observer . On Pre Draw Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġprevious Height : ĠInt Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Pre Draw (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdetected Ġ= Ġdetect () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdetected . not () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġdetect (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Height Ġ= ĠviewHolder . resizable Layout . height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( content Height Ġ== Ġprevious Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( previous Height Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstatus Bar Height Ġ= ĠviewHolder . resizable Layout . top ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Keyboard Visible Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Height Ġ< ĠviewHolder . non Resizable Layout . height Ġ- Ġstatus Bar Height ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlistener ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyboard Visibility Changed ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisible Ġ= Ġis Keyboard Visible , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Height Ġ= Ġcontent Height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Height Before Resize Ġ= Ġprevious Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprevious Height Ġ= Ġcontent Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ