2013-05-11 21 views
5

Projemde Animation ile oldukça garip bir sorun yaşıyorum. Aşağıda yayınlanan ekran görüntülerinde, Animasyon üzerine bir tür iz bırakan Totals kartını açıkça görebilirsiniz. Bu sorun 4.2.2 çalışan bir Nexus 7 stokunda tekrarlanabilir. Toplamlar kartında bir Google Asistan stili Animasyon var. Totals kartı için kabın bir Fragman olduğunu, manzara ekranındaki soldaki Menü'nin farklı bir Fragman olduğunu ve alt düğmelerin Fragmanların eklendiği Etkinlik'in bir parçası olduğunu unutmamak önemlidir.Android Animasyon eserler bırakılıyor

Landscape Screenshot

Online bir çözüm bulmak gibi olamaz

Portrait screenshot

, ben setFillAfter "doğru" ve animasyon başlangıcını mahsup çalıştılar. Düğmelerden birine basıldığında, etkinliğin altındaki düğmelerdeki ("Önceki &" Sonraki) düğmelerdeki iz kaybolur.

İşte Toplamları Parçasının onCreateView içinde kod:

final View view = inflater.inflate(R.layout.fragment_totals, 
      container, false);  

    Fonts.setRobotoThinFont(getActivity(), view); 

    final LinearLayout mContainer = (LinearLayout) 
      view.findViewById(R.id.container); 

    final View mCard = inflater 
      .inflate(R.layout.view_simpletotal, mContainer, false); 

    Animation animation = AnimationUtils.loadAnimation(getActivity(), 
      R.anim.card_animation); 

    mContainer.addView(mCard); 

    mCard.startAnimation(animation); 

    return view; 

Herhangi yardım çok takdir!

+1

Animasyon sona erdiğinde tüm etkinlik konteynerini geçersiz hale getirmeyi denediniz mi? –

+0

Bundan kurtulur, çok teşekkür ederim! Bunu "iyi uygulama" olarak değerlendiriyor mu? –

+0

Evet, resmi referanslarda gösterildiği gibi özel fragmanları daha iyi kullanmanız gerektiğini düşünüyorum (tüm parçayı canlandırıyor gibisiniz, değil mi?) Http://developer.android.com/training/animation/cardflip.html –

cevap

3

Animasyon sona erdiğinde kapsayıcı etkinliğini geçersiz kılarak kolayca temizleyebilirsiniz.

2

ViewGroup sınıfının setLayoutAnimation() yöntemini kullanmanızı öneririm. Bence size yardımcı olacak.
Örneğin, sizin parça sınıf içinde bu kodu yazabilirsiniz:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    ... 
    rootView.setLayoutAnimation(getLayoutAnimation()); 
    ... 
} 
private LayoutAnimationController getLayoutAnimation() { 
    Animation animation = new RotateAnimation(30, 0, -100, 0); 
    animation.setDuration(1000); 
    LayoutAnimationController layoutAnimationController = new LayoutAnimationController(animation); 
    return layoutAnimationController; 
} 

animasyon ne olacak bakın.

+0

Cevabınız için teşekkürler! Parçanın Parçanın İçindeki Bir Görünüm'ü canlandırıyorum ama cevabınız ilgisiz başka bir problemle bana yardımcı olabilir. Giriş için teşekkürler! –

+1

Bu örnek, tam olarak görünümler için çalışır. Bunu, istediğiniz herhangi bir ViewGroup nesnesine uygulayabilirsiniz. Örneğiniz için, Totals ayrıntılarıyla beyaz bloğu bazı ViewGroup'a yerleştirebilir ve sonra önerdiğim animasyonu uygulayabilirsiniz. Animasyon çalıştırmakla ilgili bazı sorunlar olacaksa, bu ViewGroup için MATCH_PARENT olarak düzen paramitleri yapın. Daha fazla bilgiyi burada bulabilirsiniz: [bağlantı] http://developer.android.com/reference/android/view/animation/LayoutAnimationController.html – Anatolii

İlgili konular