欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

android截屏功能实现代码

程序员文章站 2024-03-01 20:24:34
android开发中通过view的getdrawingcache方法可以达到截屏的目的,只是缺少状态栏! 原始界面 截屏得到的图片 代码实现 1. 添加权限...

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

原始界面

android截屏功能实现代码

截屏得到的图片

android截屏功能实现代码

代码实现

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;
 }

}

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