【问题标题】:start activity with left to right mode以从左到右模式开始活动
【发布时间】:2013-05-20 11:14:50
【问题描述】:

我遇到了问题。

我有三个活动,我需要从左滑开始新的活动。

Activity1

Activity2

Activity3

表示

当我点击按钮时,新活动不应像 android 行为那样直接显示。

我希望新活动来自右侧并显示在当前屏幕上。

任何人都可以为我提供指导。 这是动画或其他任何东西。

【问题讨论】:

标签: android android-animation


【解决方案1】:

我将尝试通过以下示例帮助您:

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

【讨论】:

  • 最简单的!注意:在 overridePendingAnimation 之前调用super.onBackPressed(); 否则不起作用
  • 我找这个很久了:)!!从 Activity1 到 Activity2 的转换 [左 => 右 |左
  • 太棒了!谢谢!
【解决方案2】:

启动活动,然后应用过渡效果。 欲了解更多信息,请访问here 进行此操作,源代码示例请访问this。如有任何疑问,请随时发表评论。

【讨论】:

  • 一件事我需要同时开始其他活动..比如点击A活动我需要按顺序显示B、C。我应该怎么做
  • 你不能对 B 活动没有任何意图。您可以在活动 B 的 onCreate() 中启动活动(C 活动)。
  • 它直接显示行为 C.
  • 然后在 B 活动的 onStart 中使用 startActivity(C Activity) 并在开始之前使用 Thread.sleep 或其他将等待执行到下一行的东西。
  • 如果没有您编写的源代码,我将无能为力。因此,针对不同的问题提出不同的问题。在那里展示您尝试了什么以及您期待什么?
【解决方案3】:

更好的方法是创建如下样式:

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

然后使用 android:theme 标记将此样式应用于清单文件中的活动。

【讨论】:

  • 从学习的角度来看,这很有帮助。但实际上,我需要在后退时反转动画,而这并没有。
【解决方案4】:

来了,

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

这里是动画 righttoleft.xml,

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

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

【讨论】:

    【解决方案5】:

    在启动 SecondActivity 之前调用 overridePendingTransition。它将两个 int enterAnim, exitAnim 作为参数。

    • enterAnim 是用于传入活动的动画资源的资源 ID。使用 0 表示无动画
    • exitAnim 是用于传出活动的动画资源的资源 ID。使用 0 表示无动画。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2021-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2022-01-18
      • 1970-01-01
      相关资源
      最近更新 更多