当前位置: 移动技术网 > 移动技术>移动开发>Android > android截屏功能实现代码

android截屏功能实现代码

2019年07月24日  | 移动技术网移动技术  | 我要评论
android开发中通过view的getdrawingcache方法可以达到截屏的目的,只是缺少状态栏! 原始界面 截屏得到的图片 代码实现 1. 添加权限

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

原始界面

截屏得到的图片

代码实现

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"
  tools:context=".mainactivity" >

  <textview
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerhorizontal="true"
    android:layout_centervertical="true"
    android:text="@string/hello_world" />
  
  <button 
    android:id="@+id/btn_save"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="screenshot"
    />

</relativelayout>

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

package com.example.androidtest;

import java.io.file;
import java.io.fileoutputstream;

import android.os.bundle;
import android.os.environment;
import android.app.activity;
import android.graphics.bitmap;
import android.view.menu;
import android.view.view;
import android.widget.button;

public class mainactivity extends activity {
 
 @override
 protected void oncreate(bundle savedinstancestate) {
 super.oncreate(savedinstancestate);
 setcontentview(r.layout.activity_main);
 
 button btn = (button) this.findviewbyid(r.id.btn_save);
 btn.setonclicklistener(new view.onclicklistener() {
  
  @override
  public void onclick(view v) {
  screenshot();
  }
 });
 }
 
 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();
     // 图片文件路径
     string 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) {
  }
    }
 }

 @override
 public boolean oncreateoptionsmenu(menu menu) {
 // inflate the menu; this adds items to the action bar if it is present.
 getmenuinflater().inflate(r.menu.activity_main, menu);
 return true;
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网