Android工具类系列-ScreenUtil
2016-06-23 17:44
513 查看
原文地址:
http://blog.csdn.net/lmj623565791/article/details/38965311
http://blog.csdn.net/lmj623565791/article/details/38965311
package org.yxm.android.utils; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.View; import android.view.WindowManager; /** * Created by yxm on 16-6-23. */ public class ScreenUtil { private ScreenUtil() { throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获得屏幕高度 */ public static int getScreenWidth(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.widthPixels; } /** * 获得屏幕宽度 */ public static int getScreenHeight(Context context) { WindowManager wm = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics outMetrics = new DisplayMetrics(); wm.getDefaultDisplay().getMetrics(outMetrics); return outMetrics.heightPixels; } /** * 获得状态栏的高度 */ public static int getStatusHeight(Context context) { int statusHeight = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int height = Integer.parseInt(clazz.getField("status_bar_height") .get(object).toString()); statusHeight = context.getResources().getDimensionPixelSize(height); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } /** * 获取当前屏幕截图,包含状态栏 */ public static Bitmap snapShotWithStatusBar(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp = null; bp = Bitmap.createBitmap(bmp, 0, 0, width, height); view.destroyDrawingCache(); return bp; } /** * 获取当前屏幕截图,不包含状态栏 */ public static Bitmap snapShotWithoutStatusBar(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; int width = getScreenWidth(activity); int height = getScreenHeight(activity); Bitmap bp = null; bp = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return bp; } }
相关文章推荐
- Android自定义DataTimePicker(日期选择器)
- 安卓学习笔记—LisetView的下拉刷新
- 给 Android 开发者的 RxJava 详解
- android中控件点击两次才响应onclick方法
- Picasso Android图片第三方框架的使用
- 排名前100的Android开源库
- 在Android环境中使用Valgrind工具进行内存错误检测
- Android CardView 开发过程中要注意的细节
- Android热修复实现
- android 上传文件到服务器代码实例
- android 代码混淆
- Android Binder ProcessState & IPCThreadState相关介绍
- Android下EditText 添加字体下划线
- android开源图表库MPAndroidChart
- APK 与 Android Native Service 通信
- android屏幕投影到pc
- Android工具类系列-NetUtil
- Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
- 通过Android Studio查看SDK源码
- Android学习笔记----解决“com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536”问题