Android 常用工具类之 ScreenUtil
需求: 截屏
参考 : Android开发:截屏 screenshot 功能小结
package bvb.de.openadbwireless.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.Window;
import android.view.WindowManager; import java.io.FileOutputStream; public class ScreenUtil { /** 获取屏幕密度 */
public static float getScreenDensity(Context context) {
return getDisplayMetrics(context).density;
} /** 获取屏幕宽度(像素) */
public static int getScreenWidthPixels(Context context) {
return getDisplayMetrics(context).widthPixels;
} /** 获取屏幕宽度(dp) */
public static float getScreenWidthDp(Context context) {
DisplayMetrics displayMetrics = getDisplayMetrics(context);
return displayMetrics.widthPixels / displayMetrics.density;
} /** 获取屏幕高度(像素) */
public static int getScreenHeightPixels(Context context) {
return getDisplayMetrics(context).heightPixels;
} /** 获取屏幕高度(dp) */
public static float getScreenHeightDp(Context context) {
DisplayMetrics displayMetrics = getDisplayMetrics(context);
return displayMetrics.heightPixels / displayMetrics.density;
} /** 获取状态栏高度 */
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;
} /**
* 保存屏幕截图到本地
*
* @param activity
* @param strFileName 文件全路径:例如 "/sdcard/screen_shot_20160424.jpg"
*/
public static void savScreenShot(Activity activity, String strFileName) {
Bitmap takeShot = takeShot(activity);
savePic(takeShot, strFileName);
} /**
* 截图
* 也可以调用shell命令去截图 screencap -p test.png
*
* @param activity 截取activity 所在的页面的截图,即使退到后台也是截取这个activity
*/
private static Bitmap takeShot(Activity activity) {
// 获取windows中最顶层的view
View view = activity.getWindow().getDecorView();
// 允许当前窗口保存缓存信息
view.setDrawingCacheEnabled(true);
view.buildDrawingCache(); //状态栏高度
Rect outRect = new Rect();
view.getWindowVisibleDisplayFrame(outRect);
int statusBarHeight = outRect.top; //状态栏+标题栏目的高度
statusBarHeight = activity.getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop(); //屏幕宽高
int height = getScreenHeightPixels(activity);
int width = getScreenWidthPixels(activity); // 如果需要状态栏,则使用 Bitmap b = Bitmap.createBitmap(view.getDrawingCache(), 0, 0, width, height - statusBarHeight);
Bitmap b = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeight, width, height - statusBarHeight);
// 销毁缓存信息
view.destroyDrawingCache(); return b;
} private static DisplayMetrics getDisplayMetrics(Context context) {
DisplayMetrics outMetrics = new DisplayMetrics();
((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(outMetrics);
return outMetrics;
} // 保存到sdcard
private static void savePic(Bitmap b, String strFileName) {
FileOutputStream fos = null;
try {
fos = new FileOutputStream(strFileName);
if (null != fos) {
// 第一参数是图片格式,第二个是图片质量,第三个是输出流
b.compress(Bitmap.CompressFormat.PNG, 90, fos);
fos.flush();
fos.close();
}
} catch (Exception e) {
e.printStackTrace();
}
} }
Android 常用工具类之 ScreenUtil的更多相关文章
- 53. Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefer ...
- Android 常用工具类之SPUtil,可以修改默认sp文件的路径
参考: 1. 利用Java反射机制改变SharedPreferences存储路径 Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import ...
- 【转】Android常用工具类
主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.Prefe ...
- android常用工具类
import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkIn ...
- Android 常用工具类之LogUtil,可以定位到代码行,双击跳转
package cn.utils; import android.util.Log; public class LogUtils { public static boolean isDebug = t ...
- Android常用工具类封装---SharedPreferencesUtil
SharedPreferences常用于保存一些简单的数据,如记录用户操作的配置等,使用简单. public class SharedPreferencesUtil { // ...
- Android 常用工具类之 DimenUtil
public class DimenUtil { /** sp转换成px */ public static int sp2px(float spValue) { float fontScale = M ...
- Android 常用工具类之DeviceInfoUtil
public class DeviceInfoUtil { private static WifiManager wifiManager = null; // wifi是否已连接 public sta ...
- Android 常用工具类之RuntimeUtil
public class RuntimeUtil { /** 通过查询su文件的方式判断手机是否root */ public static boolean hasRootedSilent() { re ...
随机推荐
- notepad++的环境变量
notepad++的环境变量:当前目录:$(CURRENT_DIRECTORY) cmd /k cd /d $(CURRENT_DIRECTORY)文件名:$(NAME_PART)路径名:$(CURR ...
- Linux 内核的文件 Cache 管理机制介绍
Linux 内核的文件 Cache 管理机制介绍 http://www.ibm.com/developerworks/cn/linux/l-cache/ 1 前言 自从诞生以来,Linux 就被不断完 ...
- kill 命令详解 系统信号
kill 命令详解 系统信号 参考: 了解Linux的进程与线程 http://www.cnblogs.com/MYSQLZOUQI/p/4234005.html Linux就这个范儿 P532 ...
- 细聊分布式ID生成方法
细聊分布式ID生成方法 https://mp.weixin.qq.com/s?__biz=MjM5ODYxMDA5OQ==&mid=403837240&idx=1&sn=ae9 ...
- android开源框架
1.volley 项目地址 https://github.com/smanikandan14/Volley-demo (1) JSON,图像等的异步下载: (2) 网络请求的排序(scheduli ...
- linux php
ubuntu php -v 查看php版本号 查看目录 cd / ls apache: 如果采用RPM包安装,安装路径应在/etc/httpd目录下 apache配置文件:/etc/httpd/con ...
- Python模块 (psutil)
psutil psutil是Python中一个系统信息检索模块,可以获取(系统.CPU.内存.网络.磁盘)等信息,可以应用于系统的监控.健康状态检查,等同于shell中的ps.free.top.df功 ...
- MongoDB固定集合
固定集合 MongoDB 固定集合(Capped Collections)是性能出色且有着固定大小的集合,对于大小固定,我们可以想象其就像一个环形队列,当集合空间用完后,再插入的元素就会覆盖最初始的头 ...
- REST Security with JWT using Java and Spring Security
Security Security is the enemy of convenience, and vice versa. This statement is true for any system ...
- Oracle Flashback Technologies - 闪回被drop的表
Oracle Flashback Technologies - 闪回被drop的表 在oracle10g中,drop一个表后,表没有真正被删除,支持被rename后放在recyclebin中. #新建 ...