Created
April 10, 2015 18:38
-
-
Save Groxx/57cecd0a1d2b056f025c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private class MyPanListener extends GestureDetector.SimpleOnGestureListener { | |
@Override | |
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { | |
mDrawingMatrix.postTranslate(distanceX, distanceY); | |
invalidate(); | |
return true; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
private class MyScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { | |
@Override | |
public boolean onScale(final ScaleGestureDetector detector) { | |
final float scale = detector.getScaleFactor(); | |
mDrawingMatrix.postScale(scale, scale, detector.getFocusX(), detector.getFocusY()); | |
mDrawingMatrix.mapRect(outRect, bitmapSizeRect); | |
if (bitmapSizeRect.width() / outRect.width() > 2) { | |
// 2x zoomed in, start loading the next level. | |
// outRect shows the currently-visible region of the bitmap, can just pass to BitmapRegionDecoder | |
} | |
invalidate(); | |
return true; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MyView extends View { | |
// or whatever | |
private GestureDetector scaleDetector = new GestureDetectorCompat(new MyScaleListener()); | |
private GestureDetector panDetector = new GestureDetectorCompat(new MyPanListener()); | |
@Override | |
public boolean onTouchEvent(final MotionEvent event) { | |
boolean result = super.onTouchEvent(event); // handles listeners, etc | |
result |= scaleDetector.onTouchEvent(event); | |
result |= panDetector.onTouchEvent(event); | |
return result; | |
} | |
@Override | |
protected void onDraw(@NotNull final Canvas canvas) { | |
canvas.drawBitmap(bitmap, mDrawingMatrix, mFilterBitmapPaint); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment