android截取屏幕图片

Android 专栏收录该内容
96 篇文章 0 订阅
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"/>


  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
<p style="color:#666666;"> <span style="font-size:14px;">本门课程重实战,将基础知识拆解到项目里,让你在项目情境里学知识。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">这样的学习方式能让你保持兴趣、充满动力,时刻知道学的东西能用在哪、能怎么用。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">平时不明白的知识点,放在项目里去理解就恍然大悟了。</span> </p> <p style="color:#666666;"> <span></span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>一、融汇贯通</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本视频采用了前后端分离的开发模式,前端使用Vue.js+Element UI实现了Web页面的呈现,后端使用Python 的Django框架实现了数据访问的接口,前端通过Axios访问后端接口获得数据。在学习完本章节后,真正理解前后端的各自承担的工作。</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>二、贴近实战</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">本系列课程为练手项目实战:学生管理系统v4.0的开发,项目包含了如下几个内容:项目的总体介绍、基本功能的演示、Vuejs的初始化、Element UI的使用、在Django中实现针对数据的增删改查的接口、在Vuejs中实现前端增删改查的调用、实现文件的上传、实现表格的分页、实现导出数据到Excel、实现通过Excel导入数据、实现针对表格的批量化操作等等,所有的功能都通过演示完成、贴近了实战</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>三、课程亮点</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">在本案例中,最大的亮点在于前后端做了分离,真正理解前后端的各自承担的工作。前端如何和后端交互</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="color:#FF0000;font-size:14px;"><strong>适合人群:</strong></span> </p> <p style="color:#666666;"> <span style="font-size:14px;">1、有Python语言基础、web前端基础,想要深入学习Python Web框架的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">2、有Django基础,但是想学习企业级项目实战的朋友;</span> </p> <p style="color:#666666;"> <span style="font-size:14px;">3、有MySQL数据库基础的朋友</span> </p> <p style="color:#666666;"> <span style="font-size:14px;"> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><img alt="" src="https://img-bss.csdnimg.cn/202009070752197496.png" /><br /> </span> </p> <p style="color:#666666;"> <span style="font-size:14px;"><br /> </span> </p>
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值