feat(GitHub): Add `Pinch to zoom` patch

This commit is contained in:
oSumAtrIX 2023-11-15 00:06:20 +01:00
parent 130f629f6b
commit 3f81d187b5
No known key found for this signature in database
GPG Key ID: A9B3094ACDB604B4
2 changed files with 59 additions and 0 deletions

View File

@ -0,0 +1,40 @@
package app.revanced.github;
import android.content.Context;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
public class PinchToZoomGesture implements View.OnTouchListener, ScaleGestureDetector.OnScaleGestureListener {
private View view;
private final ScaleGestureDetector gestureScale;
private float scaleFactor = 1;
public PinchToZoomGesture(Context c){ gestureScale = new ScaleGestureDetector(c, this); }
@Override
public boolean onTouch(View view, MotionEvent event) {
this.view = view;
view.onTouchEvent(event);
return gestureScale.onTouchEvent(event);
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
scaleFactor *= detector.getScaleFactor();
scaleFactor = (scaleFactor < 1 ? 1 : scaleFactor); // prevent our view from becoming too small //
scaleFactor = ((float)((int)(scaleFactor * 100))) / 100; // Change precision to help with jitter when user just rests their fingers //
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
return true;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
}
}

View File

@ -0,0 +1,19 @@
package app.revanced.github;
import android.annotation.SuppressLint;
import android.util.Log;
import android.view.ViewGroup;
public final class PinchToZoomPatch {
@SuppressLint("StaticFieldLeak")
private static ViewGroup recyclerView;
public static void addPinchToZoomGesture(final ViewGroup codeViewRecycleView) {
if (recyclerView == codeViewRecycleView) return;
recyclerView = codeViewRecycleView;
recyclerView.setOnTouchListener(new PinchToZoomGesture(recyclerView.getContext()));
Log.d("revanced", "Adding pinch to zoom event handler to " + codeViewRecycleView);
}
}