.class public Lcom/forum/im/utils/ScreenUtil; .super Ljava/lang/Object; .source "ScreenUtil.java" # static fields .field private static final TITLE_HEIGHT:I .field private static screenHeight:I .field private static screenTotalHeight:I .field private static screenWidth:I .field private static statusBarHeight:I # direct methods .method static constructor ()V .registers 0 return-void .end method .method public constructor ()V .registers 1 .line 18 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method .method public static dip2px(Landroid/content/Context;F)I .registers 2 .line 31 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 invoke-virtual {p0}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; move-result-object p0 iget p0, p0, Landroid/util/DisplayMetrics;->density:F mul-float/2addr p1, p0 const/high16 p0, 0x3f000000 # 0.5f add-float/2addr p1, p0 float-to-int p0, p1 return p0 .end method .method public static getBottomStatusHeight(Landroid/content/Context;)I .registers 2 .line 144 invoke-static {p0}, Lcom/forum/im/utils/ScreenUtil;->getDpi(Landroid/content/Context;)I move-result v0 .line 146 invoke-static {p0}, Lcom/forum/im/utils/ScreenUtil;->getScreenHeight(Landroid/content/Context;)I move-result p0 sub-int/2addr v0, p0 return v0 .end method .method public static getDpi(Landroid/content/Context;)I .registers 7 .line 121 const-string v0, "window" invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; .line 122 invoke-interface {p0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p0 .line 123 new-instance v0, Landroid/util/DisplayMetrics; invoke-direct {v0}, Landroid/util/DisplayMetrics;->()V const/4 v1, 0x0 .line 127 :try_start_12 const-string v2, "android.view.Display" invoke-static {v2}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v2 .line 129 const-string v3, "getRealMetrics" const/4 v4, 0x1 new-array v4, v4, [Ljava/lang/Class; const-class v5, Landroid/util/DisplayMetrics; aput-object v5, v4, v1 invoke-virtual {v2, v3, v4}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; move-result-object v2 .line 130 filled-new-array {v0}, [Ljava/lang/Object; move-result-object v3 invoke-virtual {v2, p0, v3}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; .line 131 iget v1, v0, Landroid/util/DisplayMetrics;->heightPixels:I :try_end_2e .catch Ljava/lang/Exception; {:try_start_12 .. :try_end_2e} :catch_2f goto :goto_33 :catch_2f move-exception p0 .line 133 invoke-virtual {p0}, Ljava/lang/Exception;->printStackTrace()V :goto_33 return v1 .end method .method private static getNavBarOverride()Ljava/lang/String; .registers 7 const/4 v0, 0x0 .line 230 :try_start_1 const-string v1, "android.os.SystemProperties" invoke-static {v1}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v1 .line 231 const-string v2, "get" const/4 v3, 0x1 new-array v4, v3, [Ljava/lang/Class; const-class v5, Ljava/lang/String; const/4 v6, 0x0 aput-object v5, v4, v6 invoke-virtual {v1, v2, v4}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; move-result-object v1 .line 232 invoke-virtual {v1, v3}, Ljava/lang/reflect/Method;->setAccessible(Z)V .line 233 const-string v2, "qemu.hw.mainkeys" filled-new-array {v2}, [Ljava/lang/Object; move-result-object v2 invoke-virtual {v1, v0, v2}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 check-cast v1, Ljava/lang/String; :try_end_24 .catchall {:try_start_1 .. :try_end_24} :catchall_25 move-object v0, v1 :catchall_25 return-object v0 .end method .method public static getNavigationBarHeight(Landroid/content/Context;)I .registers 4 .line 186 invoke-static {p0}, Lcom/forum/im/utils/ScreenUtil;->hasNavBar(Landroid/content/Context;)Z move-result v0 if-eqz v0, :cond_1b .line 187 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 .line 188 const-string v0, "dimen" const-string v1, "android" const-string v2, "navigation_bar_height" invoke-virtual {p0, v2, v0, v1}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I move-result v0 if-lez v0, :cond_1b .line 190 invoke-virtual {p0, v0}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I move-result p0 goto :goto_1c :cond_1b const/4 p0, 0x0 :goto_1c return p0 .end method .method public static getScreenDensity(Landroid/content/Context;)F .registers 2 .line 80 const-string v0, "window" invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; .line 81 new-instance v0, Landroid/util/DisplayMetrics; invoke-direct {v0}, Landroid/util/DisplayMetrics;->()V .line 82 invoke-interface {p0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p0 invoke-virtual {p0, v0}, Landroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V .line 83 iget p0, v0, Landroid/util/DisplayMetrics;->density:F return p0 .end method .method public static getScreenDensityDpi(Landroid/content/Context;)F .registers 2 .line 87 const-string v0, "window" invoke-virtual {p0, v0}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; .line 88 new-instance v0, Landroid/util/DisplayMetrics; invoke-direct {v0}, Landroid/util/DisplayMetrics;->()V .line 89 invoke-interface {p0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p0 invoke-virtual {p0, v0}, Landroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V .line 90 iget p0, v0, Landroid/util/DisplayMetrics;->densityDpi:I int-to-float p0, p0 return p0 .end method .method public static getScreenHeight(Landroid/content/Context;)I .registers 4 .line 58 instance-of v0, p0, Landroid/app/Activity; if-eqz v0, :cond_20 .line 59 move-object v0, p0 check-cast v0, Landroid/app/Activity; invoke-virtual {v0}, Landroid/app/Activity;->getWindow()Landroid/view/Window; move-result-object v0 const v1, 0x1020002 invoke-virtual {v0, v1}, Landroid/view/Window;->findViewById(I)Landroid/view/View; move-result-object v0 invoke-virtual {v0}, Landroid/view/View;->getTop()I move-result v0 if-nez v0, :cond_21 const/4 v0, 0x0 .line 61 invoke-static {p0}, Lcom/forum/im/utils/ScreenUtil;->getScreenDensity(Landroid/content/Context;)F move-result v1 mul-float/2addr v1, v0 float-to-int v0, v1 goto :goto_21 :cond_20 const/4 v0, 0x0 .line 64 :cond_21 :goto_21 new-instance v1, Landroid/util/DisplayMetrics; invoke-direct {v1}, Landroid/util/DisplayMetrics;->()V .line 65 const-string v2, "window" invoke-virtual {p0, v2}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; .line 66 invoke-interface {p0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p0 invoke-virtual {p0, v1}, Landroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V .line 67 iget p0, v1, Landroid/util/DisplayMetrics;->heightPixels:I sub-int/2addr p0, v0 sput p0, Lcom/forum/im/utils/ScreenUtil;->screenHeight:I return p0 .end method .method public static getScreenTotalHeight(Landroid/content/Context;)I .registers 2 .line 72 sget v0, Lcom/forum/im/utils/ScreenUtil;->screenTotalHeight:I if-eqz v0, :cond_5 return v0 .line 75 :cond_5 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 invoke-virtual {p0}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; move-result-object p0 .line 76 iget p0, p0, Landroid/util/DisplayMetrics;->heightPixels:I sput p0, Lcom/forum/im/utils/ScreenUtil;->screenTotalHeight:I return p0 .end method .method public static getScreenWidth(Landroid/content/Context;)I .registers 3 .line 46 new-instance v0, Landroid/util/DisplayMetrics; invoke-direct {v0}, Landroid/util/DisplayMetrics;->()V .line 47 const-string v1, "window" invoke-virtual {p0, v1}, Landroid/content/Context;->getSystemService(Ljava/lang/String;)Ljava/lang/Object; move-result-object p0 check-cast p0, Landroid/view/WindowManager; .line 48 invoke-interface {p0}, Landroid/view/WindowManager;->getDefaultDisplay()Landroid/view/Display; move-result-object p0 invoke-virtual {p0, v0}, Landroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V .line 49 iget p0, v0, Landroid/util/DisplayMetrics;->widthPixels:I sput p0, Lcom/forum/im/utils/ScreenUtil;->screenWidth:I return p0 .end method .method public static getStatusBarHeight(Landroid/content/Context;)I .registers 4 .line 93 sget v0, Lcom/forum/im/utils/ScreenUtil;->statusBarHeight:I if-eqz v0, :cond_5 return v0 .line 101 :cond_5 :try_start_5 const-string v0, "com.android.internal.R$dimen" invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v0 .line 102 invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object; move-result-object v1 .line 103 const-string v2, "status_bar_height" invoke-virtual {v0, v2}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field; move-result-object v0 .line 104 invoke-virtual {v0, v1}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object v0 invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I move-result v0 .line 105 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 invoke-virtual {p0, v0}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I move-result p0 sput p0, Lcom/forum/im/utils/ScreenUtil;->statusBarHeight:I :try_end_2b .catch Ljava/lang/Exception; {:try_start_5 .. :try_end_2b} :catch_2c goto :goto_30 :catch_2c move-exception p0 .line 107 invoke-virtual {p0}, Ljava/lang/Exception;->printStackTrace()V .line 109 :goto_30 sget p0, Lcom/forum/im/utils/ScreenUtil;->statusBarHeight:I return p0 .end method .method public static getStatusHeight(Landroid/content/Context;)I .registers 4 .line 171 :try_start_0 const-string v0, "com.android.internal.R$dimen" invoke-static {v0}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class; move-result-object v0 .line 172 invoke-virtual {v0}, Ljava/lang/Class;->newInstance()Ljava/lang/Object; move-result-object v1 .line 173 const-string v2, "status_bar_height" invoke-virtual {v0, v2}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field; move-result-object v0 .line 174 invoke-virtual {v0, v1}, Ljava/lang/reflect/Field;->get(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v0 invoke-virtual {v0}, Ljava/lang/Object;->toString()Ljava/lang/String; move-result-object v0 .line 173 invoke-static {v0}, Ljava/lang/Integer;->parseInt(Ljava/lang/String;)I move-result v0 .line 175 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 invoke-virtual {p0, v0}, Landroid/content/res/Resources;->getDimensionPixelSize(I)I move-result p0 :try_end_24 .catch Ljava/lang/Exception; {:try_start_0 .. :try_end_24} :catch_25 goto :goto_2a :catch_25 move-exception p0 .line 178 invoke-virtual {p0}, Ljava/lang/Exception;->printStackTrace()V const/4 p0, -0x1 :goto_2a return p0 .end method .method public static getTitleHeight(Landroid/app/Activity;)I .registers 2 .line 156 invoke-virtual {p0}, Landroid/app/Activity;->getWindow()Landroid/view/Window; move-result-object p0 const v0, 0x1020002 invoke-virtual {p0, v0}, Landroid/view/Window;->findViewById(I)Landroid/view/View; move-result-object p0 invoke-virtual {p0}, Landroid/view/View;->getTop()I move-result p0 return p0 .end method .method public static hasNavBar(Landroid/content/Context;)Z .registers 5 .line 204 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object v0 .line 205 const-string v1, "bool" const-string v2, "android" const-string v3, "config_showNavigationBar" invoke-virtual {v0, v3, v1, v2}, Landroid/content/res/Resources;->getIdentifier(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I move-result v1 const/4 v2, 0x1 if-eqz v1, :cond_2e .line 207 invoke-virtual {v0, v1}, Landroid/content/res/Resources;->getBoolean(I)Z move-result p0 .line 209 invoke-static {}, Lcom/forum/im/utils/ScreenUtil;->getNavBarOverride()Ljava/lang/String; move-result-object v0 .line 210 const-string v1, "1" invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-eqz v1, :cond_23 const/4 v2, 0x0 goto :goto_2d .line 212 :cond_23 const-string v1, "0" invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_2c goto :goto_2d :cond_2c move v2, p0 :goto_2d return v2 .line 217 :cond_2e invoke-static {p0}, Landroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration; move-result-object p0 invoke-virtual {p0}, Landroid/view/ViewConfiguration;->hasPermanentMenuKey()Z move-result p0 xor-int/2addr p0, v2 return p0 .end method .method public static isTablet(Landroid/content/Context;)Z .registers 2 .line 112 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 invoke-virtual {p0}, Landroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration; move-result-object p0 iget p0, p0, Landroid/content/res/Configuration;->screenLayout:I and-int/lit8 p0, p0, 0xf const/4 v0, 0x3 if-lt p0, v0, :cond_11 const/4 p0, 0x1 goto :goto_12 :cond_11 const/4 p0, 0x0 :goto_12 return p0 .end method .method public static px2dip(Landroid/content/Context;F)I .registers 2 .line 38 invoke-virtual {p0}, Landroid/content/Context;->getResources()Landroid/content/res/Resources; move-result-object p0 invoke-virtual {p0}, Landroid/content/res/Resources;->getDisplayMetrics()Landroid/util/DisplayMetrics; move-result-object p0 iget p0, p0, Landroid/util/DisplayMetrics;->density:F div-float/2addr p1, p0 const/high16 p0, 0x3f000000 # 0.5f add-float/2addr p1, p0 float-to-int p0, p1 return p0 .end method