1. 程式人生 > >android程式碼實現截圖功能

android程式碼實現截圖功能

android開發中通過View的getDrawingCache方法可以達到截圖的目的,只是缺少狀態列!

原始介面

圖1

截圖得到的圖片

圖2

程式碼實現

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

}



相關推薦

android程式碼實現功能

android開發中通過View的getDrawingCache方法可以達到截圖的目的,只是缺少狀態列! 原始介面 截圖得到的圖片 程式碼實現 1. 新增許可權(AndroidManifest.xml檔案裡) <uses-permission android:

android程式碼實現功能(靜態+動態視訊)

分享下靜態截圖的功能程式碼: public class ScreenShot { // 獲取指定Activity的截圖,儲存到png檔案 static Bitmap takeScreenShot(Activity activity) { L

android實現功能程式碼

android開發中通過View的getDrawingCache方法可以達到截圖的目的,只是缺少狀態列! APP原始介面 儲存截圖的檔案 程式碼的實現 1. 新增許可權(AndroidManifest.xml檔案裡) <uses-perm

iPhone 應用裡實現功能程式碼

UIView *view = [[[[[UIApplication sharedApplication] windows] objectAtIndex:1] subviews] lastObject];//獲得某個window的某個subView    NSInteger i

Android視訊部分功能實現

最近想用將android視訊接收app上加上螢幕截圖功能,直接在網上查詢截圖程式碼,發現結出來的圖不對勁,視訊視窗變成黑色的了,沒有截圖成功。而且網上大多數的方法都是利用view套件裡的getDrawingCache()函式。我繼續在網上查詢答案,發現有人這樣解

python程式碼實現識字

有次網上down了個截圖實識的軟體,發現一天只能用10次要錢才能解鎖免費,很氣,作為一個菜雞怎麼能忍受 於是自己用python寫了個簡單的小工具,分享給大家 程式碼如下: 先安裝庫 1 from PIL import ImageGrab,Image 2 import keyboard #監控鍵

Android完美實現

很多app都有截圖的需求,當你遇到產品經理給你提出這個需求時,你搜索了一下: 1.取View的cacheDrawable 來實現截圖,這種方案,沒有相容性問題,但是缺點有兩個: 不能截狀態列 遇到SurfaceView沒轍,surfacevi

Appium+JAVA實現功能

接觸Appium時間不長,以下是截圖方法程式碼,做個筆記備忘。 //截圖 public void test(WebDriver driver){ File screen = ((RemoteWebDriver) driver).

在一張圖片上實現功能

C++實現的在一張圖片上截圖,在此記錄兩種方便的截圖方式: 一、使用ATL和MFC 優點:多位元組編碼與Unicode通用 缺點:不能跨平臺 #include <atlimage.h> bool shot(const TCHAR* src_img, const

Android實現的幾種方式

一、起始原因 最近專案需求中需要實現螢幕截圖,開啟了新一輪的翻騰,找尋。是的,我就是一個搬運工,簡單的搬運工~~做不完的功能,連線不斷地需求~~ 基本需求:實現當前頁面截圖並儲存; 擴充套件需求:截圖去除自己新增的控制元件; 完善需求:截圖響應速度要快; 反饋完善需求:

js 利用html2canvas實現功能

需要匯入的檔案:jquery.min.js,html2canvas.js,canvas2image.js,jquery.qrcode.min.js(如需二維碼) var shareContent = document.getElementById("imgmodel");

Android 程式碼實現螢幕功能

private void screenshot() { // 獲取螢幕 View dView = getWindow().getDecorView(); dView.setDrawingCacheEnabled(true); dView.buildDrawingCac

Android開發:實現系統自帶功能 需要獲取System許可權

在一個service介面上,點選一個button按鈕,可以截圖 貼上程式碼: mButton.setOnClickListener(new OnClickListener(){          public void onClick(View arg0) {       

Android實現功能的幾種方法

一般情況下各種型號的手機都會有自帶的截圖功能,也會有諸如“開關機鍵+音量鍵”的截圖快捷鍵,只要手機是亮屏狀態,都會將手機螢幕的可視區域(包含狀態列)全部擷取下來。如果開發中想要調取系統的截圖功能,理論上講是可以的,需要在APK中呼叫“adb shell screencap -

android功能實現

這篇文章實現了擷取當前Activity頁面,並把截圖圖片儲存在SD卡指定路徑下功能(親測可用)。 首先要確保manifest有操作SD卡許可權 <!-- 允許應用內建sd卡 --> <uses-permission android:name="

android應用裡面在某個介面禁止系統功能實現

在Activity的onCreate()方法的Layout初始化部分加入以下程式碼Window win = getWindow();win.addFlags(WindowManager.LayoutParams.FLAG_SECURE);具體的原因看下android原始碼S

Unity 程式碼實現PS的功能和區域性及合併分享圖片

一、功能描述: 做一個獲取遊戲內容分享圖片功能,分截圖和長圖分享。圖片上要顯示玩家自定義的頭像 以及名字。 二、實現思路: 1、分享直接使用的share SDK 即可。 2、從伺服器下載背景模板圖片。

C#實現網頁功能

jpeg near http 集合類 pri eve display aging img 網頁截圖是很常見的實用功能,今天就為大家共享一個實現瀏覽器截圖的代碼,主要程序代碼如下所示:private void Form_Load(object sender, EventAr

selenium testng webDriver 失敗異常功能實現

參考資料: 引自:https://www.cnblogs.com/superbaby11/p/6426035.html https://blog.csdn.net/sinat_34209942/article/details/82881674 https://blog.csdn.net/

firefox外掛網頁+python win32api+selenium實現整個網頁的長功能

#ctrl+shift+L快捷鍵,經實踐比screengrap穩定,因為在使用的過程中當driver開啟一個新的視窗時,screengrap的快捷鍵ctrl+shift+!失效了不能使用 win32api.keybd_event (17, 0, 0, 0) # ctrl win32api.