android获取屏幕宽高工具类
2015-10-21 14:30
344 查看
import java.lang.reflect.Field; import android.app.Activity; import android.content.Context; import android.graphics.Point; import android.util.DisplayMetrics; import android.view.Display; import android.view.Window; import android.view.WindowManager; /** * 获取屏幕宽高工具类 * Created by Administrator on 2015/10/21 0021. */ public class ScreenUtils { /** * 用于获取状态栏的高度。 * * @return 返回状态栏高度的像素值。 */ public static int getStatusBarHeight(Activity activity) { try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object obj = c.newInstance(); Field field = c.getField("status_bar_height"); int x = Integer.parseInt(field.get(obj).toString()); return activity.getResources().getDimensionPixelSize(x); } catch (Exception e) { //LogHelper.e("Exception", "*****EXCEPTION*****\n", e); } return 0; } /** * 用于获取状态栏的高度。 使用Resource对象获取(推荐这种方式) * * @return 返回状态栏高度的像素值。 */ public static int getStatusBarHeight(Context context) { int result = 0; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = context.getResources().getDimensionPixelSize(resourceId); } return result; } /** * 获取标题栏高度 * * @param activity * @return */ public static int getTitleBarHeight(Activity activity) { int contentTop = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); return contentTop - getStatusBarHeight(activity); } /** * 在Activity中获取屏幕的高度和宽度 * * @param activity 在真机中,有时候会发现得到的尺寸不是很准确,需要在AndroidManifest中添加如下配置: * <supports-screens android:smallScreens="true" * android:normalScreens="true" android:largeScreens="true" * android:resizeable="true" android:anyDensity="true" /> */ public static int[] getScreenSize(Activity activity) { Display display = activity.getWindowManager().getDefaultDisplay(); Point point = new Point(); display.getSize(point); return new int[] { point.x, point.y }; } /** * 在非Activity中,通常会在Custom View时 * <p/> * 目前不推荐使用(3.2及以下) * * @param context 在真机中,有时候会发现得到的尺寸不是很准确,需要在AndroidManifest中添加如下配置: * <supports-screens android:smallScreens="true" * android:normalScreens="true" android:largeScreens="true" * android:resizeable="true" android:anyDensity="true" /> */ public static int[] getScreenSize(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(dm); return new int[] { dm.widthPixels, dm.heightPixels }; } }
相关文章推荐
- Android中Matrix用法实例分析
- Android drawText获取text宽度的三种方式
- 背光亮度调节流程
- Android_07_自定义广播
- Android数据库高手秘籍(一)——SQLite命令
- Android复习随笔之SharedPreferences
- Android_07_监控应用的状态
- android内存优化
- android service 详解
- Android_07_开机自启动
- Service和IntentService的区别
- 安卓在AndroidManifest.xml文件中设置Android程序的启动界面方法
- android下载apk 断点续传
- Android 秒杀倒计时 解决listview上下滑动计时改变问题
- android自定义控件之禁止ListView滚动
- 视频框架 Vitamio 使用教程+部分心得 (二)第一个视频demo
- 如何在onCreate中测量View的实际宽高
- android正则表达式工具类
- android学习路线:如何成长为高级工程师
- Android_07_监控SD卡的状态