android实现截屏功能代码

来源:互联网 发布:人工智能a7论坛 编辑:程序博客网 时间:2024/05/18 15:04

android开发中通过View的getDrawingCache方法可以达到截屏的目的,只是缺少状态栏!

APP原始界面
这里写图片描述

保存截图的文件
这里写图片描述

代码的实现
1. 添加权限(AndroidManifest.xml文件里)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

2.添加1个Button(activity_main.xml文件)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:paddingTop="@dimen/activity_vertical_margin"    tools:context=".MainActivity" >    <Button        android:id="@+id/button"        android:onClick="button"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="@string/hello_world" />    <TextView        android:id="@+id/textView1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:layout_alignLeft="@+id/button"        android:layout_below="@+id/button"        android:layout_marginTop="60dp"        android:text="TextView" /></RelativeLayout>

3.实现截屏(MainActivity.java文件)

package com.texst.lp;import java.io.File;import java.io.FileOutputStream;import android.app.Activity;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {    private TextView mTextView;    private String filePath;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        // 图片保存路径        mTextView = (TextView) findViewById(R.id.textView1);    }    public void button(View view) {        screenshot();        mTextView.setText(filePath);        Toast.makeText(getApplicationContext(), "jietu", Toast.LENGTH_SHORT)                .show();    }    private void screenshot() {        // 获取屏幕        View dView = getWindow().getDecorView();        dView.setDrawingCacheEnabled(true);        dView.buildDrawingCache();        Bitmap bmp = dView.getDrawingCache();        if (bmp != null) {            try {                // 获取内置SD卡路径                String sdCardPath = Environment.getExternalStorageDirectory()                        .getPath();                // 图片文件路径                filePath = sdCardPath + File.separator + "screenshot.png";                File file = new File(filePath);                FileOutputStream os = new FileOutputStream(file);                bmp.compress(Bitmap.CompressFormat.PNG, 100, os);                os.flush();                os.close();            } catch (Exception e) {            }        }    }}
0 0