import android.view.ScaleGestureDetector;
public class MainActivity extends AppCompatActivity {
ImageView im1;
private ScaleGestureDetector mScaleGestureDetector;
private float mScaleFactor = 1.0f;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
im1=(ImageView)findViewById(R.id.im1);
mScaleGestureDetector = new ScaleGestureDetector(this, new ScaleListener());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mScaleGestureDetector.onTouchEvent(event);
}
private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
// when a scale gesture is detected, use it to resize the image
@Override
public boolean onScale(ScaleGestureDetector scaleGestureDetector){
mScaleFactor *= scaleGestureDetector.getScaleFactor();
im1.setScaleX(mScaleFactor);
im1.setScaleY(mScaleFactor);
return true;
}
}
}
Приведенный выше код используется для увеличения и уменьшения изображения. Я знаю, что могу использовать матрицу, чтобы сделать это, но мне действительно нужно увеличивать и уменьшать таким образом для моего варианта использования. Теперь я хочу включить увеличение в любом месте, используя это. По умолчанию это просто увеличивает центр изображения. Я хочу увеличить масштаб до места, где я ущипнуть. Я знаю код, чтобы получить расстояние между пальцами,
private float spacing(MotionEvent event)
{
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return (float) Math.sqrt(x * x + y * y);
}
Я также знаю код, чтобы получить среднюю точку пальцев, где я бы сделал увеличение в
private void midPoint(PointF point, MotionEvent event)
{
float x = event.getX(0) + event.getX(1);
float y = event.getY(0) + event.getY(1);
point.set(x / 2, y / 2);
}
Но я не знаю, как объединить это, чтобы закодировать то, что мне нужно. Пожалуйста, помогите. Thankyou