2015-07-20 2 views
0

Я терплю неудачу, пытаясь реализовать ScaleGestureDetector в целом View.ScaleGestureDetector для всего изображения

У меня есть ImageView, который заполняет весь экран. Кроме того, у меня разные маленькие изображения. Теперь я хочу реализовать ScaleGestureDetector, чтобы увеличить весь вид, а не только один ImageView.

Мой код:

public class TouchMoveImage extends Activity implements View.OnTouchListener, ScaleGestureDetector.OnScaleGestureListener { 

    private ImageView skizze; 
    private ImageView feuerloescher; 

    private float scale = 1.f; 

    ScaleGestureDetector scaleGestureDetector; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.touchmoveimage); 

     skizze = (ImageView) findViewById(R.id.skizze); 
     feuerloescher = (ImageView) findViewById(R.id.feuerloescherID); 

     scaleGestureDetector = new ScaleGestureDetector(this, new MyOnScaleGestureListener()); 

public boolean onTouchEvent(MotionEvent event) { 
     scaleGestureDetector.onTouchEvent(event); 
     return true; 
    } 

    @Override 
    public boolean onScale(ScaleGestureDetector scaleGestureDetector) { 
     float scaleFactor = scaleGestureDetector.getScaleFactor(); 

     scaleFactor *= scaleGestureDetector.getScaleFactor(); 

     //Lass sie nicht zu klein oder zu groß werden 
     scaleFactor = Math.max(0.1f, Math.min(scaleFactor, 5.0f)); 
     return true; 
    } 

    @Override 
    public boolean onScaleBegin(ScaleGestureDetector scaleGestureDetector) { 
     return false; 
    } 

    @Override 
    public void onScaleEnd(ScaleGestureDetector scaleGestureDetector) { 

    } 

    public class MyOnScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { 

     @Override 
     public boolean onScale(ScaleGestureDetector scaleGestureDetector) { 
      scale *= scaleGestureDetector.getScaleFactor(); 



      //Lass sie nicht zu klein oder zu groß werden 
      scale = Math.max(0.1f, Math.min(scale, 5.0f)); 

      return true; 
     } 

    } 

Но это не работает. Что я делаю неправильно?

ответ

1

Ваша деятельность уже реализует OnScaleGestureListener Таким образом, вы можете создать детектор, как это:

scaleGestureDetector = new ScaleGestureDetector(this, this);