快捷搜索:  as  2018  FtCWSyGV  С˵  test  xxx  Ψһ  w3viyKQx

澳门威尼人斯:android截取屏幕图片



package com.iceman.printscreen;

import java.io.File;

import java.io.FileOutputStream;

import android.app.Activity; import android.graphics.Bitmap;

import android.graphics.Bitmap.Config; import android.os.Bundle;

import android.os.Environment; import android.view.Display;

import android.view.LayoutInflater; import android.view.View;

import android.view.View.OnClickListener; import android.view.WindowManager;

import android.widget.Button; import android.widget.LinearLayout;

import android.widget.Toast;

public class PrintScreenDemoActivity extends Activity {private Button mButton;

private LinearLayout mLayout;private int mPrintNum;

/** Called when the activity is first created. */@Override

public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);

LayoutInflater inf = this.getLayoutInflater();mLayout = (LinearLayout)inf.inflate(R.layout.main, null);

setContentView(mLayout);mButton = (Button)findViewById(R.id.print_btn);

mButton.setOnClickListener(new OnClickListener() {public void onClick(View v) {

GetandSaveCurrentImage();mPrintNum++;

mButton.setText("截屏次数:"+mPrintNum);}

});}

private void GetandSaveCurrentImage(){

//1.构建BitmapWindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();int w = display.getWidth();

int h = display.getHeight();

Bitmap Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );

//2.获取屏幕View decorview = this.getWindow().getDecorView();

decorview.setDrawingCacheEnabled(true);Bmp = decorview.getDrawingCache();

String SavePath = getSDCardPath()+"/PrintScreenDemo/ScreenImage";

//3.保存Bitmaptry {

File path = new File(SavePath);//文件

String filepath = SavePath + "/Screen_"+mPrintNum+".png";File file = new File(filepath);

if(!path.exists()){path.mkdirs();

}if (!file.exists()) {

file.createNewFile();}

FileOutputStream fos = null;

fos = new FileOutputStream(file);if (null != fos) {

Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);fos.flush();

fos.close();

Toast.makeText(this, "截屏文件已保存至SDCard/PrintScreenDemo/ScreenImage/下", Toast.LENGTH_LONG).show();}

} catch (Exception e) {

e.printStackTrace();}

}

/奸淫 获取SDCard的目录路径功能

* @return*/

private String getSDCardPath(){File sdcardDir = null;

//判断SDCard是否存在boolean sdcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

if(sdcardExist){sdcardDir = Environment.getExternalStorageDirectory();

}

return sdcardDir.toString();}

}

代码如下:

Java代码

package com.iceman.printscreen;

import java.io.File;

import java.io.FileOutputStream;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.Bitmap.Config;

import android.os.Bundle;

import android.os.Environment;

import android.view.Display;

import澳门威尼人斯 android.view.LayoutInflater;

import android.view.View;

import android.view.View.OnClickListener;

import android.view.WindowManager;

import android.widget.Button;

import android.widget.LinearLayout;

import android.widget.Toast;

public class PrintScreenDemoActivity extends Activity {

private Button mButton;

private LinearLayout mLayout;

private int mPrintNum;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

LayoutInflater inf = this.getLayoutInflater();

mLayout = (LinearLayout)inf.inflate(R.layout.main, null);

setContentView(mLayout);

mButton = (Button)findViewById(R.id.print_btn);

mButton.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

GetandSaveCurrentImage();

mPrintNum++;

mButton.setText("截屏次数:"+mPrintNum);

}

});

}

private void GetandSaveCurrentImage()

{

//1.构建Bitmap

WindowManager windowManager = getWindowManager();

Display display = windowManager.getDefaultDisplay();

int w = display.getWidth();

int h = display.getHeight();

Bitmap Bmp = Bitmap.createBitmap( w, h, Config.ARGB_8888 );

//2.获取屏幕

View decorview = this.getWindow().getDecorView();

decorview.setDrawingCacheEnabled(澳门威尼人斯true);

Bmp = decorview.getDrawingCache();

String SavePath = getSDCardPath()+"/PrintScreenDemo/ScreenImage";

//3.保存Bitmap

try {

File path = new File(SavePath);

//文件

String filepath = SavePath + "/Screen_"+mP澳门威尼人斯rintNum+".png";

File file = new File(filepath);

if(!path.exists()){

path.mkdirs();

}

if (!file.exists()) {

file.createNewFile();

}

FileOutputStream fos = null;

fos = new FileOutputStream(file);

if (null != fos) {

Bmp.compress(Bitmap.CompressFormat.PNG, 90, fos);

fos.flush();

fos.close();

Toast.makeText(this, "截屏文件已保存至SDCard/PrintScreenDemo/ScreenImage/下", Toast.LENGTH_LONG).show();

}

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* 获取SDCard的目录路径功能

* @return

*/

private String getSDCardPath(){

File sdcardDir = null;

//判断SDCard是否存在

boolean sdcardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

if(sdcardExist){

sdcardDir = Environment.getExternalStorageDirectory();

}

return sdcardDir.toString()澳门威尼人斯;

}

}

结构文件:

xml version="1.0" encoding="utf-8"?>

LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"

android:layout_hei澳门威尼人斯ght="fill_parent"android:orientation="vertical" >

Button

android:id="@+id/print_btn"android:layout_width="fill_parent"

android:layout_height="wrap_content"android:text="截屏" />

LinearLayout>

因为是把截屏的图片寄放到sd卡里,以是要在manifest.xml文件中增添对sd卡的写入权限.

您可能还会对下面的文章感兴趣: