2013-01-03 17 views
14

Nie mogę wyświetlić animacji widoku dla zawyżonych układów. Użyłem poniższy urywek koduWyświetl animację od prawej do lewej Android

pageView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.right_to_left_anim.xml)); 

i XML

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

</set> 

jest każda rzecz mi brakuje?

Dzięki.

+0

Co otrzymasz, gdy spróbujesz uruchomić animację? – WarrenFaith

+0

Przesuwa się od lewej do prawej, a następnie od prawej do lewej podczas animowania jednego widoku. – sd33din90

+0

i chcesz, co się stanie zamiast tego? – WarrenFaith

Odpowiedz

55

Oto kod dla animacji przesuwnych do widzenia.

1)inFromRightAnimation 

    private Animation inFromRightAnimation() { 

     Animation inFromRight = new TranslateAnimation(
       Animation.RELATIVE_TO_PARENT, +1.0f, 
       Animation.RELATIVE_TO_PARENT, 0.0f, 
       Animation.RELATIVE_TO_PARENT, 0.0f, 
       Animation.RELATIVE_TO_PARENT, 0.0f); 
     inFromRight.setDuration(500); 
     inFromRight.setInterpolator(new AccelerateInterpolator()); 
     return inFromRight; 
     } 

2)outToLeftAnimation 
    private Animation outToLeftAnimation() { 
    Animation outtoLeft = new TranslateAnimation(
     Animation.RELATIVE_TO_PARENT, 0.0f, 
     Animation.RELATIVE_TO_PARENT, -1.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f); 
    outtoLeft.setDuration(500); 
    outtoLeft.setInterpolator(new AccelerateInterpolator()); 
    return outtoLeft; 
    } 

3)inFromLeftAnimation 

    private Animation inFromLeftAnimation() { 
    Animation inFromLeft = new TranslateAnimation(
     Animation.RELATIVE_TO_PARENT, -1.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f); 
    inFromLeft.setDuration(500); 
    inFromLeft.setInterpolator(new AccelerateInterpolator()); 
    return inFromLeft; 
    } 

4)outToRightAnimation 

    private Animation outToRightAnimation() { 
    Animation outtoRight = new TranslateAnimation(
     Animation.RELATIVE_TO_PARENT, 0.0f, 
     Animation.RELATIVE_TO_PARENT, +1.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f, 
     Animation.RELATIVE_TO_PARENT, 0.0f); 
    outtoRight.setDuration(500); 
    outtoRight.setInterpolator(new AccelerateInterpolator()); 
    return outtoRight; 
    } 

i teraz uruchomić animację na widoku

pageView.startAnimation(inFromRightAnimation()); 

Dzięki,

+1

ale jak uruchomić animację widoku. –

+0

yourview.startAnimation (inFromRightAnimation()); –

+0

bardzo dobra odpowiedź – Lokesh

1

Jeśli próbujesz animować widok po jego utworzeniu, musisz ustawić właściwość XML layoutAnimation lub zadzwonić pod numer setLayoutAnimation().

Jeśli chcesz, aby Twój widok wyglądał tak, jakby się poruszał, potrzebujesz TranslateAnimation; zobacz tę odpowiedź: https://stackoverflow.com/a/4214490/832776 Jeśli chcesz powtórzyć animację, zadzwoń pod numer setAnimationListener() i onAnimationEnd() po prostu uruchom animację ponownie.

Jeśli próbujesz przesunąć widok na stałe, patrz poniżej: http://www.clingmarks.com/how-to-permanently-move-view-with-animation-effect-in-android/400

1

wiem, że już zaakceptowane odpowiedź. Ale myślę, że ta odpowiedź będzie pomocna dla kogoś, kto to czyta. Możesz spróbować usunąć .xml z, pageView.startAnimation(AnimationUtils.loadAnimation(this,R.anim.right_to_left_anim.xml));

Powiązane problemy