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