Zoom pincée Android

Ma mise en page contient des boutons, des aperçus de texte, etc. Est-il possible d'implémenter un zoom de pincement dans ma mise en page?

  • Android Studio: Ice Cream Sandwich (niveau API 15) La configuration du périphérique ne s'affiche pas même si l'image système est installée
  • EditText dans ListView caché par le clavier lorsqu'il est concentré
  • Activité étendue ActionBarActivity et YouTubeBaseActivity
  • Android Swipe View with Tabs sans utiliser la bibliothèque de support V4
  • Comment puis-je choisir un numéro de téléphone avec la boîte de dialogue des contacts d'Android?
  • Comment réduire la barre système dans Android 3.0 (Honeycomb)?
  • 6 Solutions collect form web for “Zoom pincée Android”

    Consultez les liens suivants qui peuvent vous aider

    Les meilleurs exemples sont fournis dans les liens ci-dessous, que vous pouvez refactoriser pour répondre à vos besoins.

    1. Mettant en œuvre le pinch-zoom-gestur

    2. Pincement d'Android

    3. GestureDetector.SimpleOnGestureListener

    Pour Android 2.2+ (api level8), vous pouvez utiliser ScaleGestureDetector.

    Vous avez besoin d'un membre

    private ScaleGestureDetector mScaleDetector; 

    Dans votre constructeur (ou onCreate ()), vous ajoutez:

     mScaleDetector = new ScaleGestureDetector(context, new OnScaleGestureListener() { @Override public void onScaleEnd(ScaleGestureDetector detector) { } @Override public boolean onScaleBegin(ScaleGestureDetector detector) { return true; } @Override public boolean onScale(ScaleGestureDetector detector) { Log.d(LOG_KEY, "zoom ongoing, scale: " + detector.getScaleFactor()); return false; } }); 

    Vous annulez surTouchEvent:

     @Override public boolean onTouchEvent(MotionEvent event) { mScaleDetector.onTouchEvent(event); return true; } 

    Si vous dessinez votre vue à la main, dans onScale (), vous ne stockez probablement pas le facteur d'échelle dans un membre, puis appelez invalidate () et utilisez le facteur d'échelle lors du dessin sur votre OnDraw (). Sinon, vous pouvez directement modifier les tailles de police ou des choses comme ça dans OnScale ().

    J'ai implémenté un zoom de pincement pour mon TextView , en utilisant ce tutoriel. Le code résultant est le suivant:

     private GestureDetector gestureDetector; private View.OnTouchListener gestureListener; 

    Et dans onCreate ():

      // Zoom handlers gestureDetector = new GestureDetector(new MyGestureDetector()); gestureListener = new View.OnTouchListener() { // We can be in one of these 2 states static final int NONE = 0; static final int ZOOM = 1; int mode = NONE; static final int MIN_FONT_SIZE = 10; static final int MAX_FONT_SIZE = 50; float oldDist = 1f; @Override public boolean onTouch(View v, MotionEvent event) { TextView textView = (TextView) findViewById(R.id.text); switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_POINTER_DOWN: oldDist = spacing(event); Log.d(TAG, "oldDist=" + oldDist); if (oldDist > 10f) { mode = ZOOM; Log.d(TAG, "mode=ZOOM" ); } break; case MotionEvent.ACTION_POINTER_UP: mode = NONE; break; case MotionEvent.ACTION_MOVE: if (mode == ZOOM) { float newDist = spacing(event); // If you want to tweak font scaling, this is the place to go. if (newDist > 10f) { float scale = newDist / oldDist; if (scale > 1) { scale = 1.1f; } else if (scale < 1) { scale = 0.95f; } float currentSize = textView.getTextSize() * scale; if ((currentSize < MAX_FONT_SIZE && currentSize > MIN_FONT_SIZE) ||(currentSize >= MAX_FONT_SIZE && scale < 1) || (currentSize <= MIN_FONT_SIZE && scale > 1)) { textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, currentSize); } } } break; } return false; } 

    Les constantes magiques 1.1 et 0.95 ont été choisies de manière empirique (en utilisant scale variable d' scale à cet effet, mon TextView se comporte de façon étrange).

    Il y a aussi ce projet qui fait le travail et m'a parfaitement fonctionné: https://github.com/chrisbanes/PhotoView

    En nid d'abeilles, niveau API 11, il est possible, on peut utiliser setScalaX et setScaleY avec point de pivotement
    Je l'ai expliqué ici
    Zoomer une vue complètement
    Pinch Zoom pour voir complètement

    J'ai créé un projet pour le pincement-zoom de base qui supporte Android 2.1+

    Disponible ici

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.