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:app直播---原理篇
[如何快速的开发一个完整的iOS直播app](原理篇) 转载自简书@袁峥Seemygo:http://www.jianshu.com/p/7b2f1df74420 一.个人见解(直播难与易) 直播 ...
- APICloud上有关iOS证书的一些问题
1. 苹果开发者账号及其区别: 苹果的开发者账号分为个人.公司和企业三类. 个人是99$一年,只能个人使用,可以提交应用到AppStore: 公司的也是99$,但是可以邀请其它成员一起使用,可以提交应 ...
- Android大图片裁剪终极解决方案(上:原理分析)
转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-) http://my.oschina.net/ryanhoo/blog/86842 约几个月前,我正 ...
- Sublime text 3 SVN插件及使用方法
前提是你电脑里已装有SVN,这时只是设置快捷调用SVN. 1.通过快捷键 ctrl+` 或者 View > Show Console 菜单打开控制台 2.粘贴对应版本的代码后回车安装 适用于 S ...
- 关于 0xCCCCCCCC
http://xingyunbaijunwei.blog.163.com/blog/static/76538067201281793111474/ http://stackoverflow.com/q ...
- 动画的button(按下时缩小,松开时恢复)
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @pr ...
- 《30天自制操作系统》06_day_学习笔记
harib03a: 内容没有变化 :P109 从这里开始,代码开始工程化了. 将原本300多行的bootpack.c分割成了三部分: graphic.c : 用来处理界面图像 dsctbl. ...
- mysql 插入重复值 INSERT ... ON DUPLICATE KEY UPDATE
向数据库插入记录时,有时会有这种需求,当符合某种条件的数据存在时,去修改它,不存在时,则新增,也就是saveOrUpdate操作.这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求 ...
- [原创]安装Oracle 11gR2,以及如何在win8下使用plsql develper连接Oracle数据库 ,在这里和大家分享下
一,关于win8下安装Oracle 11gR2 1.我下载的是Oracle_11gR2_win64.其中有两个包: 注意:在解压了之后将:win64_11gR2_database_2of2\datab ...
- oracle 复杂语句
select nvl(sum1,'0')as sum1,nvl(sum2,'0') as sum2,da2 from( select count(*) as sum1,substr(APPLY_DAT ...