Android 任意区域截屏
生活随笔
收集整理的這篇文章主要介紹了
Android 任意区域截屏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、全屏截圖
Android其實可以做到任意區域截屏,不過我們先來看看整個屏幕截圖代碼,相信大家很熟悉,代碼如下
View decorView = activity.getWindow().getDecorView(); decorView.setDrawingCacheEnabled(true); view.buildDrawingCache(); //獲取屏幕整張圖片 Bitmap bitmap = decorView.getDrawingCache();上述代碼中的bitmap就是當前屏幕的截圖的bitmap,獲取bitmap后大家自行處理自己業務就可以了。。。
2、區域截圖
法1:View.getDrawingCache()
關鍵代碼如下:
view.setDrawingCacheEnabled(true);view.buildDrawingCache();Bitmap bitmap = view.getDrawingCache();注意:如果你的view恰好是textview且恰好你沒有給它設置背景,那么很不幸你獲取的bitmap看到的是黑色的,它并不是你所期望的那樣哦,解決方案點它
其實還有另外一種方法就是,從全屏圖片中裁剪中我們需要的圖片,告訴系統裁剪圖片的起始坐標以及的大小,參見下面方法。
法2:Bitmap.createBitmap (Bitmap source, int x, int y, int width, int height)
從官方文檔來看,source代表原始的圖片;(x,y)代表從source圖片中起始點開始裁剪,width,height表示裁剪圖片的大小。
/*** * @param view 需要截取圖片的view* @return 截圖*/private Bitmap getBitmap(View view) throws Exception {View screenView = getWindow().getDecorView();screenView.setDrawingCacheEnabled(true);screenView.buildDrawingCache();//獲取屏幕整張圖片Bitmap bitmap = screenView.getDrawingCache();if (bitmap != null) {//需要截取的長和寬int outWidth = view.getWidth();int outHeight = view.getHeight();//獲取需要截圖部分的在屏幕上的坐標(view的左上角坐標)int[] viewLocationArray = new int[2];view.getLocationOnScreen(viewLocationArray);//從屏幕整張圖片中截取指定區域bitmap = Bitmap.createBitmap(bitmap, viewLocationArray[0], viewLocationArray[1], outWidth, outHeight);}return bitmap;}上述代碼只要傳入你需要截取的圖的view就可以返回對應的bitmap,也不需要管它是textview且有沒有設置背景,是不是很方便?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的Android 任意区域截屏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自定义Java注解(一)
- 下一篇: Android-无线连接设备调试