Android常用工具方法

tech2022-09-22  87

Android常用工具方法

本文意在整理安卓开发中常用的方法,处理一些需要特殊处理的地方

获取屏幕尺寸

屏幕尺寸DisplayMetrics 其中包含了很多信息

DisplayMetrics { //宽度 int widthPixels //高度 int heightPixels //密度 float density //密度dpi int densityDpi //缩放密度 float scaledDensity //宽度dpi int xdpi //高度dpi int ydpi } public static DisplayMetrics (Context context) { return context.getResources().getDisplayMetrics(); }

获取某个属性资源文件id

/** * @param sourceName 资源定义的名称 * @param sourceType 资源定义的类型 dimen,color,int,String,drawable... * @param packageBelong 资源所在的包 一般"android"表示android 系统的,另外就是应用的 当前应用的包名 */ public static int getIdentifier(Context context,String sourceName,String sourceType, String packageBelong) { return context.getResources().getIdentifier(sourceName, sourceType, packageBelong); }

获取状态栏高度

public static int getStatusBarHeight(Context context) { return context.getResources().getDimensionPixelSize(getIdentifier(context, "status_bar_height", "dimen", "android")); }

获取底部导航栏高度

public static int getNavigationBarHeight(Context context) { return context.getResources().getDimensionPixelSize(getIdentifier(context, "navigation_bar_height", "dimen", "android")); }

判断是否有导航栏

/** * 通过获取android系统配置,确保准确获取是否有导航栏 * @param context * @return */ public boolean checkDeviceHasNavigationBar(Context context) { boolean hasNavigationBar = false; Resources rs = context.getResources(); int id = rs.getIdentifier("config_showNavigationBar", "bool", "android"); if (id > 0) { hasNavigationBar = rs.getBoolean(id); } try { Class systemPropertiesClass = Class.forName("android.os.SystemProperties"); Method m = systemPropertiesClass.getMethod("get", String.class); String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys"); if ("1".equals(navBarOverride)) { hasNavigationBar = false; } else if ("0".equals(navBarOverride)) { hasNavigationBar = true; } } catch (Exception e) { } return hasNavigationBar; }
最新回复(0)