2013-09-29 3 views
0

Я хочу перевестись между двумя действиями с анимацией. Я хочу, чтобы пользователь касался изображения в верхней части страницы, изображение переводилось в нижнюю часть экрана (слайд вниз) и вид второго перемещения активности сверху вниз (слайд вниз), и это похоже на то, что движение буксировки выполняется в одно и то же время. Я не знаю, как я могу это реализовать? Я использую этот код.запускает анимацию в переводе между двумя действиями

slide_down.xml

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

<scale 
    android:duration="500" 
    android:fromXScale="1.0" 
    android:fromYScale="0.0" 
    android:interpolator="@android:anim/linear_interpolator" 
    android:toXScale="1.0" 
    android:toYScale="1.0" /> 

</set> 

мянь:

private OnTouchListener onTouchListener=new OnTouchListener(){ 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     // TODO Auto-generated method stub 
     Intent intent=new Intent(MainActivity.this,Test.class); 
     //overridePendingTransition(R.anim.slide_down, R.anim.slide_down); 
     startActivity(intent); 
     overridePendingTransition(R.anim.slide_down, R.anim.slide_down); 
     return false; 
    } 

}; 

Когда я запускаю этот код и нажмите на изображение, экран становится черным, а затем второй начинается активности, а затем анимации работает. Но я хочу анимацию, когда первая активность закрывается, вторая активность начинается в конце первой активности

ответ

1

Вы находитесь на правильном пути.

overridePendingTransition(R.anim.slide_in_top, R.anim.slide_out_bottom); 

Должен быть определен в onCreate вашей деятельности и определяет, как эта деятельность ведет себя при входе и выходе.

slide_in_top.xml:

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

<translate 
    android:duration="200" 
    android:fromYDelta="-100%" 
    android:toYDelta="0%" /> 

slide_out_bottom.xml:

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

<translate 
    android:duration="200" 
    android:fromYDelta="0%" 
    android:toYDelta="100%" /> 

Edit:

Вы хотите анимацию только для просмотра, а затем переключиться на другую активность, правильно?

@Override 
public boolean onTouch(View v, MotionEvent event) { 
    // first animate the view 
    TranslateAnimation anim = new TranslateAnimation(fromXDelta, toXDelta, fromYDelta, toYDelta) 
    anim.setDuration(duration); 
    v.startAnimation(anim); 

    new Handler().postDelayed(new Runnable() { 

     @Override 
     public void run() { 
      // wait for the duration of the animation before switching acitivity 
      // remember to apply the overridePendingTransition to them 
      // if you want a transition animation on this too 

      // overridePendingTransition added to both onCreate of Test and MainActivity 
      Intent intent=new Intent(MainActivity.this,Test.class); 
      startActivity(intent); 

     } 
    }, duration); // <-- notice the wait for animation to complete 
    return false; 
} 
+0

, но я хочу, когда пользователь прикасается к изображению, анимации и трансляции для этого, я добавляю метод overridePendingTransition() в onTouchListener. – SensorS

+0

обновленный ответ. – cYrixmorten

+0

Спасибо. Ваш ответ верен. другой вопрос: если я хочу, чтобы изображение (снизу вверх, как слайд вверх), а второй показ активности снизу вверх, как слайд вверх, Как я могу написать этот код для этого? – SensorS

Смежные вопросы