MultiTouchGestureDetector
The MultiTouchGestureDetector Detects scaling, rotating and moving transformation gestures, Whether you want ScaleGestureDetector, RotateGestureDetector, or MoveGestureDetector, this is always the best choice.
The MultiTouchGestureDetector Detects scaling, rotating and moving transformation gestures using the supplied MotionEvents. The OnMultiTouchGestureListener callback will notify users when a particular gesture event has occurred, besides, SimpleOnMultiTouchGestureListener is offered as a helper class that you can extend if you don’t care about all of the reported events. This class should only be used with MotionEvents reported via touch.
Usage
Step 1. Create our MultiTouchGestureDetector
mMultiTouchGestureDetector = new MultiTouchGestureDetector(context, new MultiTouchGestureDetectorListener());
Step 2. Let the MultiTouchGestureDetector
inspect all events.
mMultiTouchGestureDetector.onTouchEvent(event);
Step 3. Record the detected gesture transformations.
private final class MultiTouchGestureDetectorListener extends MultiTouchGestureDetector.SimpleOnMultiTouchGestureListener {
@Override
public void onScale(MultiTouchGestureDetector detector) {
mScaleFactor *= detector.getScale();
mScaleFactor = Math.max(1.0f, Math.min(mScaleFactor, 5.0f));
invalidate();
}
@Override
public void onMove(MultiTouchGestureDetector detector) {
mOffsetX += detector.getMoveX();
mOffsetY += detector.getMoveY();
invalidate();
}
@Override
public void onRotate(MultiTouchGestureDetector detector) {
mRotation += detector.getRotation();
invalidate();
}
}
Step 4. Apply the gesture transformations
canvas.save();
canvas.translate(mOffsetX, mOffsetY);
canvas.scale(mScaleFactor, mScaleFactor, mIcon.getIntrinsicWidth() / 2, mIcon.getIntrinsicHeight() / 2);
canvas.rotate(mRotation, mIcon.getIntrinsicWidth() / 2, mIcon.getIntrinsicHeight() / 2);
mIcon.draw(canvas);
canvas.restore();
If necessary the full usage is here.
Gradle
dependencies {
compile 'com.dinuscxj:multitouchgesturedetector:1.0.0'
}
Application scenarios
- Sticker system. such as the story feature of the Instagram.
- Media Browsing. such as the feed detail page of the Facebook