代码如下:
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"/>
分享到:
相关推荐
在Android开发中,有时我们需要实现特定功能,例如只截取应用程序界面的一部分,而不是整个屏幕。这个功能在"指定屏幕内区域截图"中得以体现。在本文中,我们将深入探讨如何在Android中实现这一功能,包括如何选取...
本项目“android jni 屏幕截图 NativeScreenCapture”专注于利用JNI技术来实现Android设备的屏幕截图功能。下面将详细介绍这个过程涉及的关键知识点。 1. **JNI基础**:JNI是Android平台上的一个接口,它为Java应用...
当用户截取屏幕时,系统会发出一个ACTION_SCREENSHOT广播,我们可以通过注册BroadcastReceiver来接收这个广播。 ```java public class ScreenshotReceiver extends BroadcastReceiver { @Override public void ...
在Android系统中,截取当前屏幕图像是一项常见的需求,无论是为了调试、测试还是用户分享功能。这个过程涉及到Android系统的视图层次结构、渲染机制以及权限管理。以下将详细讲解如何在Android中实现屏幕截图功能。 ...
此外,我们还可以使用其他方法来获取屏幕截图,例如使用 MediaProjectionManager 来截取屏幕,或者使用 Android 的 Accessibility 服务来截取屏幕。但是,这些方法都需要在 Android 5.0 及更高版本中使用。 获取...
在Android开发中,有时我们需要对屏幕的特定区域进行截图,而不是整个屏幕,这在比如用户头像选择、游戏截图分享等功能中非常常见。这个“android区域性屏幕截图”项目提供了解决此类需求的代码实现,已经经过测试并...
本文将基于"Android实例之程序界面内截取屏幕"这一主题,深入探讨如何在Android应用内部实现屏幕截图功能。 首先,我们要理解Android系统提供的一些核心API,用于获取设备的屏幕内容。在Android中,我们可以使用`...
本文将详细探讨两种在Android手机上实现屏幕截图的方法,并重点介绍一种用于图片多点触摸缩放的工具类,帮助开发者创建更加互动和用户体验良好的应用。 首先,让我们来看看Android手机如何进行屏幕截图。方法一,...
在大多数Android设备上,可以通过同时按下电源键和音量下键来快速截取屏幕当前的状态。这个快捷键组合是多数Android设备的标准设置,但不同厂商可能会有微小差异,例如某些设备可能需要按电源键和Home键。完成截图后...
在Android系统中,截屏是一种常见的操作,通常用于记录或分享屏幕内容。然而,系统默认提供的截屏方式可能无法满足所有需求,特别是对于开发者来说,有时需要更底层、更灵活的方式来实现这一功能。这里我们将讨论一...
在Android平台上,屏幕截取是一项常见的功能,它允许用户或开发者获取设备当前屏幕内容的静态图像。本技术主要涉及以下几个核心知识点: 1. **SurfaceView**:在Android中,SurfaceView是一个特殊的视图,它拥有...
在Android开发中,屏幕截图是常见的功能之一,用于获取设备当前屏幕显示的内容。这个"android截图的demo(手机屏幕截图)"就是一个展示如何在Android应用中实现这一功能的例子。在这个Demo中,开发者可以学习到如何...
在Android开发中,有时...综上所述,实现"Android截取指定区域保存"功能涉及了Android权限管理、屏幕截图、图像处理、文件操作等多个技术领域。开发者需要对这些方面有深入理解,才能构建出高效且用户友好的截屏工具。
在Android操作系统中,截图是日常使用手机时非常常见的功能,用于保存屏幕上的当前状态或分享信息。然而,标准的截图操作通常只能捕获整个屏幕,而不能自由选择想要截取的部分。为了满足用户对自定义截图的需求,...
在Android开发中,有时我们需要将一个布局转换为图片,例如为了实现分享到微信的功能,或者进行屏幕截图。本文将深入探讨如何在Android中实现“布局生成图片”这一技术,以及如何将其与微信分享功能集成。 首先,让...
在Android平台上,截屏是一项常见的功能,用户通常用于保存或分享屏幕上的内容。然而,标准的系统截屏方法只能捕获当前屏幕上可见的部分,对于那些超出屏幕边界或者不可见的视图(View)元素,是无法直接截取的。...
在Android平台上,自定义区域截图是一项实用且常见的功能,它允许用户自由选择屏幕上的特定区域进行截图,而非全屏截图。实现这一功能涉及到对Android系统的理解、View的层级结构以及图像处理技术。以下是对该主题的...
在Android应用开发中,"Android-模仿微信拾取图片图片截取拍照获取图片"是一个常见的需求,主要用于实现用户在应用内选择、截图或拍摄图片的功能。这个标题涉及到的知识点主要包含以下几个方面: 1. **多媒体文件...
在Android平台上,开发一款应用,让用户能够通过拍照或者从相册选取图片,然后进行剪切操作,是一项常见的功能需求。这个过程涉及到多个Android系统服务和API的交互,包括相机服务、图片选择器以及图片处理技术。...