【问题标题】:Cannot get slide animation to work right无法让幻灯片动画正常工作
【发布时间】:2013-11-26 07:36:06
【问题描述】:

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

+----------+ +--------+ 一个 |都来自同一个方向 +--------+ B | | |一个 | +--> | | | | | | | | | | +--> | | +--------+ | | +--------+ | +----------+ +--------+ +----------+ | 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>

基本上我希望幻灯片在按回时向相反方向自然工作。 **

【问题讨论】:

  • 也许你想要 android:fromXDelta="-100%" android:toXDelta="0%" 在从右到左的幻灯片
  • 不会让他们两个一样吗?我真的想从左到右,然后从右到左......但是第二个是在做错误的活动......

标签: android animation styles transition slide


【解决方案1】:

有 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);

【讨论】:

    【解决方案2】:

    试试这个:

    @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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-22
      • 2014-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多