当前位置: 代码迷 >> Android >> android截取银屏图片
  详细解决方案

android截取银屏图片

热度:27   发布时间:2016-05-01 20:16:51.0
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.构建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_"+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();     } }

?布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="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卡的写入权限.

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

?

  相关解决方案