Autore Topic: Come applicare efetto zoom tramite pinch ad una webview  (Letto 248 volte)

Offline RobertoDG

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Come applicare efetto zoom tramite pinch ad una webview
« il: 06 Ottobre 2014, 11:44:31 CEST »
0
Ciao a tutti.
Sto provando ad eseguire lo zoom della schermata pinchandola.
Il contenuto è una webview contenente una pagina PHP online.

Purtroppo lo zoom non funziona. Lo stesso codice, applicato invece ad una applicazione contenente non una webview ma una singola immagine, funziona.

Qualcuno sa aiutarmi?
Grazie.

Il codice è questo:

_________________________________________________________________________________

public class MainActivity extends ActionBarActivity implements OnTouchListener {
   public String url = "SITO_WEB.php";
   public Boolean startUp = false;
   private WebView browser;

        Matrix matrix = new Matrix();
        Matrix savedMatrix = new Matrix();
   
        static final int NONE = 0;
        static final int DRAG = 1;
        static final int ZOOM = 2;
        int mode = NONE;
   
        float oldDist = 1f;
        PointF start = new PointF(); 
        PointF mid = new PointF();

        @Override
   protected void onCreate(Bundle savedInstanceState) {
      
     super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);
        
   if (!startUp) {
     browser = (WebView)findViewById(R.id.webView1);
     browser.setWebViewClient(new WebViewClient());
     browser.getSettings().setJavaScriptEnabled(true);
     browser.loadUrl(url);
     startUp = true;
        }
        browser.setOnTouchListener(this);
    }

    @Override
    public boolean onTouch(View v, MotionEvent event) {
      
   ImageView view = (ImageView) v;
      
        switch (event.getAction() & MotionEvent.ACTION_MASK) {
           case MotionEvent.ACTION_DOWN:
              savedMatrix.set(matrix);
              start.set(event.getX(), event.getY());
              Log.d(TAG, "mode=DRAG" );
              mode = DRAG;
           break;
           case MotionEvent.ACTION_UP:
           case MotionEvent.ACTION_POINTER_UP:
              mode = NONE;
              Log.d(TAG, "mode=NONE" );
           break;
           case MotionEvent.ACTION_MOVE:
              if (mode == DRAG) {
                  matrix.set(savedMatrix);
                  matrix.postTranslate(
                  event.getX() - start.x,event.getY() - start.y
                  );
              }
              else if (mode == ZOOM) {
                  float newDist = spacing(event);
                  Log.d(TAG, "newDist=" + newDist);
                  if (newDist > 10f) {
                      matrix.set(savedMatrix);
                      float scale = newDist / oldDist;
                      matrix.postScale(scale, scale, mid.x, mid.y);
                  }
              }
           break;
           case MotionEvent.ACTION_POINTER_DOWN:
              oldDist = spacing(event);
              Log.d(TAG, "oldDist=" + oldDist);
              if (oldDist > 10f) {
                  savedMatrix.set(matrix);
                  midPoint(mid, event);
                  mode = ZOOM;
                  Log.d(TAG, "mode=ZOOM" );
              }
           break;
        }
        view.setImageMatrix(matrix);
        return true;
    }
_________________________________________________________________________________

Post unito: 06 Ottobre 2014, 12:34:32 CEST
Ho risolto inserendo



browser.getSettings().setSupportZoom(true);
browser.getSettings().setBuiltInZoomControls(true);
« Ultima modifica: 06 Ottobre 2014, 12:34:32 CEST da RobertoDG, Reason: Merged DoublePost »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Come applicare efetto zoom tramite pinch ad una webview
« Risposta #1 il: 06 Ottobre 2014, 12:47:52 CEST »
0
Quando incolli del codice (java, xml o altro), puoi formattarlo usando i tastini e che trovi subito sopra l'area di inserimento del testo. Rende il tutto molto più leggibile.

Anzi, faresti una cortesia ai lettori se tu potessi editare il post iniziale e formattare in tal modo il codice.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store