Skip to content

Commit b9858eb

Browse files
committed
upgrade version to 1.4
1 parent ef26af2 commit b9858eb

24 files changed

+372
-175
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
</p>
44
<h3 align="center">ViewCapture</h3>
55
<p align="center">
6-
<a href="https://github.com/HelloHuDi/ViewCapture/raw/master/app/release/app-release.apk" target="_blank"><img src="https://img.shields.io/badge/release-v1.3-blue.svg"></img></a>
7-
<a href="https://github.com/HelloHuDi/ViewCapture/raw/master/app/release/app-release.apk" target="_blank"><img src="https://img.shields.io/badge/demo-v1.3-blue.svg"></img></a>
6+
<a href="https://github.com/HelloHuDi/ViewCapture/raw/master/app/release/app-release.apk" target="_blank"><img src="https://img.shields.io/badge/release-v1.4-blue.svg"></img></a>
7+
<a href="https://github.com/HelloHuDi/ViewCapture/raw/master/app/release/app-release.apk" target="_blank"><img src="https://img.shields.io/badge/demo-v1.4-blue.svg"></img></a>
88
</p>
99

1010
## provided View, ScrollView, HorizontalScrollView, ListView, RecyclerView, WebView screenshots.
@@ -16,7 +16,7 @@
1616
## dependencies :
1717

1818
```
19-
implementation 'com.hd.viewcapture:viewcapture:1.3'
19+
implementation 'com.hd.viewcapture:viewcapture:1.4'
2020
```
2121

2222
## code :

