2012-12-25 18 views
6

Mam LinearLayout, I am dynamically adding TextView, ImageView to that LinearLayout, teraz dodałem OnClickListener do tych widoków tekstowych i ImageView.Animacja slajdów i slajdów dla układu

Mam tablicę, która ma 10 elementów w niej, używając pętli for Otrzymuję każdą wartość i wyświetlanie, ponieważ jest to aplikacja quizu Mam kolejne i poprzednie przyciski, kiedy klikam, że wyświetlam elementy jeden po drugim z listy tablic. Now I need slide In and slide Out animation to apply to this Linear Layout.

Widziałem to:

Link 1

Link 2

a także Próbowałem to

slideIn = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideIn.setDuration(500); 
     slideOut = new TranslateAnimation(
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, -1.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f, 
       TranslateAnimation.RELATIVE_TO_PARENT, 0.0f); 

     slideOut.setDuration(500); 

, ale nie działa proszę o pomoc w tej sprawie.

EDIT:

Problem: Mam stosowane w tym celu w układzie liniowym, ale co się dzieje, jest to, że po kliknięciu na przycisk Dalej prąd pytanie będzie przesuwać w lewo i pusty ekran to będzie przesuwać się i wyświetlić obok pytanie, ale chcę, aby jak tylko obecne pytanie się pojawiło, powinno nastąpić następne pytanie.

+0

Jak zastosować tę animację do swojego widoku? –

+0

Tak, kolego, zastosowałem to do układu liniowego, ale co się dzieje, gdy kliknę na następne bieżące pytanie przesunie się w lewo i pusty ekran, wtedy pojawi się następne pytanie, ale chcę, jak tylko zostanie przesłuchane aktualne pytanie po nim powinno następować następne pytanie: – Goofy

+0

Co powiesz na używanie viewflippera i używanie animacji inanimation i out? –

Odpowiedz

3

Jeśli Twoje układy mają identyczną treść, utwórz dwa układy wewnątrz flippera. Załaduj pierwszy widok danych i pokaż go. Gdy użytkownik kliknie następny lub poprzedni, załaduje następny widok z danymi i trzyma flagę, aby pokazać, że drugi widok jest teraz widoczny i wyświetlany z animacją.

Następnie należy załadować odpowiednie widoki z danymi opartymi na wartościach flag i wywołać shownext().

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    mainFlipper = (ViewFlipper) findViewById(R.id.flipper); 
    firstLayout = (LinearLayout) findViewById(R.id.layout1); 
    secondLayout = (LinearLayout) findViewById(R.id.layout2); 


    findViewById(R.id.btnPrevious).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showPrevious(); 
     } 
    }); 

    findViewById(R.id.btnNext).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      showNext(); 
     } 
    }); 

} 

private void showNext() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_left)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_right)); 
    flip(); 
} 

private void showPrevious() { 
    mainFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_in_right)); 
    mainFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_out_left)); 
    flip(); 
} 

private void flip() { 
    if(isFirstVisible) { 
     isFirstVisible = false; 
     secondLayout.removeAllViews(); 
     secondLayout.addView(getTextView("Second")); 
    } else { 
     isFirstVisible = true; 
     firstLayout.removeAllViews(); 
     firstLayout.addView(getTextView("First")); 
    } 
    mainFlipper.showNext(); 
} 

private TextView getTextView(String txt) { 
    TextView txtView = new TextView(this); 
    txtView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); 
    txtView.setText(txt); 
    return txtView; 
} 
+0

dzięki spróbuję i wrócę do ciebie. – Goofy

+0

hej próbowałem w sposób, który powiedziałeś, ale teraz nie jestem w stanie usunąć widok, który jestem dynamicznie dodając, jeśli używam removeallviews() to animacja nie zadziała .. – Goofy

+1

Mam edytować mój post z kodem. Proszę wypróbować to –

4

Użyj tego xml w RES/Anim/

leftright.xml
To jest dla lewej do prawej animację:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shareInterpolator="false"> 
    <translate android:fromXDelta="-100%" android:toXDelta="0%" 
     android:fromYDelta="0%" android:toYDelta="0%" 
    android:duration="700"/> 
    </set> 

użyć tego w kodzie java

Handler handler = new Handler(); 
Runnable runnable = new Runnable(){ 
{ 
    public void run() 
{ 
    item[i].setInAnimation(AnimationUtils.loadAnimation(this,R.anim.leftright.xml)); 
    i=i+1; 
    handler.postDelayed(this,5000); 
} 
};handler.postDelayed(runnable,5000); 
+0

w jaki sposób zastosować animację do układu? nie mogę zastosować animacji do pojedynczego elementu, ponieważ musi najpierw uzyskać wartości z listy tablic, a następnie wyświetlić – Goofy

+0

przy następnym kliknięciu 'setContentView (R.layout.View2) 'następnie wykonaj to w swojej klasie' Intent iSecondLayout = new Intent (Activity.this, Activity.class); Activity.this.startActivity (iSecondLayout); Activity.this.overridePendingTransition (R.anim.lefttoright, R.anim.righttoleft); ' – mjosh

+0

Mam tylko jedną czynność – Goofy

Powiązane problemy