有关Android屏幕的工具类 → AppScreenMgr
来源:互联网 发布:nginx readresponse 编辑:程序博客网 时间:2024/06/05 03:04
package com.jingewenku.abrahamcaijin.commonutil;
import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.Display; import android.view.View; import android.view.WindowManager; import java.lang.reflect.Method; /** * 主要功能:有关Android屏幕的工具类 * @Prject: CommonUtilLibrary * @Package: com.jingewenku.abrahamcaijin.commonutil * @author: AbrahamCaiJin * @date: 2017年05月04日 14:13 * @Copyright: 个人版权所有 * @Company: * @version: 1.0.0 */ public class AppScreenMgr { /** * Get the width of the screen. *获得屏幕宽度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the width of the screen. */ public static int getScreenWidth(Context context) { WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(metrics); return metrics.widthPixels; } /** * Get the height of the screen. *获得屏幕高度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the height of the screen. */ public static int getScreenHeight(Context context) { WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(metrics); return metrics.heightPixels; } /** * * Whether the Status bar is hidden or not,the method always helps you get * the height of Status bar. *获得状态栏的高度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the height of Status bar. */ public static int getStatusHeight(Context context) { int statusHeight = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int id = (Integer) (clazz.getField("status_bar_height").get(object)); statusHeight = context.getResources().getDimensionPixelSize(id); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } /** * 功能描述:获取整块屏幕的高度 * * @param context * @return int */ public static int getRealScreenHeight(Context context) { int dpi = 0; Display display = ((Activity) context).getWindowManager() .getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); @SuppressWarnings("rawtypes") Class c; try { c = Class.forName("android.view.Display"); @SuppressWarnings("unchecked")Method method = c.getMethod("getRealMetrics",DisplayMetrics.class); method.invoke(display, dm); dpi = dm.heightPixels; } catch (Exception e) { e.printStackTrace(); } return dpi; } /** * 功能描述:获取虚拟按键区域的高度 * * @param context * @return int 如果有虚拟按键则返回其高度否则返回0; */ public static int getNavigationAreaHeight(Context context) { int realScreenHeight = AppScreenMgr.getRealScreenHeight(context); int screenHeight = AppScreenMgr.getScreenHeight(context); return realScreenHeight - screenHeight; } /** * 获取导航栏高度 * @param c * @return */ public static int getNavigationBarrH(Context c) { Resources resources = c.getResources(); int identifier = resources.getIdentifier("navigation_bar_height","dimen","android"); return resources.getDimensionPixelOffset(identifier); } private AppScreenMgr() { /* cannot be instantiated*/ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获取当前屏幕截图,包含状态栏 */ 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; } }
import android.app.Activity; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Rect; import android.util.DisplayMetrics; import android.view.Display; import android.view.View; import android.view.WindowManager; import java.lang.reflect.Method; /** * 主要功能:有关Android屏幕的工具类 * @Prject: CommonUtilLibrary * @Package: com.jingewenku.abrahamcaijin.commonutil * @author: AbrahamCaiJin * @date: 2017年05月04日 14:13 * @Copyright: 个人版权所有 * @Company: * @version: 1.0.0 */ public class AppScreenMgr { /** * Get the width of the screen. *获得屏幕宽度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the width of the screen. */ public static int getScreenWidth(Context context) { WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(metrics); return metrics.widthPixels; } /** * Get the height of the screen. *获得屏幕高度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the height of the screen. */ public static int getScreenHeight(Context context) { WindowManager windowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); DisplayMetrics metrics = new DisplayMetrics(); windowManager.getDefaultDisplay().getMetrics(metrics); return metrics.heightPixels; } /** * * Whether the Status bar is hidden or not,the method always helps you get * the height of Status bar. *获得状态栏的高度 * @param context * The context to use. Usually your * {@link android.app.Application} or * {@link Activity} object. * @return Return the height of Status bar. */ public static int getStatusHeight(Context context) { int statusHeight = -1; try { Class<?> clazz = Class.forName("com.android.internal.R$dimen"); Object object = clazz.newInstance(); int id = (Integer) (clazz.getField("status_bar_height").get(object)); statusHeight = context.getResources().getDimensionPixelSize(id); } catch (Exception e) { e.printStackTrace(); } return statusHeight; } /** * 功能描述:获取整块屏幕的高度 * * @param context * @return int */ public static int getRealScreenHeight(Context context) { int dpi = 0; Display display = ((Activity) context).getWindowManager() .getDefaultDisplay(); DisplayMetrics dm = new DisplayMetrics(); @SuppressWarnings("rawtypes") Class c; try { c = Class.forName("android.view.Display"); @SuppressWarnings("unchecked")Method method = c.getMethod("getRealMetrics",DisplayMetrics.class); method.invoke(display, dm); dpi = dm.heightPixels; } catch (Exception e) { e.printStackTrace(); } return dpi; } /** * 功能描述:获取虚拟按键区域的高度 * * @param context * @return int 如果有虚拟按键则返回其高度否则返回0; */ public static int getNavigationAreaHeight(Context context) { int realScreenHeight = AppScreenMgr.getRealScreenHeight(context); int screenHeight = AppScreenMgr.getScreenHeight(context); return realScreenHeight - screenHeight; } /** * 获取导航栏高度 * @param c * @return */ public static int getNavigationBarrH(Context c) { Resources resources = c.getResources(); int identifier = resources.getIdentifier("navigation_bar_height","dimen","android"); return resources.getDimensionPixelOffset(identifier); } private AppScreenMgr() { /* cannot be instantiated*/ throw new UnsupportedOperationException("cannot be instantiated"); } /** * 获取当前屏幕截图,包含状态栏 */ 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; } }
阅读全文
0 0
- 有关Android屏幕的工具类 → AppScreenMgr
- andorid有关屏幕方面的工具
- Android获取屏幕数据的工具类
- 有关Android屏幕监听的问题
- Android与屏幕有关的知识点
- Android:屏幕相关工具类
- android屏幕相关工具类
- Android的一些屏幕尺寸的工具类
- 有关JSON的工具类
- ScreenUtils,一个跟android屏幕相关的工具类
- Android开发之关于屏幕的最全工具类
- Android屏幕相关以及尺寸的转换工具类
- 有关Android多屏幕适配的问题
- 有关安卓屏幕方向的问题android:screenOrientation
- Android 开发中,与屏幕有关的三个小众知识
- Android全面的屏幕相关工具
- Android工具类--获取屏幕信息类
- Android调节屏幕亮度工具类BrightnessUtils
- mysql datetime timestamp范围
- 内网穿透 ngrok 服务器和客户端配置
- 捕捉全屏图像
- 算法导论-第八章-计数排序
- Golang 写一个端口扫描器
- 有关Android屏幕的工具类 → AppScreenMgr
- 自定义TextView-显示一串五颜六色的字符串
- 享受世间苦乐悲喜
- Todo list
- 几种软件开发模型
- URG / PSH 及计时器
- Java开发中的23种设计模式详解----桥接模式(Bridge)
- C# webAPI的使用
- for循环控制"*"输出一个菱形