11
votes

Android: Animation dans la vue Galerie?

Quand j'utilise le widget de la galerie , comment puis-je obtenir les images pour dire échelle & lueur sur la sélection et Égalisé sur & Un-lueur sur l'être non sélectionné ?

Tous les tutoriels que j'ai vus ont cet effet mais je ne suis pas capable de le voir ...

Y a-t-il une sorte d'animation que je dois attacher à la galerie ?


1 commentaires

Je fais la même chose, mais cela ne fonctionne pas dans certains appareils Android, si vous avez atteint cette animation dans la vue de la galerie, veuillez m'envoyer un code.


3 Réponses :


4
votes

Vous devez utiliser un ImagesWitcher. Les imagesWitcher ont des méthodes de réglage des animations IN et OUT (lorsque l'image est sélectionnée et désélectionnée, ou sélectionnée et remplacée).

the Lien suivant A un bon tutoriel sur la façon de l'utiliser conjointement avec la galerie.


1 commentaires

Désolé, je ne l'ai pas remarqué mais je ne pouvais toujours pas trouver un moyen d'accabler les images dans l'imagewitcher lui-même ... Ce que je veux dire, c'est la partie supérieure visible ... lorsque vous avez cliqué, il devrait nous donner Une taille normale d'autre une taille réduite ... je manque une solution triviale?



15
votes

J'espère que c'est utile. Je parviens à "simuler" la solution rétractable / cultivation avec le widget code> code>. Comme ils ont supprimé le getScale () code>, les choses obtiennent un peu compliqué. Je pense que ce n'est pas la meilleure solution du tout, mais au moins je peux vivre avec elle.

Ce que j'ai trouvé, c'est que galerie code> gère le focus extrêmement mauvais. Ainsi, la première approche consistait à ajouter un auditeur de changement de mise au point sur le imageview code> affiché, mais pas de chance là-bas. Focus est un gâchis là-bas ... en termes que, l'image sélectionnée, ce n'est pas la vue actuellement ciblée. J'ai envoyé un mail à Android-Developers Liste de diffusion à propos de certaines erreurs sur API DOC (concernant la Focussearch () CODE> METHODE et certains conteurs de focus). P>

Voici ma solution à ce problème : p>

Construisez une ressource d'animation pour "cultiver" l'image: p> xxx pré>

si vous n'obtenez pas ce que cela signifie alors vous devriez procéder à lire Ce p>

qui sera Soyez notre effet «grandir», et vous devrez l'enregistrer dans: res / anim / grow.xml code> ou quel que soit le nom, il vous suit (mais toujours dans RES / Anim Dir). P>

Vous pouvez suivre le guide de ressources de ici a> créer une galerie code> vue. Le imageadapter code> construit un imageview code> chaque fois que la galerie code> d'objet code> d'objet greveView () code>. Une solution de contournement que vous pourriez implémenter est d'ajouter une ligne à la méthode GeveView () Code> Identification d'une vue code> avec un position code>, de cette façon: p > xxx pré>

avec cette ligne ajoutée à la greveView () code> méthode du ImageAdpater code> objet, vous pouvez alors identifier sans équivoque cette vue dans un Auditeur, par exemple: p> xxx pré>

Remarque: Vous remarquerez peut-être que toutes les valeurs de l'animation et des paramètres de mise en page ont été choisis par moi à portée de main. C'est parce que je ne vais pas nettoyer le code pour vous. Et, il s'agit simplement d'une solution de contournement la mauvaise question de concentration avec ce widget ou le système d'affichage Android. Si vous alliez bien, tout ce que vous avez à faire est de définir un écouteur de changement de mise au point qui rend le Gros / rétrécir quand il a été concentré / couché. P>

J'espère que cela peut vous aider à trouver un moyen de trouver un moyen de trouver Votre problème, p>

Cordialement, P>

Nouvelle modification: c'est l'auditeur que j'ai défini, j'ai également ajouté la ligne i.clearanimation () code> dans le GeveView () Code> Méthode: P>

private class SelectListener implements AdapterView.OnItemSelectedListener {
     private Animation grow;
     private int last;

     public SelectListener() {
        grow = AnimationUtils.loadAnimation(RouteGallery.this, R.anim.grow);
        last = 0;
     }

     public void  onItemSelected  (AdapterView<?>  parent, View  v, int position, long id) {
        View sideView = parent.findViewById(last);
        if (sideView != null && last != position)
           sideView.clearAnimation();

        v.startAnimation(grow);
        last = position;
     }

    public void  onNothingSelected  (AdapterView<?>  parent) {
    }
}


1 commentaires

+1 n'a pas vu cela. Accepté comme réponse. Merci pour vos gars de temps! Très utile.



2
votes

J'ai mis en place une animation similaire comme ceci: xxx


0 commentaires