35 votes

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:

Fil-cadre-d'activité

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

Request

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

16voto

Barney Points 1223

Vous pouvez simuler un zoom avant et arrière par la mise à l'échelle de la racine de l'activité de la vue. Voici quelques starter code:

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;
        }
    }
});

Remarque, l'activité de zoom sur un seul clique plutôt que de zoomer sur appuyez deux fois sur. Aussi, vous voudrez probablement pour animer le zoom. Rechercher la Propriété de l'Animation pour les détails de la façon d'accomplir ceci.

[MODIFIER] Pour les anciennes API niveaux, vous pouvez utiliser ScaleAnimation. Vous pouvez également définir la durée de l'animation. Toutefois, un bémol de taille, c'est qu'il ne modifie que l'apparence de la vue, mais la vue 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;

0voto

Ved Prakash Points 7244

Vous pouvez utiliser setScaleX et setScaleY de zoom de l' activité complet de la vue.

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

Les bons exemples avec les détails pour l'ensemble de l'activité de zoom avec multitouch:

1) MultiTouch pour l'ensemble de son activité.

2) le Zoom de la vue complètement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X