1

我试图从我的列表到详细信息页面制作一个很好的过渡效果,然后在从详细信息返回到列表页面之后。就像是:

     +----------+
   +--------+ 一个 | 都来自同一个方向
 +--------+ B | |
 | 一个 | +--> |
 | | | |
 | | | |
 | +--> | |
 +--------+ | |
   +--------+ |
     +----------+


+--------+ +----------+
| B |---+ +----| 一个 |
| | 一个 | | 乙| |
| | | | | |
| | | | | |
| | | | | |
| +---> | | | |
| | | | <----+ |
| | | | | |
| |---+ +----| |
+--------+ | |
                       +----------+

 B 在 A 上移动,然后在按下后
 A 越过 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>

基本上我希望幻灯片在向后按压时自然地朝相反的方向工作。**

4

2 回答 2

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);
于 2013-11-30T17:53:42.927 回答
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>
于 2013-11-13T15:56:08.920 回答