2013-11-13 2 views
1

Я пытаюсь сделать приятный эффект перехода от моего списка к странице подробностей, а затем после нажатия на страницу с деталями на страницу списка. Что-то вроде:Не удается заставить слайд-анимацию работать правильно

 
    +----------+ 
    +--------+ A | All from same direction 
+------+ B | | 
| A | +--> | 
|  | | | 
|  | | | 
|  +--> | | 
+------+ | | 
    +--------+ | 
    +----------+ 


+--------+    +----------+ 
| B |---+ +----|  A | 
|  | A | | B |   | 
|  | | | |   | 
|  | | | |   | 
|  | | | |   | 
|  +---> | | |   | 
|  | | | <----+  | 
|  | | | |   | 
|  |---+ +----|   | 
+--------+    |   | 
         +----------+ 

B moves over A, then after pressing back 
A moves over B.

Первая часть хорошо работает (список> подробно), однако я подключить обратный порядок эффектов на спине действия и вид работ, но не так как я хотел бы его. Неправильная страница (страница B) берет слайд после обратного нажатия, оседает над A, а затем исчезает.

Я действительно хотел, чтобы A скользил по B после заднего давления, что имеет больше смысла.

код из списка:

lstBooks.setOnItemClickListener(new ListView.OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> adapter, View view, int position, long id) 
    { 
     Intent intent = new Intent(BooksActivity.this, DetailClass.class); 
     startActivity(intent); 
     overridePendingTransition(R.anim.left_to_right_slide, R.anim.right_to_left_slide); 
    } 
}); 

Противоположных со страницы детали:

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    overridePendingTransition(R.anim.left_to_right_slide, R.anim.right_to_left_slide); 
} 

слева направо слайд:

<?xml version="1.0" encoding="utf-8"?> 

<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="350"/> 
</set> 

справа налево слайд:

<?xml version="1.0" encoding="utf-8"?> 

<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="350" /> 
</set> 

В основном я хочу, чтобы слайд работал естественным образом в обратном направлении при нажатии.**

+0

может быть, вы хотите андроид: fromXDelta = "- 100%" андроид: toXDelta = "0%" в праве на левый слайд – mihail

+0

Не могли бы сделать их обоими одинаковыми? Я буквально хочу слева направо, а затем направо налево ... однако второй делает это с неправильной деятельностью ... – sprocket12

ответ

3

Есть 4 различных сценариев, которые будут анимированные:

  ****************** 
      *    * 
Left ==*==> Center  * 
      *    * 
      ****************** 

      ****************** 
      *    * 
      *  Center ==*==>  Right  
      *    * 
      ****************** 

      ****************** 
      *    * 
Left <==*== Center  * 
      *    * 
      ****************** 

      ****************** 
      *    * 
      *  Center <==*==  Right  
      *    * 
      ****************** 

Итак, вам необходимо определить 4 анимации:

left_to_center_slide

android:fromXDelta="-100%" 
    android:toXDelta="0%" 

center_to_right_slide

android:fromXDelta="0%" 
    android:toXDelta="100%" 

center_to_left_slide

android:fromXDelta="0%" 
    android:toXDelta="-100%" 

right_to_center_slide

android:fromXDelta="100%" 
    android:toXDelta="0%" 

И потом:

Список в деталях:

overridePendingTransition(R.anim.left_to_center_slide, 
              R.anim.center_to_right_slide); 

Детали к списку:

overridePendingTransition(R.anim.right_to_center_slide, 
              R.anim.center_to_left_slide); 
+1

Я так счастлив! : D – sprocket12

+1

Идеальный ответ –

0

Попробуйте это:

@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    overridePendingTransition(null, R.anim.right_to_left_slide); 
} 

с справа налево слайде:

<?xml version="1.0" encoding="utf-8"?> 

<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="350" /> 
</set> 
+0

Он не принимает значения null ... – sprocket12

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