1. 程式人生 > >Android實現截圖方式

Android實現截圖方式

本文介紹了Android 實現截圖方式整理,分享給大家。希望對大家有幫助

可能的需求:

  1. 截自己的屏
  2. 截所有的屏
  3. 帶導航欄截圖
  4. 不帶導航欄截圖
  5. 截圖並編輯選取一部分
  6. 自動擷取某個空間或者佈局
  7. 擷取長圖
  8. 在後臺去截圖

1.只擷取自己應用內部介面

1.1 擷取除了導航欄之外的螢幕

?
12345678910111213141516171819View dView = getWindow().getDecorView();dView.setDrawingCacheEnabled(true);dView.buildDrawingCache();Bitmap bitmap = Bitmap.createBitmap(dView.getDrawingCache());
if (bitmap != 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);bitmap.compress(Bitmap.CompressFormat.PNG,
100, os);os.flush();os.close();DebugLog.d("a7888", "儲存完成");} catch (Exception e) {}}

1.2 擷取某個控制元件或者區域

兩種方案:

跟上面差不多,只不過view不適用根view,而是使用某個某個控制元件。

?
1234View dView = title;dView.setDrawingCacheEnabled(true);dView.buildDrawingCache();Bitmap bitmap = Bitmap.createBitmap(dView.getDrawingCache());

手動draw

?
12345View dView = titleTv;
Bitmap bitmap = Bitmap.createBitmap(dView.getWidth(), dView.getHeight(), Bitmap.Config.ARGB_8888);//使用Canvas,呼叫自定義view控制元件的onDraw方法,繪製圖片Canvas canvas = new Canvas(bitmap);dView.draw(canvas);

1.3 擷取帶導航欄的整個螢幕

​ 這一小節會將一些理論上可以,但是實踐會特別複雜,不太推薦使用。可以學習瞭解。

adb 命令

這裡指的不是連線電腦進行adb操控,而是在App內部實現adb命令的操控

在APK中呼叫“adb shell screencap -pfilepath” 命令

該命令讀取系統的framebuffer,需要獲得系統許可權:

(1). 在AndroidManifest.xml檔案中新增

?
1<uses-permissionandroid:name="android.permission.READ_FRAME_BUFFER"/>

(2). 修改APK為系統許可權,將APK放到原始碼中編譯, 修改Android.mk

?
12345678LOCAL_CERTIFICATE := platformpublicvoid takeScreenShot(){ String mSavedPath = Environment.getExternalStorageDirectory()+File. separator + "screenshot.png" ; try {           Runtime. getRuntime().exec("screencap -p " + mSavedPath); } catch (Exception e) {

相關推薦

Android實現方式

本文介紹了Android 實現截圖方式整理,分享給大家。希望對大家有幫助可能的需求:截自己的屏截所有的屏帶導航欄截圖不帶導航欄截圖截圖並編輯選取一部分自動擷取某個空間或者佈局擷取長圖在後臺去截圖1.只擷取自己應用內部介面1.1 擷取除了導航欄之外的螢幕?12345678910

Android實現方式整理(總結)

http://www.jb51.net/article/119881.htm本文介紹了Android 實現截圖方式整理,分享給大家。希望對大家有幫助可能的需求:截自己的屏截所有的屏帶導航欄截圖不帶導航欄截圖截圖並編輯選取一部分自動擷取某個空間或者佈局擷取長圖在後臺去截圖1.

Android 實現和分享

直接上程式碼: xml的佈局: <Button android:id="@+id/btn_jp" android:layout_marginTop="10dip" android:layout

android實現操作

最近開發了一些Android小遊戲,想在遊戲結束或者完成之後把整個螢幕擷取下來並分享到社交平臺上。先上效果吧。 網上一搜,截圖的方法很多。這裡只貼出了一種,將擷取到Bitmap賦給Dialog上的ImageView並彈出對話方塊。對對話方塊加了彈出和收起的動畫。看起來就

Android實現功能的幾種方法

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

Android實現,將檔案儲存到本地資料夾

Android實現對當前介面截圖,並將截圖檔案存放至本地資料夾 首先需要動態申請兩項許可權(Android6.0後危險許可權之類的都需要動態申請),在AndroidManifest.xml中靜態新增 <uses-permission android:name="android.perm

android實現功能程式碼

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

Android螢幕方式總結

0、Android螢幕截圖方式: 藉助PC端工具截圖Android手機端截圖 1、藉助PC端工具截圖 PC端截圖可用的工具非常之多,從Android SDK提供的adb、ddms工具,到各大第三方助手應用寶、刷機精靈、豌豆莢等等。 工具雖多,但這些它們的實現方式基

Android實現的幾種方式

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

Android工具之實現和禁止

轉載地址:http://blog.csdn.net/xietansheng/article/details/52689384; 1. 應用內的程式碼截圖(獲取View的快照) Android的View類中提供了獲取控制元件繪製快取的方法,這種截圖的方式僅限於應用內

Android Multimedia實戰(四)MediaProjection實現,與MediaMuxer實現錄屏為MP4,Gif格式

MediaProjection可以用來捕捉螢幕,具體來說可以擷取當前螢幕和錄製螢幕視訊 (5.0以上) 先總結下系統是如何實現組合鍵截圖的: 都應該知道Android原始碼中對按鍵的捕獲位於檔案PhoneWindowManager.java中 當滿足按鍵

android上用C語言讀取fb0實現,並儲存為rgb565的bmp

好久沒有看,這兩天在折騰一下,更新一下:修正了framebuffer bgra_8888格式截圖變紅的問題 =================================       android上用C語言讀取fb0實現截圖,儲存為bmp圖片, 支援16位

Android完美實現

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

Android 拍照 事件監聽實現

需求是獲得使用者截圖,或者拍照的主動存圖行為。 但是 android 官方沒有提供回撥廣播之類的實現監聽,所以需要用另一種方式達到需求,這裡實現的就是通過監聽media資料夾實現目的。 所需許可權:  <uses-permission android:name="an

android視訊&手機錄屏實現

問題 在android中有時候我們需要對螢幕進行截圖操作,單一的截圖操作好解決可以通過activity的頂層view DecorView獲取一個bitmap,得到就是當前activity上面的全部檢視。 View view = activity.getWindow().getDecorView();

android後臺實現(2)--screencap原始碼修改

         首先找到screencap類在Android原始碼中的位置,/442/frameworks/base/cmds/screencap/screencap.cpp。 原始碼如下: /* * Copyright (C) 2010 The Android Op

android程式碼實現功能

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

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

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

Android系統實現(附程式碼)

1.背景           寫部落格快兩年了,寫了100+的文章,最火的文章也是大家最關注的就是如何實現android系統截圖。其實我們google android_screen_shot就會找到很對

U3D 三種實現儲存精彩瞬間方式

在Unity3D,實現截圖的三種實現方式: /// <summary> /// 使用Application類下的CaptureScreenshot()方法實現截圖 /// 優點:簡單,可以快速地擷取某一幀的畫面、全屏截圖 /// 缺點:不能針對攝像機截圖,