Pinch Zoom ListView Android

J'essaie d'implémenter une pincée pour zoomer dans une liste sur Android et je suis confronté à un problème lorsque je clique sur et glisse la vue de la liste agrandie. Tout d'abord, voici le code:

public class ScaleListView extends ListView { private ScaleGestureDetector mScaleDetector; private float mScaleFactor = 1.f; private float x = 0; private float y = 0; private float startx = 0; private float starty = 0; private boolean canClick = true; private float xtranslation = 0; public ScaleListView(Context context, AttributeSet attrs) { super(context, attrs); mScaleDetector = new ScaleGestureDetector(context, new ScaleListener()); } @Override public boolean onTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { startx = ev.getX(); starty = ev.getY(); } if (ev.getPointerCount() > 1) { y = ev.getY(); x = ev.getX(); } else if (ev.getAction() == MotionEvent.ACTION_UP) { canClick = (ev.getX() - startx) == 0 && (ev.getY() - starty) == 0 && mScaleFactor == 1; } else if(ev.getAction() == MotionEvent.ACTION_MOVE){ xtranslation = ev.getX() - startx; } mScaleDetector.onTouchEvent(ev); return super.onTouchEvent(ev); } @Override public void onDraw(Canvas canvas) { canvas.scale(mScaleFactor, mScaleFactor, x , y); canvas.translate(xtranslation, 0); super.onDraw(canvas); } private class ScaleListener extends ScaleGestureDetector.SimpleOnScaleGestureListener { @Override public boolean onScale(ScaleGestureDetector detector) { canClick = false; mScaleFactor *= detector.getScaleFactor(); // Don't let the object get too small or too large. mScaleFactor = Math.max(0.1f, Math.min(mScaleFactor, 5.0f)); if (mScaleFactor <= 1) { mScaleFactor = 1; canClick = true; } xPos = ScaleListView.this.getWidth() - detector.getFocusX(); ScaleListView.this.invalidate(); return true; } } public boolean canClick(){ return canClick; } 

Le problème concerne la traduction. Il devient infini, je peux le trainer horizontalement et je retire la vue de la liste de la fenêtre. Je ne peux donc pas faire face à la façon de mettre un avantage sur la traduction … Merci pour toute aide.

  • Comment réduire l'image du zoom dans l'image, zoom android?
  • Android: Le moyen le plus simple de créer un WebView affiche un Bitmap?
  • Comment dessiner un cercle après un zoom sur l'Android
  • Sélectionnez Zoom Animation
  • Comment puis-je faire un SurfaceView plus grand que l'écran?
  • Pourquoi les navigateurs mobiles chargent-ils complètement ma page?
  • Android: ZoomPicker se déclenche surTouchListener
  • Android: Comment puis-je régler le niveau de zoom de la vue de la carte sur un rayon de 1 km autour de mon emplacement actuel?
  • Positionner une image matricielle au centre de la vision de l'image
  • ArrayIndexOutOfBoundsException dans PhotoView + ViewPager
  • WebView se débarrasse du double zoom.
  • Comment supprimer les boutons de zoom sur la visionneuse Android?
  • 2 Solutions collect form web for “Pinch Zoom ListView Android”

    Je viens de constituer une classe ouvrière pour cela. Dites-moi si cela marche pour vous. https://github.com/Xjasz/AndroidZoomableViewGroup

    Follwing code restreint ma vision du texte aux écrans des écrans … J'espère que cela vous aidera dans votre liste … J'ai fait ce code sur ACTION: Déplacer

     layoutParams.leftMargin = X - _xDelta; layoutParams.topMargin = Y - _yDelta; if (layoutParams.leftMargin < 0) { layoutParams.leftMargin = 20; } else if (layoutParams.leftMargin > mainimage.getWidth()) { layoutParams.leftMargin = mainimage.getWidth() - 20; } if (layoutParams.topMargin < 0) { layoutParams.topMargin = 20; } else if (layoutParams.topMargin > mainimage.getHeight() - 100) { text.setText(text2.getText().toString()); layoutParams.topMargin = mainimage.getHeight() - 90 - text.getHeight(); // layoutParams.leftMargin = 20; } text.setX(layoutParams.leftMargin); text.setY(layoutParams.topMargin); v.setLayoutParams(text.getLayoutParams()); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.