package Ġcom . hack n ife . app float . utils Ċ Ċ import Ġandroid . app . Service Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . os . Build Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . util . Display Metrics Ċ import Ġandroid . util . Log Ċ import Ġandroid . view .* Ċ import Ġcom . hack n ife . app float . permission . rom . Rom Utils Ċ Ċ /** Ċ Ġ* Ġ@ author : Ġli u zh en f eng Ċ Ġ* Ġ@ function : Ġ å±ı å¹ķ æĺ¾ç¤º çĽ¸åħ³ å·¥åħ· ç±» Ċ Ġ* Ġ@ date : Ġ 2 0 1 9 - 0 5 - 2 3 ĠĠ 1 5 : 2 3 Ċ Ġ*/ Ċ object ĠDisplay Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Display Utils -- ->" ĊĊĠĠĠ Ġfun Ġpx 2 dp ( context : ĠContext , Ġpx Val : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( px Val Ġ/ Ġdensity Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdp 2 px ( context : ĠContext , Ġdp Val : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdensity Ġ= Ġcontext . resources . display Metrics . density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( dp Val Ġ* Ġdensity Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpx 2 sp ( context : ĠContext , Ġpx Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Scale Ġ= Ġcontext . resources . display Metrics . scaled Density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( px Value Ġ/ Ġfont Scale Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsp 2 px ( context : ĠContext , Ġsp Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfont Scale Ġ= Ġcontext . resources . display Metrics . scaled Density ĊĠĠĠĠĠĠĠ Ġreturn Ġ( sp Value Ġ* Ġfont Scale Ġ+ Ġ 0 . 5 f ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å±ı å¹ķ å®½åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Screen Width ( context : ĠContext ) Ġ= Ġcontext . resources . display Metrics . width Pixels ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å±ı å¹ķ é«ĺåº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Screen Height ( context : ĠContext ) Ġ= Ġcontext . resources . display Metrics . height Pixels ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å±ı å¹ķ å®½ é«ĺ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Screen Size ( context : ĠContext ) Ġ= ĠPoint (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Manager : ĠWindow Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Service . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Ġ= Ġwindow Manager . default Display ĊĠĠĠĠĠĠĠ Ġdisplay . get Real Size ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ çĬ¶æĢģ æłı é«ĺåº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget StatusBar Height ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠ Ġval Ġresource Id Ġ= Ġresources . getIdentifier (" status _ bar _ height ", Ġ" dim en ", Ġ" android ") ĊĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ> Ġ 0 ) Ġresult Ġ= Ġresources . get Dimension Pixel Size ( resourceId ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstatus Bar Height ( view : ĠView ) Ġ= Ġget StatusBar Height ( view . context . application Context ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å¯¼èĪª æłı çľŁ å®ŀ çļĦ é«ĺåº¦ ï¼Ī åı¯èĥ½ æľª æĺ¾ç¤º ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget NavigationBar Height ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġresources Ġ= Ġcontext . resources ĊĠĠĠĠĠĠĠ Ġval Ġresource Id Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getIdentifier (" navigation _ bar _ height ", Ġ" dim en ", Ġ" android ") ĊĠĠĠĠĠĠĠ Ġif Ġ( resourceId Ġ> Ġ 0 ) Ġresult Ġ= Ġresources . get Dimension Pixel Size ( resourceId ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" get NavigationBar Height Ġ= Ġ$ result ") ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ å¯¼èĪª æłı å½ĵåīį çļĦ é«ĺåº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget NavigationBar Current Height ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( has NavigationBar ( context )) Ġget NavigationBar Height ( context ) Ġelse Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠåĪ¤æĸŃ èĻļæĭŁ å¯¼èĪª æłı æĺ¯åĲ¦ æĺ¾ç¤º ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġä¸Ĭ ä¸ĭ æĸĩ å¯¹è±¡ ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue ( æĺ¾ç¤º èĻļæĭŁ å¯¼èĪª æłı )ï¼Į false ( ä¸į æĺ¾ç¤º æĪĸ ä¸į æĶ¯æĮģ èĻļæĭŁ å¯¼èĪª æłı ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas NavigationBar ( context : ĠContext ) Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġget NavigationBar Height ( context ) Ġ== Ġ 0 Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ ĠR om Utils . check Is Hu awei Rom () Ġ&& Ġis H ua Wei Hide Nav ( context ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ ĠR om Utils . check Is Mi ui Rom () Ġ&& Ġis Mi ui FullScreen ( context ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ ĠR om Utils . check Is V ivo Rom () Ġ&& Ġis V ivo FullScreen ( context ) Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġis Has NavigationBar ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä¸į åĮħåĲ« å¯¼èĪª æłı çļĦ æľīæķĪ é«ĺåº¦ ï¼Ī æ²¡æľī å¯¼èĪª æłı ï¼Į æĪĸèĢħ å·² åİ» éĻ¤ å¯¼èĪª æłı çļĦ é«ĺåº¦ ï¼ī ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrejected Nav Height ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= Ġget Screen Size ( context ) ĊĠĠĠĠĠĠĠ Ġif Ġ( point . x Ġ> Ġpoint . y ) Ġreturn Ġpoint . y ĊĠĠĠĠĠĠĠ Ġreturn Ġpoint . y Ġ- Ġget NavigationBar Current Height ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åįİ ä¸º æīĭæľº æĺ¯åĲ¦ éļĲèĹı äºĨ èĻļæĭŁ å¯¼èĪª æłı ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġè¡¨ç¤º éļĲèĹı äºĨ ï¼Į false Ġè¡¨ç¤º æľª éļĲèĹı ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis H ua Wei Hide Nav ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ< ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . System . getInt ( context . content Resolver , Ġ" navigation bar _ is _ min ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSettings . Global . getInt ( context . content Resolver , Ġ" navigation bar _ is _ min ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġ!= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġå°ı ç±³ æīĭæľº æĺ¯åĲ¦ å¼ĢåĲ¯ æīĭ åĬ¿ æĵįä½ľ ĊĠĠĠĠ Ġ* Ġ@ return Ġfalse Ġè¡¨ç¤º ä½¿çĶ¨ çļĦæĺ¯ èĻļæĭŁ å¯¼èĪª éĶ® ( NavigationBar )ï¼Į Ġtrue Ġè¡¨ç¤º ä½¿çĶ¨ çļĦæĺ¯ æīĭ åĬ¿ ï¼Į Ġé»ĺè®¤ æĺ¯ false ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Mi ui FullScreen ( context : ĠContext ) Ġ= ĊĠĠĠĠĠĠĠ ĠSettings . Global . getInt ( context . content Resolver , Ġ" force _ f sg _ nav _ bar ", Ġ 0 ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠV ivo æīĭæľº æĺ¯åĲ¦ å¼ĢåĲ¯ æīĭ åĬ¿ æĵįä½ľ ĊĠĠĠĠ Ġ* Ġ@ return Ġfalse Ġè¡¨ç¤º ä½¿çĶ¨ çļĦæĺ¯ èĻļæĭŁ å¯¼èĪª éĶ® ( NavigationBar )ï¼Į Ġtrue Ġè¡¨ç¤º ä½¿çĶ¨ çļĦæĺ¯ æīĭ åĬ¿ ï¼Į Ġé»ĺè®¤ æĺ¯ false ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis V ivo FullScreen ( context : ĠContext ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ ĠSettings . Secure . getInt ( context . content Resolver , Ġ" navigation _ gesture _ on ", Ġ 0 ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ åħ¶ä»ĸ æīĭæľº æł¹æį® å±ı å¹ķ çľŁ å®ŀ é«ĺåº¦ ä¸İ æĺ¾ç¤º é«ĺåº¦ æĺ¯åĲ¦ çĽ¸åĲĮ æĿ¥ åĪ¤æĸŃ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Has NavigationBar ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwindow Manager : ĠWindow Manager Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getSystem Service ( Service . WINDOW _ SERVICE ) Ġas ĠWindow Manager ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġwindow Manager . default Display ĊĊĠĠĠĠĠĠĠ Ġval Ġreal Display Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . J EL LY _ BE AN _ MR 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd . get Real Metrics ( real Display Metrics ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġreal Height Ġ= Ġreal Display Metrics . height Pixels ĊĠĠĠĠĠĠĠ Ġval Ġreal Width Ġ= Ġreal Display Metrics . width Pixels ĊĊĠĠĠĠĠĠĠ Ġval Ġdisplay Metrics Ġ= ĠDisplay Metrics () ĊĠĠĠĠĠĠĠ Ġd . get Metrics ( display Metrics ) ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Height Ġ= Ġdisplay Metrics . height Pixels ĊĠĠĠĠĠĠĠ Ġval Ġdisplay Width Ġ= Ġdisplay Metrics . width Pixels ĊĊĠĠĠĠĠĠĠ Ġ// Ġ éĥ¨åĪĨ æĹł èī¯ åİĤ åķĨ çļĦ æīĭ åĬ¿ æĵįä½ľ ï¼Į æĺ¾ç¤º é«ĺåº¦ Ġ+ Ġ å¯¼èĪª æłı é«ĺåº¦ ï¼Į ç« Ł çĦ¶ å¤§äºİ çī© çĲĨ é«ĺåº¦ ï¼Į å¯¹äºİ è¿Ļç§į æĥħåĨµ ï¼Į çĽ´æİ¥ é»ĺè®¤ æľª åĲ¯çĶ¨ å¯¼èĪª æłı ĊĠĠĠĠĠĠĠ Ġif Ġ( display Height Ġ+ Ġget NavigationBar Height ( context ) Ġ> Ġreal Height ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġreturn Ġreal Width Ġ- Ġdisplay Width Ġ> Ġ 0 Ġ|| Ġreal Height Ġ- Ġdisplay Height Ġ> Ġ 0 ĊĠĠĠ Ġ} Ċ Ċ }