时间:2021-05-20
Android屏幕截图并保存截取屏幕的图片到指定文件,具体内容如下
注意要添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />完整代码:
package zhangphil.test; import android.app.Activity;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.util.DisplayMetrics;import android.view.View;import android.widget.Toast; import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream; public class JavaActivity extends AppCompatActivity { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.drawable_activity); AppCompatActivity activity = this; findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "zhangphil.jpg"); Bitmap bitmap = screenShot(activity); try { if (!file.exists()) file.createNewFile(); boolean ret = save(bitmap, file, Bitmap.CompressFormat.JPEG, true); if (ret) { Toast.makeText(getApplicationContext(), "截图已保持至 " + file.getAbsolutePath(), Toast.LENGTH_SHORT).show(); } } catch (Exception e) { e.printStackTrace(); } } }); } /** * 保存图片到文件File。 * * @param src 源图片 * @param file 要保存到的文件 * @param format 格式 * @param recycle 是否回收 * @return true 成功 false 失败 */ public static boolean save(Bitmap src, File file, Bitmap.CompressFormat format, boolean recycle) { if (isEmptyBitmap(src)) return false; OutputStream os; boolean ret = false; try { os = new BufferedOutputStream(new FileOutputStream(file)); ret = src.compress(format, 100, os); if (recycle && !src.isRecycled()) src.recycle(); } catch (IOException e) { e.printStackTrace(); } return ret; } /** * 获取当前屏幕截图,不包含状态栏(Status Bar)。 * * @param activity activity * @return Bitmap */ public static Bitmap screenShot(Activity activity) { View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bmp = view.getDrawingCache(); int statusBarHeight = getStatusBarHeight(activity); int width = (int) getDeviceDisplaySize(activity)[0]; int height = (int) getDeviceDisplaySize(activity)[1]; Bitmap ret = Bitmap.createBitmap(bmp, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return ret; } public static float[] getDeviceDisplaySize(Context context) { Resources resources = context.getResources(); DisplayMetrics dm = resources.getDisplayMetrics(); int width = dm.widthPixels; int height = dm.heightPixels; float[] size = new float[2]; size[0] = width; size[1] = height; return size; } public static int getStatusBarHeight(Context context) { int height = 0; int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { height = context.getResources().getDimensionPixelSize(resourceId); } return height; } /** * Bitmap对象是否为空。 */ public static boolean isEmptyBitmap(Bitmap src) { return src == null || src.getWidth() == 0 || src.getHeight() == 0; }}以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
上回分享了一个全屏截图的代码,保存为BMP,参考:C++实现屏幕截图(全屏截图)实际使用的过程中我发现截图文件实在大,无奈又整成了PNG截图,现在分享出来。Ma
在很多场合下,我们可能有这样的需求:提供个屏幕截图上传到系统,作为一个凭证。传统的操作方式是:屏幕截图,保存文件到本地,在web页面上选择本地文件并上传,这里至
Android屏幕及view的截图实例详解屏幕可见区域的截图整个屏幕截图的话可以用Viewview=getWindow().getDecorView();pub
本文实例讲述了Android5.0及以上编程实现屏幕截图功能的方法。分享给大家供大家参考,具体如下:在Android5.0,API21之前想要截图系统屏幕必须R
截图的快捷键是什么,屏幕截图快捷键?在看到什么好看的图片或是画面时,如果不能另存保存,用屏幕截图功能保存下来是一种不错的方式。下面是几种常用的屏幕截图方法:1、