2010-07-02 10 views
2

À l'intérieur d'une ligne ListView, j'ai une boîte (en ce moment c'est un imageview, mais je vais probablement le convertir en un objet de mise en page linéaire ou relative à un moment donné). Lorsque vous cliquez sur la case, je lance une animation d'échelle qui la fait apparaître. Cependant, une fois l'animation terminée, la boîte revient immédiatement à son état d'origine. J'aimerais que la boîte reste à la taille transformée (au moins jusqu'à ce qu'elle clique à nouveau).android croissance boîte animation

est ici xml:

<scale 
    android:fromXScale="1" android:toXScale="5" 
    android:fromYScale="1" android:toYScale="1" 
    android:pivotX="100%" android:pivotY="0%" android:fillAfter="true" 
    android:duration="600" /> 

Répondre

5

la seule façon était capable de faire ceci en changeant la largeur de la boîte sur un nouveau fil toutes les 1ms, pas joli mais il semblait être le seul moyen de maintenir les bordures de la boîte si vous venez avec une option qui utilise l'animation f/w s'il vous plaît faites-moi savoir ...

est ici le code Rohan, ne pas oublier de me donner un vote :) up

private void toggleMenu(final ViewHolder menu, final boolean doExpand) { 
    final LayoutParams params = menu.actionMenu.getLayoutParams(); 
    final int originalWidth = params.width; 

    Thread t = new Thread() { 
     @Override 
     public void run() { 
      for (int i = 0; i < 200; i++) { 
       if (doExpand) { 
        params.width = originalWidth + i; 
       } else { 
        params.width = originalWidth - i; 
       } 
       menu.actionMenu.post(new Runnable() { 

        @Override 
        public void run() { 
         menu.actionMenu.requestLayout(); 

        } 
       }); 
       try { 
        Thread.sleep(1); 
       } catch (InterruptedException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 
      } 

      menu.expandCollapseButton.post(new Runnable() { 
       @Override 
       public void run() { 
        if (doExpand) { 
         menu.expandCollapseButton 
           .setImageResource(R.drawable.monotone_arrow_right); 
        } else { 
         menu.expandCollapseButton 
           .setImageResource(R.drawable.monotone_arrow_leftpng); 
        } 

       } 
      }); 

      // menu.isExpanded = !menu.isExpanded; 
     } 
    }; 
    t.start(); 
} 
+0

Pouvez-vous s'il vous plaît fournir l'extrait de code de la façon dont vous implemente d it. je veux dire la classe entière si vous l'avez fait par programme. Moi aussi je veux mettre en œuvre la même chose et je suis coincé entre les deux. –

0
bien

je l'ai eu à travailler ... sorta. Si je fais tout cela dans le code et appelle setFillAfter, setFillBefore & setFillEnabled all = true, alors il semble fonctionner. le seul problème, c'est que le contour sur ma boîte (il a un fond dessinable avec un élément <stroke>.le rembourrage semble aussi grandir, je voudrais avoir que ne pas grandir ...