android截屏功能实现代码
程序员文章站
2024-03-01 20:24:34
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; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。