diff options
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 b62e2c34ed6e..34094cd81120 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureController.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScrollCaptureController.java @@ -171,7 +171,7 @@ public class ScrollCaptureController { if (mImageTileSet.isEmpty()) { mCaptureCallback.onError(); } else { - mCaptureCallback.onComplete(mImageTileSet); + mCaptureCallback.onComplete(mImageTileSet, session.getPageHeight()); } } @@ -179,7 +179,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(); } |