2013-05-20 21 views
28

Mam do czynienia z problemem.Rozpocznij aktywność od lewej do prawej

Mam trzy czynności i muszę rozpocząć nową aktywność z suwakiem w lewo.

Activity1 

Activity2 

Activity3 

oznacza enter image description here

po kliknięciu na przycisk nowej działalności nie powinien być wyświetlany bezpośrednio jak co android zachowanie.

Chcę, aby nowa aktywność pochodziła z prawej strony i była wyświetlana na bieżącym ekranie.

każdy może zapewnić mi wskazówki. To jest animacja lub cokolwiek innego.

+0

Rozpocznij działanie, a następnie po prostu zastosuj efekt przejścia. Sprawdź to http://www.mindfiresolutions.com/Animation-on-Switching-between-activities-1392.php A także: http://www.christianpeeters.com/android-tutorials/tutorial-activity-slide-animation/# more-483 –

+0

dzięki uprzejmości proszę włóż to we właściwy sposób, więc mogę oznaczyć jako zaakceptowany – Unknown

+0

http://stackoverflow.com/a/6056067/1168654 –

Odpowiedz

17

Rozpocznij działanie, a następnie zastosuj efekt przejścia. Aby uzyskać więcej informacji, jak postępować w tym celu, po prostu odwiedź here, a przykład kodu źródłowego odwiedź this. W przypadku każdego zapytania możesz je skomentować.

+0

Jedna rzecz, manish, muszę rozpocząć inną działalność również w tym samym czasie .. like click A A działalność muszę pokazać B, C sekwencyjnie.Co powinienem zrobić – Unknown

+0

Nie można zrobić bez jakiegokolwiek zamiaru na działalność B. Jedną z rzeczy, które możesz zrobić, to po prostu aktywność początkowa (aktywność C) w onCreate() działania B. –

+0

to bezpośrednio wyświetlająca akt C. – Unknown

3

Zadzwoń pod numer overridePendingTransition przed rozpoczęciem Drugiejktywności. Przyjmuje jako parametry dwa int enterAnim, exitAnim.

  • enterAnim jest identyfikatorem zasobu dla zasobu animacji używanego do działania przychodzącego. Użyj 0 dla braku animacji
  • exitAnim to identyfikator zasobu dla zasobu animacji używanego do wychodzącej aktywności. Użyj 0 dla braku animacji.
97

Postaram się pomóc w poniższym przykładzie:

res/anim/trans_left_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<translate 
     android:fromXDelta="100%p" 
     android:toXDelta="0" 
     android:duration="@android:integer/config_longAnimTime"/> 
</set> 

res/anim/trans_left_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromXDelta="0" 
     android:toXDelta="-100%p" 
     android:duration="@android:integer/config_longAnimTime"/> 
</set> 

res/anim/trans_right_in.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <translate 
     android:fromXDelta="-100%p" 
     android:toXDelta="0" 
     android:duration="@android:integer/config_longAnimTime"/> 
</set> 

res/anim/trans_right_out.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromXDelta="0" 
     android:toXDelta="100%p" 
     android:duration="@android:integer/config_longAnimTime"/> 
</set> 

src/Activity2

@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_traces); 
     overridePendingTransition(R.anim.trans_left_in, R.anim.trans_left_out); 
...} 

@Override 
public void onBackPressed() { 
    super.onBackPressed(); 
    overridePendingTransition(R.anim.trans_right_in, R.anim.trans_right_out); 
} 
+0

najlepsza odpowiedź +1 dzięki – Abhishek

+0

Najprostszy! Uwaga: zadzwoń do 'super.onBackPressed();' przed przesłonięciemAktualizacjaA w przeciwnym wypadku nie zadziała – WuerfelDev

+0

Długo tego szukałem :) !! przejście z Activity1 do Activity2 [left => right | left <= right] – ivanleoncz

5

Oto ona,

Intent intent=new Intent(Activity1.this,Activity2.class); 
startActivityForResult(intent,0); 
getActivity().overridePendingTransition(R.anim.righttoleft, R.anim.stable); 

A oto righttoleft.xml animacji,

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false" > 

    <translate 
      android:duration="500" 
      android:fromXDelta="-100%" 
      android:fromYDelta="0%" 
      android:toXDelta="0%" 
      android:toYDelta="0%" /> 
</set> 

i stable.xml

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="1.0" android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="500" 
     android:repeatCount="0"/> 
</set> 
+0

'Tag' brakuje w pierwszym kodzie – dmSherazi

10

Lepszym rozwiązaniem jest stworzenie styl następująco:

<style name="mytheme" parent="@android:style/Theme.Black"> 
    <item name="android:windowAnimationStyle">@style/theme</item> 
</style> 

<style name="theme"> 
    <item name="android:windowEnterAnimation">@anim/fade_in</item> 
    <item name="android:windowExitAnimation">@anim/fade_out</item> 
</style> 

Następnie zastosować ten styl do swojej aktywności w pliku manifestu pomocą androida: motyw etykietka.

+0

To było pomocne z punktu widzenia nauki. Ale praktycznie, musiałem odwrócić animację podczas cofania, czego nie zrobiłem. – chris838

Powiązane problemy