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 ...
随机推荐
- iOS:FFmpeg视频播放和直播框架
视频直播和播放转码器框架 介绍: FFmpeg是一套可以用来记录.转换数字音频.视频,并能将其转化为流的开源计算机程序.采用LGPL或GPL许可证. 它提供了录制.转换以及流化音视频的完整解决方案.它 ...
- 背景建模SACON
http://www.cnblogs.com/dwdxdy/p/3530862.html
- Shell expr的用法 bc 命令 let命令
Shell expr的用法 bc 命令 let命令 数学运算 let命令 expr命令 bc命令 $(()) $[] http://www.80ops.cn/archives/245. ...
- 在美国看中国HTML5市场的发展
近日,APICloud 创始人兼CEO刘鑫在美国旧金山和美国的HTML5开发者进行了一次近距离的接触,感受中美HTML5开发者的热度差别和不同市场阶段的中美表现巨大差异. 中国和美国的HTML5市场差 ...
- Java 继承 执行顺序
代码: package com.company; public class Main { public static void main(String[] args) { new MyClass(); ...
- django上传下载大文件
上传 def upFile(file): upload_dir = '/tmp/upload/%s' % username if request.method == 'POST': upload_fi ...
- docker note from UC blog
-------------------------------------------------------------------------- original url http://tech. ...
- Velocity(2)——引用
在Velocity Template Language(VTL)中,有三种类型的引用:变量,属性,方法.所有的引用都被看作是字符串,如果某个引用是一个整型值,velocity会调用它的toString ...
- IntelliJ IDEA 常用设置讲解3
IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它. 常用设置 如上图 Gif 所示, ...
- Leetcode: Longest Absolute File Path
Suppose we abstract our file system by a string in the following manner: The string "dir\n\tsub ...