У меня есть одно растровое изображение в виде поверхности.Я использую мультитач для обработки жестов, таких как масштабирование и перетаскивание, проблема в том, что когда я масштабирую растровое изображение, я не хочу, чтобы его можно было уменьшать настолько, чтобы оно не охватывало весь экран (вид поверхности).Я не нашел способа обойти это, так как я не могу найти способ получить текущую высоту или ширину растрового изображения с уменьшенным масштабом.
Вот мой код:
private void multiTouchBehavior(MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_POINTER_2_DOWN)
{
_oldDist = spacing(event);
if(_oldDist > 10f) // just be secure of a bug in the API
{
_saved.set(_matrix);
_mid = midPoint(event);
}
}
else if(event.getAction() == MotionEvent.ACTION_MOVE)
{
_newDist = spacing(event);
if(_newDist > 10f)
{
_matrix.set(_saved);
float scale = _newDist / _oldDist;
_matrix.postScale(scale, scale, _mid.x, _mid.y);
}
}
}
И вотчто происходит в методе spacing (event):
private float spacing(MotionEvent event) {
float x = event.getX(0) - event.getX(1);
float y = event.getY(0) - event.getY(1);
return FloatMath.sqrt(x * x + y * y);
}
Мой onDraw (canvas) - это просто canvas.drawBitmap (myBitmap, _matrix, null)
Кто-нибудь знает, как я могу решить эту проблему?
Итак, просто чтобы убедиться, что вы правильно поняли мою проблему, подумайте о ней как о большой карте мира, к которой я хочу увеличить масштаб, и, конечно, уменьшить масштаб, когда я уже увеличил масштаб,но НЕ позволяя увеличить масштаб изображения больше, чем при запуске.