編輯:關於Android編程
首先要知道在Android中截取圖片大的方面可以分成兩個方向,一個是走底層一點,一個是走上層。因為樓主底層代碼比較弱,目前也只是停留在a+b的層面。所以,這篇博客只是在應用層上對屏幕進行一個截取。注意,上面討論的兩個方法與游戲中截圖是兩個概念,游戲中對屏幕的截取可以理解成一種假象。什麼樣的一種假象呢?沒有截屏!因為玩游戲的時候,一般是全屏,這個時候只要保存內存中已經保存了的圖像即可。
對於應用層面的截圖,它是基於Activity的。這裡只是說是基於Activity,不是說一定是要由Activity來截圖。那這句話不是矛盾了麼?要怎麼理解呢?例如,我現在想要截一張圖,那我總得有一個截圖的內容吧。就好像說我想把當前運行的程序給截個圖,那麼當前位於屏幕頂層的Activity就是這個內容了。這個我想要截一張圖中的我則可以是Activity,也可以是Service,也可以是廣播。
下面大家可以看看已經封裝好了的截圖類的代碼,如下:
public class ScreenShot { // 獲取指定Activity的截屏,保存到png文件 private static Bitmap takeScreenShot(Activity activity) { // View是你需要截圖的View View view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled(true); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); // 獲取狀態欄高度 Rect frame = new Rect(); activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame); int statusBarHeight = frame.top; System.out.println(statusBarHeight); // 獲取屏幕長和高 int width = activity.getWindowManager().getDefaultDisplay().getWidth(); int height = activity.getWindowManager().getDefaultDisplay().getHeight(); // 去掉標題欄 Bitmap b = Bitmap.createBitmap(bitmap, 0, statusBarHeight, width, height - statusBarHeight); view.destroyDrawingCache(); return b; } // 保存到sdcard private static void savePic(Bitmap b, String strFileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(strFileName); if (null != fos) { b.compress(Bitmap.CompressFormat.PNG, 90, fos); fos.flush(); fos.close(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public static void shoot(Activity activity) { ScreenShot.savePic(ScreenShot.takeScreenShot(activity), "sdcard/apic/image" + System.currentTimeMillis() + ".png"); } }
上面的注釋也留得相對詳細,這裡就不做過多說明了。說了也只是充字數,不必了。
ScreenShot.shoot(MainActivity.this);
<後續再更新另一種方法。。。>
android最後一個組件便是service了,終於學習到最後一個組件了,從年前的開發環境的搭建,到現在學到最後一個組件花了三周的時間,期間記錄的點點滴滴,照著書本學習編
新浪微博擁有超過5億注冊用戶通過140字記錄,“織圍脖”是網友隨時隨地記錄生活、分享社會新鮮事的生活方式。新浪微博客戶端的朋友登錄之
Android WebView In NestedScrollView 加載騰訊新聞頁面 點擊彈出層 bug 小記。目的是: CoordinatorLayou+AppBa
模版方法模式(Template Method):模版方法模式是類的行為模式。提供一個抽象類,把一部分的邏輯以具體方法或構造子形式實現,然後聲明一些抽象方法,迫使子類實現剩