android之截圖(包括擷取scrollview與listview的)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
|
public class ScreenShot
{ //
獲取指定Activity的截圖,儲存到png檔案 public static Bitmap
takeScreenShot(Activity activity) { //
View是你需要截圖的View View
view = activity.getWindow().getDecorView(); view.setDrawingCacheEnabled( true ); view.buildDrawingCache(); Bitmap
b1 = 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(b1, 0, 25, 320, 455); Bitmap
b = Bitmap.createBitmap(b1, 0 ,
statusBarHeight, width, height -
statusBarHeight); view.destroyDrawingCache(); savePic(b, "/sdcard/screen_test.png" ); return b; } //
儲存到sdcard public 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(); } } /** *
把View物件轉換成bitmap *
*/ public static Bitmap
convertViewToBitmap(View view) { view.measure(MeasureSpec.makeMeasureSpec( 0 ,
MeasureSpec.UNSPECIFIED), MeasureSpec.makeMeasureSpec( 0 ,
MeasureSpec.UNSPECIFIED)); view.layout( 0 , 0 ,
view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap
bitmap = view.getDrawingCache(); if (bitmap
!= null )
{ System.out.println( "這不是nullde1" ); Log.d( "nullde1" , "nullde1" ); } else { System.out.println( "這nullnulllnulnlul" ); } return bitmap; } //
程式入口1 public static void shoot(Activity
a) { ScreenShot.savePic(ScreenShot.takeScreenShot(a), "/sdcard/screen_test.png" ); } //
程式入口2 public static void shootView(View
view) { ScreenShot.savePic(ScreenShot.convertViewToBitmap(view), "sdcard/xx.png" ); } public static Bitmap
getViewBitmap(View v) { v.clearFocus(); v.setPressed( false ); boolean willNotCache
= v.willNotCacheDrawing(); v.setWillNotCacheDrawing( false ); //
Reset the drawing cache background color to fully transparent //
for the duration of this operation int color
= v.getDrawingCacheBackgroundColor(); v.setDrawingCacheBackgroundColor( 0 ); if (color
!= 0 )
{ v.destroyDrawingCache(); } v.buildDrawingCache(); Bitmap
cacheBitmap = v.getDrawingCache(); if (cacheBitmap
== null )
{ Log.e( "TTTTTTTTActivity" , "failed
getViewBitmap(" +
v + ")" , new RuntimeException()); return null ; } Bitmap
bitmap = Bitmap.createBitmap(cacheBitmap); //
Restore the view v.destroyDrawingCache(); v.setWillNotCacheDrawing(willNotCache); v.setDrawingCacheBackgroundColor(color); return bitmap; } /** *
擷取scrollview的螢幕 *
**/ public static Bitmap
getBitmapByView(ScrollView scrollView) { int h
= 0 ; Bitmap
bitmap = null ; //
獲取listView實際高度 for ( int i
= 0 ;
i < scrollView.getChildCount(); i++) { h
+= scrollView.getChildAt(i).getHeight(); scrollView.getChildAt(i).setBackgroundResource(R.drawable.bg3); } Log.d(TAG, "實際高度:" +
h); Log.d(TAG, "
高度:" +
scrollView.getHeight()); //
建立對應大小的bitmap bitmap
= Bitmap.createBitmap(scrollView.getWidth(), h, Bitmap.Config.ARGB_8888); final Canvas
canvas = new Canvas(bitmap); scrollView.draw(canvas); //
測試輸出 FileOutputStream
out = null ; try { out
= new FileOutputStream( "/sdcard/screen_test.png" ); } catch (FileNotFoundException
e) { e.printStackTrace(); } try { if ( null !=
out) { bitmap.compress(Bitmap.CompressFormat.PNG, 100 ,
out); out.flush(); out.close(); } } catch (IOException
e) { //
TODO: handle exception } return bitmap; } private static String
TAG = "Listview
and ScrollView item 截圖:" ; /** *
截圖listview *
**/ public static Bitmap
getbBitmap(ListView listView) { int h
= 0 ; Bitmap
bitmap = null ; //
獲取listView實際高度 for ( int i
= 0 ;
i < listView.getChildCount(); i++) { h
+= listView.getChildAt(i).getHeight(); } Log.d(TAG, "實際高度:" +
h); Log.d(TAG, "list
高度:" +
listView.getHeight()); //
建立對應大小的bitmap bitmap
= Bitmap.createBitmap(listView.getWidth(), h, Bitmap.Config.ARGB_8888); final Canvas
canvas = new Canvas(bitmap); listView.draw(canvas); //
測試輸出 FileOutputStream
out = null ; try { out
= new FileOutputStream( "/sdcard/screen_test.png" ); } catch (FileNotFoundException
e) { e.printStackTrace(); } try { if ( null !=
out) { bitmap.compress(Bitmap.CompressFormat.PNG, 100 ,
out); out.flush(); out.close(); } } catch (IOException
e) { //
TODO: handle exception } return bitmap; } } |
相關文章
- 在Windows 10中擷取截圖的6種方式 簡介Windows
- 直播平臺軟體開發,完整擷取整個螢幕的截圖方式
- js擷取影片的封面圖片JS
- Java 圖片裁剪,擷取Java
- Android:ListView的擴充與進階AndroidView
- 從原理上說說ScrollView巢狀ListView的問題View巢狀
- ScrollView巢狀ListView解決辦法以及原理View巢狀
- 如何用Chrome自帶的截圖功能擷取超過一個螢幕的網頁Chrome網頁
- 求擷取圖片等比公式公式
- android中的ListViewAndroidView
- Android中RecyclerView與Scrollview組合使用(二)AndroidView
- Android截圖和指定View生成截圖分享AndroidView
- Android 截圖與 WebView 長圖分享經驗總結AndroidWebView
- Android長截圖的實現Android
- Android截圖監聽Android
- Android三種方式擷取任意介面螢幕Android
- Android 截圖的各種騷操作Android
- 擷取圖片生成頭像外掛
- Android帶有粘性頭部的ScrollViewAndroidView
- MAC電腦使用技巧之Mac截圖快捷鍵截圖技巧與工具分享Mac
- 字串擷取字串
- js擷取JS
- android開發中如何動態獲取listview中的item的值AndroidView
- android之豎直滾動控制元件-ListViewAndroid控制元件View
- Android 截圖實現的幾種方式Android
- Android ScrollView滾動到指定View的位置AndroidView
- mysql 擷取指定的兩個字串之間的內容MySql字串
- Javascript之字串擷取函式slice()、substring()、substr()JavaScript字串函式
- kubectl技巧之通過jsonpath擷取屬性JSON
- kubernetes管理之使用yq工具擷取屬性
- 前端字型擷取前端
- android 設定listview高度AndroidView
- vue自定義指令擷取圖片中心顯示Vue
- html2canvas擷取圖片並下載HTMLCanvas
- 【程式設計框架】Android可配置的ScrollView框架程式設計框架AndroidView
- ListView 之非同步載入圖片亂序View非同步
- PHP擷取html文章PHPHTML
- 直播平臺原始碼,vue圖片中劃框擷取部分圖片原始碼Vue
- SAP Hybris Commerce product讀取的除錯截圖除錯