diff options
| author | 2021-03-08 11:09:34 -0500 | |
|---|---|---|
| committer | 2021-03-08 11:09:34 -0500 | |
| commit | 466a2f28f5ed11e8a70a219a50ead8b0b8cfeab0 (patch) | |
| tree | 199d3948afcf683cc2e06aa70bb694328cd4acaa | |
| parent | 156864ee6433c7875c3fe36430132f04abb1b553 (diff) | |
Set initial crop handles to original page location
Treat the image tile set's 0 coordinate as the top and use pageSize to
compute the bottom of the original screenshot.
Bug: 179907401
Test: Verify potisitioning when scrolling from the top, bottom and
middle.
Change-Id: I44fca11474221b5d4249483bf22a88ede5e8104e
3 files changed, 23 insertions, 12 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/CropView.java b/packages/SystemUI/src/com/android/systemui/screenshot/CropView.java index c066619d049a..bb8c36776d57 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/CropView.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/CropView.java @@ -136,7 +136,7 @@ public class CropView extends View { case MotionEvent.ACTION_UP: if (mCurrentDraggingBoundary != CropBoundary.NONE) { // Commit the delta to the stored crop values. - commitDeltas(); + commitDeltas(mCurrentDraggingBoundary); updateListener(event); } } @@ -184,12 +184,12 @@ public class CropView extends View { animator.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { - commitDeltas(); + commitDeltas(boundary); } @Override public void onAnimationCancel(Animator animation) { - commitDeltas(); + commitDeltas(boundary); } }); animator.setFloatValues(0f, 1f); @@ -228,11 +228,14 @@ public class CropView extends View { mCropInteractionListener = listener; } - private void commitDeltas() { - mTopCrop += mTopDelta; - mBottomCrop += mBottomDelta; - mTopDelta = 0; - mBottomDelta = 0; + private void commitDeltas(CropBoundary boundary) { + if (boundary == CropBoundary.TOP) { + mTopCrop += mTopDelta; + mTopDelta = 0; + } else if (boundary == CropBoundary.BOTTOM) { + mBottomCrop += mBottomDelta; + mBottomDelta = 0; + } } private void updateListener(MotionEvent event) { diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java index 4dc846e0e95d..db997053af23 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/LongScreenshotActivity.java @@ -339,14 +339,22 @@ public class LongScreenshotActivity extends Activity { } @Override - public void onComplete(ImageTileSet imageTileSet) { + public void onComplete(ImageTileSet imageTileSet, int pageSize) { Log.i(TAG, "Got tiles " + imageTileSet.getWidth() + " x " + imageTileSet.getHeight()); mPreview.setImageDrawable(imageTileSet.getDrawable()); updateCropLocation(); mMagnifierView.setDrawable(imageTileSet.getDrawable(), imageTileSet.getWidth(), imageTileSet.getHeight()); - mCropView.animateBoundaryTo(CropView.CropBoundary.BOTTOM, 0.5f); + // Original boundaries go from the image tile set's y=0 to y=pageSize, so + // we animate to that as a starting crop position. + float topFraction = Math.max(0, + -imageTileSet.getTop() / (float) imageTileSet.getHeight()); + float bottomFraction = Math.min(1f, + 1 - (imageTileSet.getBottom() - pageSize) + / (float) imageTileSet.getHeight()); + mCropView.animateBoundaryTo(CropView.CropBoundary.TOP, topFraction); + mCropView.animateBoundaryTo(CropView.CropBoundary.BOTTOM, bottomFraction); mBackgroundExecutor.execute(() -> saveCacheBitmap(imageTileSet)); } }); diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureController.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureController.java index 9da6b8f240e9..1985032c477e 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureController.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureController.java @@ -164,7 +164,7 @@ public class ScrollCaptureController { if (mImageTileSet.isEmpty()) { mCaptureCallback.onError(); } else { - mCaptureCallback.onComplete(mImageTileSet); + mCaptureCallback.onComplete(mImageTileSet, session.getPageHeight()); } } @@ -172,7 +172,7 @@ public class ScrollCaptureController { * Callback for image capture completion or error. */ public interface ScrollCaptureCallback { - void onComplete(ImageTileSet imageTileSet); + void onComplete(ImageTileSet imageTileSet, int pageHeight); void onError(); } |