ScreenUtil--可以获取view宽度,屏幕宽度,dp转px等
来源:互联网 发布:windows 7 beta 编辑:程序博客网 时间:2024/06/06 03:47
public class ScreenUtil { private int appHeight = 0; private int appWidth = 0; private static int StatusBarHeight; private Context context; private static ScreenUtil screenUtil; public static ScreenUtil getInstance() { return screenUtil; } public static void init(Context context) { screenUtil = new ScreenUtil(context); } public ScreenUtil(Context context) { this.context = context; DisplayMetrics dm = context.getResources().getDisplayMetrics(); int appHeight = dm.heightPixels; int appWidth = dm.widthPixels; if(appWidth > appHeight) { this.appWidth = appHeight; this.appHeight = appWidth; } else { this.appWidth = appWidth; this.appHeight = appHeight; } } public int getAppHeight() { return this.appHeight; } public int getAppWidth() { return this.appWidth; } public int px2dip(float pxValue) { float scale = this.context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5F); } public int dip2px(float dipValue) { float scale = this.context.getResources().getDisplayMetrics().density; return (int)(dipValue * scale + 0.5F); } public int px2sp(float pxValue) { float fontScale = this.context.getResources().getDisplayMetrics().scaledDensity; return (int)(pxValue / fontScale + 0.5F); } public int sp2px(float spValue) { float fontScale = this.context.getResources().getDisplayMetrics().scaledDensity; return (int)(spValue * fontScale + 0.5F); } public static int getMeasureWidth(View view) { view.measure(MeasureSpec.makeMeasureSpec(0, 0), MeasureSpec.makeMeasureSpec(0, 0)); return view.getMeasuredWidth(); } public static int getMeasureHeight(View view) { view.measure(MeasureSpec.makeMeasureSpec(0, 0), MeasureSpec.makeMeasureSpec(0, 0)); return view.getMeasuredHeight(); } public static void setListViewHeightBasedOnMaxHeght(ListView listView, int maxHeight) { ListAdapter listAdapter = listView.getAdapter(); if(listAdapter != null) { int totalHeight = 0; int itemCount = 0; for(int params = listAdapter.getCount() - 1; params >= 0; --params) { ++itemCount; View listItem = listAdapter.getView(params, (View)null, listView); listItem.measure(0, 0); if(totalHeight + listItem.getMeasuredHeight() > maxHeight) { break; } totalHeight += listItem.getMeasuredHeight(); } if(itemCount < listAdapter.getCount()) { LayoutParams var7 = listView.getLayoutParams(); var7.height = totalHeight + listView.getDividerHeight() * (itemCount - 1); listView.setLayoutParams(var7); } } } public static int getSysScreenBrightness(Context context) { int screenBrightness = 255; try { screenBrightness = System.getInt(context.getContentResolver(), "screen_brightness"); } catch (Exception var3) { var3.printStackTrace(); } return screenBrightness; } public static void setSysScreenBrightness(Context context, int brightness) { try { ContentResolver e = context.getContentResolver(); Uri uri = System.getUriFor("screen_brightness"); System.putInt(e, "screen_brightness", brightness); e.notifyChange(uri, (ContentObserver)null); } catch (Exception var4) { var4.printStackTrace(); } } public static int getScreenBrightnessMode(Context context) { int screenMode = 0; try { screenMode = System.getInt(context.getContentResolver(), "screen_brightness_mode"); } catch (Exception var3) { ; } return screenMode; } public static boolean isAutoBrightnessMode(Context context) { return getScreenBrightnessMode(context) == 1; } public static void stopAutoBrightness(Context context) { System.putInt(context.getContentResolver(), "screen_brightness_mode", 0); } public static int sp2px(Context context, float spValue) { float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int)(spValue * fontScale + 0.5F); } public static int px2sp(Context context, float pxValue) { float scaled = context.getResources().getDisplayMetrics().scaledDensity; return (int)(pxValue / scaled + 0.5F); } public static final int getHeightInPx(Context context) { int height = context.getResources().getDisplayMetrics().heightPixels; return height; } public static final int getWidthInPx(Context context) { int width = context.getResources().getDisplayMetrics().widthPixels; return width; } public static int dip2px(Context context, float dpValue) { float scale = context.getResources().getDisplayMetrics().density; return (int)(dpValue * scale + 0.5F); } public static int px2dip(Context context, float pxValue) { float scale = context.getResources().getDisplayMetrics().density; return (int)(pxValue / scale + 0.5F); } public static int getNavigationBarHeight(Context context) { int result = 0; if(hasNavBar(context)) { Resources res = context.getResources(); int resourceId = res.getIdentifier("navigation_bar_height", "dimen", "android"); if(resourceId > 0) { result = res.getDimensionPixelSize(resourceId); } } return result; } private static boolean hasNavBar(Context context) { Resources res = context.getResources(); int resourceId = res.getIdentifier("config_showNavigationBar", "bool", "android"); if(resourceId != 0) { boolean hasNav = res.getBoolean(resourceId); String sNavBarOverride = getNavBarOverride(); if("1".equals(sNavBarOverride)) { hasNav = false; } else if("0".equals(sNavBarOverride)) { hasNav = true; } return hasNav; } else { return !ViewConfiguration.get(context).hasPermanentMenuKey(); } } private static String getNavBarOverride() { String sNavBarOverride = null; if(VERSION.SDK_INT >= 19) { try { Class c = Class.forName("android.os.SystemProperties"); Method m = c.getDeclaredMethod("get", new Class[]{String.class}); m.setAccessible(true); sNavBarOverride = (String)m.invoke((Object)null, new Object[]{"qemu.hw.mainkeys"}); } catch (Throwable var3) { ; } } return sNavBarOverride; } public static boolean isPortrait(Context context) { return context.getResources().getConfiguration().orientation == 1; } public static boolean isLandscape(Context context) { return context == null?false:context.getResources().getConfiguration().orientation == 2; } public static int getStatusBarHeight(Context context) { if(StatusBarHeight != 0) { return StatusBarHeight; } else { Class c = null; Object obj = null; Field field = null; boolean x = false; int sbar = 0; try { c = Class.forName("com.android.internal.R$dimen"); obj = c.newInstance(); field = c.getField("status_bar_height"); int x1 = Integer.parseInt(field.get(obj).toString()); sbar = context.getResources().getDimensionPixelSize(x1); } catch (Exception var7) { var7.printStackTrace(); } StatusBarHeight = sbar; return StatusBarHeight; } } public boolean isScreenOriatationPortrait() { return this.context.getResources().getConfiguration().orientation == 1; }}
阅读全文
0 0
- ScreenUtil--可以获取view宽度,屏幕宽度,dp转px等
- Android 获取屏幕宽度,dp,sp,px转换方法
- Android中dip(dp)与px之间单位转换 dip2px dp转px 无context算法(以及获取获取屏幕宽度和高度)
- Android 获取屏幕高度和宽度 ,dp与px的转换
- 常见工具:dp与px互转,屏幕宽度与高度获取
- 关于android中屏幕的宽度/高度/屏幕密度(ppi)的获取以及dp与px之间的转换
- Android 工具类(将 dp 转成 px 获取屏幕的高度/宽度 判断android SDK 版本是否大于等于5.0)
- js获取屏幕的信息,包括屏幕宽度等
- js获取屏幕宽度
- 获取屏幕宽度
- js获取屏幕宽度
- 获取屏幕高度、宽度
- 获取屏幕宽度代码
- 获取屏幕宽度问题
- 获取屏幕宽度
- 获取屏幕宽度
- iOS获取屏幕宽度
- 获取android屏幕宽度
- 算法的时间复杂度和空间复杂度-总结
- web 微信与基于node的微信机器人实现
- openGL之glsl入门7上--添加鱼眼及全景球面纹理
- SQL基础语句汇总
- Android仿支付宝订单确认和支付
- ScreenUtil--可以获取view宽度,屏幕宽度,dp转px等
- shell编程基础简介
- 安卓日志架构(一)
- 函数调用过程——栈帧
- Linux 系统启动过程
- springmvc上传头像 ajax上传文件回显
- μTorrent下载完后的文件的移动、改名和系统重装等问题的解决
- Java 执行shell 脚本
- VICTOR 数字万用表 VC890D