Android 常用工具类之 ScreenShotUtil

需求: 截屏

参考 :    Android开发:截屏 screenshot 功能小结

方法1.使用shell 命令  screencap -p test.png

方法2.java代码实现

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Rect;
import android.util.Log;
import android.view.View;
import android.view.Window;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class ScreenShotUtil {

    /**
     * 截图
     *
     * @param activity    截取activity 所在的页面的截图,即使退到后台也是截取这个activity
     * @param strFileName 文件全路径:例如 "/sdcard/screen_shot_20160424.jpg"
     */
    public static void shot(Activity activity, String strFileName) {
        Bitmap takeShot = takeShot(activity);
        savePic(takeShot, strFileName);
    }

    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 = activity.getWindowManager().getDefaultDisplay().getHeight();
        int width = activity.getWindowManager().getDefaultDisplay().getWidth();

        Bitmap b = Bitmap.createBitmap(view.getDrawingCache(), 0, statusBarHeight, width, height - statusBarHeight);
        // 销毁缓存信息
        view.destroyDrawingCache();

        return b;
    }

    // 保存到sdcard
    private static void savePic(Bitmap b, String strFileName) {

        FileOutputStream fos = null;
        try {
            Log.i("TAG", "start savePic");
            fos = new FileOutputStream(strFileName);
            Log.i("TAG", "strFileName = " + strFileName);
            if (null != fos) {
                // 第一参数是图片格式,第二个是图片质量,第三个是输出流
                b.compress(Bitmap.CompressFormat.PNG, 90, fos);
                fos.flush();
                fos.close();
                Log.i("TAG", "save pic");
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
时间: 2024-11-08 01:58:28

Android 常用工具类之 ScreenShotUtil的相关文章

Android常用工具类(收藏)

Android常用工具类 主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java. 目前包括(HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.S

Android 常用工具类之SPUtil,可以修改默认sp文件的路径

参考: 1. 利用Java反射机制改变SharedPreferences存储路径    Singleton1900 2. Android快速开发系列 10个常用工具类 Hongyang import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; import android.content.SharedPreferences; import java.io.

Android常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

Android常用工具类 (转)

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

53. Android常用工具类

主要介绍总结的Android开发中常用的工具类,大部分同样适用于Java.目前包括HttpUtils.DownloadManagerPro.ShellUtils.PackageUtils.PreferencesUtils.JSONUtils.FileUtils.ResourceUtils.StringUtils.ParcelUtils.RandomUtils.ArrayUtils.ImageUtils.ListUtils.MapUtils.ObjectUtils.SerializeUtils.S

Android 常用工具类

1.DensityUtils /** * 常用单位转换的辅助类 */ public class DensityUtils { private DensityUtils() { /* cannot be instantiated */ throw new UnsupportedOperationException("cannot be instantiated"); } /** * dp转px * * @param context * @param dpVal * @return */

Android(十二)android常用工具类。

1.SharedPreferences保存密码的文件 package com.itheima62.mobileguard.utils; import android.content.Context; import android.content.SharedPreferences; public class SpTools { public static void putString(Context context,String key,String value){ SharedPreferen

Android常用工具类封装---SharedPreferencesUtil

SharedPreferences常用于保存一些简单的数据,如记录用户操作的配置等,使用简单. public class SharedPreferencesUtil { //存储的sharedpreferences文件名 private static final String FILE_NAME = "save_file_name"; /** * 保存数据到文件 * @param context * @param key * @param data */ public static v

Android 常用工具类之LogUtil,可以定位到代码行,双击跳转

package cn.utils; import android.util.Log; public class LogUtils { public static boolean isDebug = true; private final static String APP_TAG = "myApp"; /** * 获取相关数据:类名,方法名,行号等.用来定位行<br> * at cn.utils.MainActivity.onCreate(MainActivity.java