JavascriptProva

sabato 26 marzo 2016

Zoomare l'immagine con due dita (ScaleGestureDetector e SimpleOnScaleGestureListener)

Ridimensionare un'immagine con due dita.

Ci sto combattendo un po'...

Credo di essere arrivato a qualche conclusione.
Esiste una classe che si chiama ScaleGestureDetector.
Questa classe viene creata con un costruttore che assume come parametri context e un listener, per cui va creato anche il listener.

Dopo aver scritto un codice funzionante modificando pedissequamente il codice trovato in rete, come al solito rompo il Mandala e lo ricostruisco daccapo a titolo di esercitazione...

public class MainActivity extends Activity {
 
 //dichiarazioni
 ScaleGestureDetector scaleGestureDetector;
 
 RelativeLayout mainLayout;
 ImageView imageView;
 Bitmap bitmap;
 int bitmapHeight,bitmapWidth;
 float scala=1.f;
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  scaleGestureDetector=new ScaleGestureDetector(this,new simpleOnScaleGestureListener());
  mainLayout=(RelativeLayout)findViewById(R.id.mainLayout);
  imageView=new ImageView(this);
  mainLayout.addView(imageView);
  
  bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.calcestruzzo);
  bitmapHeight=bitmap.getHeight();
  bitmapWidth=bitmap.getWidth();  
  drawMatrix();
   
 }
 private void drawMatrix(){
  bitmapWidth*=scala;
  bitmapHeight*=scala;
  Bitmap resizedBitmap=Bitmap.createScaledBitmap(bitmap, bitmapWidth, bitmapHeight, false);
  imageView.setImageBitmap(resizedBitmap);
 }
 
 @Override
 public boolean onTouchEvent(MotionEvent event){
  scaleGestureDetector.onTouchEvent(event);
  return true;
  
 }
 private class simpleOnScaleGestureListener extends SimpleOnScaleGestureListener{
  
  @Override
  public boolean onScale(ScaleGestureDetector detector){
   scala=detector.getScaleFactor();
   drawMatrix();
   return true;
   
  }
 } 

}
Ecco: solo che aumentando e diminuendo le dimensioni un po' di volte mi allunga l'immagine...
Ma per il momento c'è da essere soddisfatti!

Nessun commento:

Posta un commento