app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ dependencies {
3232
testImplementation 'junit:junit:4.12'
3333
androidTestImplementation 'com.android.support.test:runner:1.0.1'
3434
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
35-
// implementation project(':viewcapture')
36-
implementation 'com.hd.viewcapture:viewcapture:1.3'
35+
// implementation project(':viewcapture')
36+
implementation 'com.hd.viewcapture:viewcapture:1.4'
3737
implementation 'com.hd.splashscreen:splashscreen:1.4'
3838
implementation 'pub.devrel:easypermissions:1.1.3'
3939
implementation 'com.github.bumptech.glide:glide:4.6.1'

app/src/main/java/com/hd/viewcapture/demo/BaseCaptureActivity.java

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package com.hd.viewcapture.demo;
22

3+
import android.app.Activity;
34
import android.content.Intent;
45
import android.graphics.Bitmap;
56
import android.graphics.Canvas;
67
import android.graphics.ColorMatrix;
78
import android.graphics.ColorMatrixColorFilter;
89
import android.graphics.Paint;
910
import android.net.Uri;
11+
import android.os.Build;
1012
import android.os.Bundle;
1113
import android.os.Environment;
1214
import android.support.annotation.NonNull;
1315
import android.support.annotation.Nullable;
16+
import android.support.annotation.RequiresApi;
1417
import android.util.Log;
1518
import android.view.Menu;
1619
import android.view.MenuItem;
@@ -19,7 +22,9 @@
1922
import android.widget.Toast;
2023

2124
import com.hd.viewcapture.CaptureManager;
25+
import com.hd.viewcapture.CaptureType;
2226
import com.hd.viewcapture.ViewCapture;
27+
import com.hd.viewcapture.capture.helper.CaptureCallback;
2328

2429
import java.io.File;
2530

@@ -31,7 +36,7 @@
3136
* Created by hd on 2018/2/7 .
3237
* base capture
3338
*/
34-
public abstract class BaseCaptureActivity<V extends View> extends BaseActivity //
39+
public abstract class BaseCaptureActivity extends BaseActivity //
3540
implements CaptureManager.OnSaveResultListener, CaptureManager.BitmapProcessor {
3641

3742
private boolean save_to_file = true;
@@ -74,18 +79,33 @@ public void lookCapture(View view) {
7479
}
7580
}
7681

77-
protected void captureView(V v) {
82+
protected <V extends View>void captureView(V v) {
83+
captureView(ViewCapture.with(v));
84+
}
85+
86+
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
87+
protected void captureView(Activity activity) {
88+
captureView(ViewCapture.with(activity));
89+
}
90+
91+
private void captureView(CaptureType captureType){
7892
uri = null;
7993
if (save_to_file) {
80-
ViewCapture.with(v)//
81-
.asJPG(80)//
94+
captureType.asJPG(80)//
8295
.setFileName("viewCapture")//
8396
.setDirectoryName(directoryName)//
8497
.setOnSaveResultListener(this)//
8598
.setBitmapProcessor(this)//
8699
.save();
87100
} else {
88-
loadBitmap(ViewCapture.with(v).getBitmap());
101+
captureType.getBitmap(new CaptureCallback() {
102+
@Override
103+
public void report(@Nullable Bitmap bitmap) {
104+
loadBitmap(bitmap);
105+
}
106+
});
107+
//only capture view
108+
//loadBitmap(captureType.getBitmap());
89109
}
90110
}
91111

app/src/main/java/com/hd/viewcapture/demo/HorizontalScrollViewActivity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import android.os.Bundle;
44
import android.view.View;
5-
import android.widget.HorizontalScrollView;
65

7-
public class HorizontalScrollViewActivity extends BaseCaptureActivity<HorizontalScrollView> {
6+
public class HorizontalScrollViewActivity extends BaseCaptureActivity {
87

98
@Override
109
protected void onCreate(Bundle savedInstanceState) {
@@ -14,6 +13,6 @@ protected void onCreate(Bundle savedInstanceState) {
1413
}
1514

1615
public void capture(View view) {
17-
captureView((HorizontalScrollView) findViewById(R.id.horizontalScrollView));
16+
captureView(findViewById(R.id.horizontalScrollView));
1817
}
1918
}

app/src/main/java/com/hd/viewcapture/demo/ListViewActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111

1212
import java.util.Arrays;
1313

14-
public class ListViewActivity extends BaseCaptureActivity<ListView> {
14+
public class ListViewActivity extends BaseCaptureActivity {
1515

1616
private ListView listView;
1717

app/src/main/java/com/hd/viewcapture/demo/MainActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
* Created by hd on 2018/2/6 .
1313
* view demo
1414
*/
15-
public class MainActivity extends BaseCaptureActivity<View> {
15+
public class MainActivity extends BaseCaptureActivity {
1616

1717
@Override
1818
protected void onCreate(@Nullable Bundle savedInstanceState) {
Lines changed: 4 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -1,145 +1,23 @@
11
package com.hd.viewcapture.demo;
22

3-
import android.annotation.TargetApi;
4-
import android.app.Activity;
5-
import android.content.Context;
6-
import android.content.Intent;
7-
import android.graphics.Bitmap;
8-
import android.graphics.PixelFormat;
9-
import android.hardware.display.DisplayManager;
10-
import android.hardware.display.VirtualDisplay;
11-
import android.media.Image;
12-
import android.media.ImageReader;
13-
import android.media.projection.MediaProjection;
14-
import android.media.projection.MediaProjectionManager;
153
import android.os.Build;
164
import android.os.Bundle;
17-
import android.os.Handler;
18-
import android.util.DisplayMetrics;
19-
import android.util.Log;
5+
import android.support.annotation.RequiresApi;
206
import android.view.View;
21-
import android.view.WindowManager;
22-
import android.widget.Toast;
237

24-
import java.nio.ByteBuffer;
258

26-
27-
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
28-
public class NewApiCaptureActivity extends BaseActivity {
29-
30-
private static final String TAG = NewApiCaptureActivity.class.getSimpleName();
31-
32-
private static final String STATE_RESULT_CODE = "result_code";
33-
private static final String STATE_RESULT_DATA = "result_data";
34-
private static final int REQUEST_MEDIA_PROJECTION = 1;
35-
36-
private int mScreenDensity;
37-
38-
private int windowWidth;
39-
private int windowHeight;
40-
41-
private int mResultCode;
42-
private Intent mResultData;
43-
44-
private MediaProjection mMediaProjection;
45-
private VirtualDisplay mVirtualDisplay;
46-
private MediaProjectionManager mMediaProjectionManager;
47-
private ImageReader mImageReader;
9+
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
10+
public class NewApiCaptureActivity extends BaseCaptureActivity {
4811

4912
@Override
5013
protected void onCreate(Bundle savedInstanceState) {
5114
super.onCreate(savedInstanceState);
5215
setContentView(R.layout.activity_new_api_capture);
5316
setActionBarTitle("MediaProjection Capture");
54-
if (savedInstanceState != null) {
55-
mResultCode = savedInstanceState.getInt(STATE_RESULT_CODE);
56-
mResultData = savedInstanceState.getParcelable(STATE_RESULT_DATA);
57-
}
58-
DisplayMetrics metrics = new DisplayMetrics();
59-
getWindowManager().getDefaultDisplay().getMetrics(metrics);
60-
mScreenDensity = metrics.densityDpi;
61-
WindowManager windowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE);
62-
windowWidth = windowManager.getDefaultDisplay().getWidth();
63-
windowHeight = windowManager.getDefaultDisplay().getHeight();
64-
mImageReader = ImageReader.newInstance(windowWidth, windowHeight, PixelFormat.RGBA_8888, 2);
65-
mMediaProjectionManager = (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
66-
if (mMediaProjectionManager != null)
67-
startActivityForResult(mMediaProjectionManager.createScreenCaptureIntent(), REQUEST_MEDIA_PROJECTION);
68-
}
69-
70-
@Override
71-
public void onSaveInstanceState(Bundle outState) {
72-
super.onSaveInstanceState(outState);
73-
if (mResultData != null) {
74-
outState.putInt(STATE_RESULT_CODE, mResultCode);
75-
outState.putParcelable(STATE_RESULT_DATA, mResultData);
76-
}
77-
}
78-
79-
@Override
80-
protected void onDestroy() {
81-
super.onDestroy();
82-
stopScreenCapture();
83-
}
84-
85-
@Override
86-
public void onActivityResult(int requestCode, int resultCode, Intent data) {
87-
if (requestCode == REQUEST_MEDIA_PROJECTION) {
88-
if (resultCode != Activity.RESULT_OK) {
89-
Log.i(TAG, "User cancelled");
90-
Toast.makeText(this, "User cancelled", Toast.LENGTH_SHORT).show();
91-
return;
92-
}
93-
Log.i(TAG, "Starting screen capture");
94-
mResultCode = resultCode;
95-
mResultData = data;
96-
mMediaProjection = mMediaProjectionManager.getMediaProjection(mResultCode, mResultData);
97-
}
98-
}
99-
100-
private void stopScreenCapture() {
101-
Log.i(TAG, "screen capture stop");
102-
if (mMediaProjection != null) {
103-
mMediaProjection.stop();
104-
mMediaProjection = null;
105-
}
106-
if (mVirtualDisplay != null) {
107-
mVirtualDisplay.release();
108-
mVirtualDisplay = null;
109-
}
110-
}
111-
112-
public void lookCapture(View view) {
113-
//no thing
11417
}
11518

11619
public void capture(View view) {
117-
mVirtualDisplay = mMediaProjection.createVirtualDisplay("ScreenCapture",//
118-
windowWidth, windowHeight, mScreenDensity, //
119-
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,//
120-
mImageReader.getSurface(), null, null);
121-
Log.i(TAG, "screen capture completed");
122-
new Handler().postDelayed(new Runnable() {
123-
@Override
124-
public void run() {
125-
createBitmap();
126-
}
127-
}, 500);
20+
captureView(this);
12821
}
12922

130-
private void createBitmap() {
131-
Image image = mImageReader.acquireLatestImage();
132-
int width = image.getWidth();
133-
int height = image.getHeight();
134-
final Image.Plane[] planes = image.getPlanes();
135-
final ByteBuffer buffer = planes[0].getBuffer();
136-
int pixelStride = planes[0].getPixelStride();
137-
int rowStride = planes[0].getRowStride();
138-
int rowPadding = rowStride - pixelStride * width;
139-
Bitmap bitmap = Bitmap.createBitmap(width + rowPadding / pixelStride, height, Bitmap.Config.ARGB_8888);
140-
bitmap.copyPixelsFromBuffer(buffer);
141-
bitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height);
142-
image.close();
143-
loadBitmap(bitmap);
144-
}
14523
}

app/src/main/java/com/hd/viewcapture/demo/RecyclerViewActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
import java.util.Arrays;
1818

19-
public class RecyclerViewActivity extends BaseCaptureActivity<RecyclerView> {
19+
public class RecyclerViewActivity extends BaseCaptureActivity {
2020

2121
private RecyclerView recyclerView;
2222

app/src/main/java/com/hd/viewcapture/demo/ScrollViewActivity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22

33
import android.os.Bundle;
44
import android.view.View;
5-
import android.widget.ScrollView;
65

7-
public class ScrollViewActivity extends BaseCaptureActivity<ScrollView> {
6+
public class ScrollViewActivity extends BaseCaptureActivity {
87

98
@Override
109
protected void onCreate(Bundle savedInstanceState) {
@@ -14,6 +13,6 @@ protected void onCreate(Bundle savedInstanceState) {
1413
}
1514

1615
public void capture(View view) {
17-
captureView((ScrollView) findViewById(R.id.scrollView));
16+
captureView(findViewById(R.id.scrollView));
1817
}
1918
}

app/src/main/java/com/hd/viewcapture/demo/WebViewActivity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import android.webkit.WebView;
77
import android.webkit.WebViewClient;
88

9-
public class WebViewActivity extends BaseCaptureActivity<WebView> {
9+
public class WebViewActivity extends BaseCaptureActivity {
1010

1111
private WebView webView;
1212

0 commit comments

Comments
 (0)