web-dev-qa-db-fra.com

Comment faire un zoom sur toute l'activité sur multi-touch?

Problem:

Il est facile de zoomer sur les images et les vues Web. Mais je veux faire un zoom sur toute une activité. Comment puis-je faire ceci?

Here, I provide wire-frame:

Wire-Frame-Of-Activity

De cela, vous pouvez comprendre ce que je veux faire.

Request

Si vous avez une solution à cela, partagez-la.
Je vous remercie.

35
Darshak

Vous pouvez simuler le zoom avant et arrière en mettant à l'échelle la vue de l'activité racine. Voici un code de démarrage:

View v = findViewById(Android.R.id.content); // get reference to root activity view
v.setOnClickListener(new OnClickListener() {
    float zoomFactor = 1.5f;
    boolean zoomedOut = false;

    @Override
    public void onClick(View v) {
        if(zoomedOut) { 
            // now zoom in
            v.setScaleX(1);
            v.setScaleY(1);
            zoomedOut = false;
        }
        else {
            v.setScaleX(zoomFactor);
            v.setScaleY(zoomFactor);
            zoomedOut = true;
        }
    }
});

Notez que l’activité zoomera sur des clics simples au lieu de zoomer lorsque vous appuyez deux fois. En outre, vous souhaiterez probablement animer le zoom. Recherchez Property Animation pour plus de détails sur la manière de procéder.

[EDIT] Pour les anciens niveaux d'API, vous pouvez utiliser ScaleAnimation. Vous pouvez également définir la durée de l'animation. Cependant, un inconvénient majeur est qu'il modifie uniquement l'aspect de la vue, mais que la vue réelle ne change pas.

if(zoomedOut) { // zoom in
    ScaleAnimation anim = new ScaleAnimation(1f, 1.5f, 1f, 1.5f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    anim.setDuration(500);
    anim.setFillAfter(true);
    v.startAnimation(anim);
    zoomedOut = false;
}
else {
    ScaleAnimation anim = new ScaleAnimation(1.5f, 1f, 1.5f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
    anim.setDuration(500);
    anim.setFillAfter(true);
    v.startAnimation(anim);
    zoomedOut = true;
16
Barney

Vous pouvez utiliser setScaleX et setScaleY pour zoomer sur la vue d'activité complète.

Ensuite, vous devez définir le point pivot avec setPivotX et setPivotY.

Les bons exemples avec des détails pour l’ensemble de l’activité zoom avec multitouch:

1) MultiTouch pour toute l'activité.

2) Zoom voir complètement.

0
My God