2015-04-27 7 views
13

Ich hatte Pinch Zoom mit diesem polidea Zoomview getan. Ich habe diesen Pinch Zoom Code in Fragment Seite implementiert.Pinch Zoom zoomt nicht aus zum nächsten Fragment Seite

ZoomView zoomView; 

//inside onCreateView method 

zoomView= new ZoomView(getActivity()); 
zoomView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 

zoomView.addView(gridTable); 
zoomView.setRotationY(180); 
gridviewlayout.addView(zoomView); 

zoomview jar

Pinch Zoom in und Zoom out wurde in gridview Tabelle arbeitet page.But Wenn ich Zoom-in-Seite und dann nächstes Fragment page.After blättern Sie zu, dass, wenn ich zum vorherigen Fragmente zurück Seite ist die Seite immer noch im gezoomten Zustand.

Ich versuche, die Seite im normalen Zustand zurückzusetzen, wenn ich zur nächsten Fragmentseite gehe.

Ich suchte viele Samples.Aber alles ist mit Imageview verwandt.Ich habe keine Probe für Prise Zoom in Fragmente mit Layout erhalten.

Jeder kann mir dabei helfen.Vielen Dank.

+0

Erklären Sie es mehr, verwenden Sie Viewpager? Gibt es in jedem Fragment eine Gitteransicht? – mmlooloo

+0

Mit dem obigen Code kann ich nur eine Prise Zoom machen. Aber kann nicht verkleinern, während Sie zur nächsten Fragmentseite gehen. @mmlooloo – Steve

+0

'blättern zum nächsten Fragment' Wie implementieren Sie das? Welches Widget verwendest du? – mmlooloo

Antwort

4

Code unten zu Ihrem Fragment hinzuzufügen:

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if(!isVisibleToUser){ 
     if(mZoomView != null)mZoomView.zoomTo(1,0,0); 
    } 
} 
+0

können Sie mehr erarbeiten. Ich kann es nicht bekommen. Erklären Sie bitte mit Code für atleast ein Fragment. – Steve

+0

Jedes Fragment muss die 'ZoomViewListener'-Schnittstelle implementieren, dann beim Aufruf von' void onZoomStarted (float zoom, float zoomx, float zoomy); 'speichere diese Werte irgendwo dann bei onResume überprüfe diese Werte und wenn diese Werte keine Dummies sind (-1) rufe 'zoomTo (finales Float-Zoom, finales float x, finales float y)' mit diesen Werten auf. – mmlooloo

+0

Können Sie ein Beispielprojekt erstellen, das beispielsweise 3 Fragmente mit Ihrem Problem enthält, und es auf GitHub hochladen, dann werde ich versuchen, es zu lösen und Ihnen das Ergebnis in 1 oder 2 Tagen per E-Mail zurückschicken. – mmlooloo

1

Check Link ...

ViewPager with detailed fragment lifecycle

dass Tutorial zeigen Zuhörer auf Pause zu erstellen und Resume Listener für jedes Fragment. Wenn Sie also zu anderen Fragmenten gewechselt haben, können Sie in onPauseListener des Fragments herauszoomen. Dieses Tutorial funktioniert für mich.

Hoffe, dass diese Arbeit für Sie.

1

überschreiben diese Methode:

setPrimaryItem(ViewGroup container, int position, Object object) 

Dieses Verfahren wird jedes Mal, wenn die Position geändert aufgerufen. Jetzt weißt du, das ist das sichtbare Fragment. das bedeutet, dass du weißt, was nicht sichtbar ist (ja, ich bin Sherlock). Jetzt können Sie Zoom-Wert aller anderen Fragmente gesetzt. (Vielleicht vorherigen Index und neuen Index zu vergleichen?)

Es wäre gut für Sie Bezug auf Ihre Fragmente zu halten und implementieren ich einige Methoden für sie wie reset() or setZoom(float)

hoffe das hilft.