【问题标题】:Android Left to Right slide animationAndroid 从左到右滑动动画
【发布时间】:2011-07-06 07:32:02
【问题描述】:

我有三个启动模式为单实例的活动。
使用onfling(),我左右摆动它们。

问题是当我从右向左滑动时,幻灯片过渡还可以,但是当我从左向右滑动时,我得到从右向左滑动的过渡。

我知道为什么会这样,因为我总是在发送新的意图。但是,现在我需要更改从左向右滑动的动画。

我知道有一个名为overridingTransitionPending() 的方法,但我不知道如何在 XML 中定义我的动画。

【问题讨论】:

  • 如果你不介意我问,你用什么来保持活动直到你刷卡?
  • 有点晚了,但您可以使用一个简单的 hold.xml 文件,该文件的所有增量为 0%

标签: android animation


【解决方案1】:

如果你想在“activity”启动时应用动画。然后写下面的代码。

startActivity(intent);
overridePendingTransition(R.anim.opening_anim, R.anim.closing_anim);

如果您想在“dialog”上应用动画,请先在styles.xml 文件中添加以下代码

<style name="my_style”> 
 <item 
  name="@android:windowEnterAnimation">@anim/opening_anim</item> 
 <item 
 name="@android:windowExitAnimation">@anim/closing_anim</item>
</style>

使用我在下面定义的这种风格。

final Dialog dialog = new Dialog(activity);
dialog.getWindow().getAttributes().windowAnimations = R.style.my_style;

如果您想在“view”上应用动画,请编写以下代码

txtMessage = (TextView) findViewById(R.id.txtMessage);
     
// load the animation
Animation animFadein = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation); 

// start the animation
txtMessage.startAnimation(animFadein);

下面,我提到了大部分动画.xml代码。

出现 - 让它只是出现.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:interpolator="@android:anim/accelerate_interpolator"
        android:duration="1"
           android:fromAlpha="1.0"
           android:toAlpha="1.0"/>
</set>

=============================================

让它慢慢淡入view.xml

<?xml version="1.0" encoding="UTF-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha
        android:fromAlpha="0.0"
        android:toAlpha="1.0"
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:duration="300"
        android:repeatCount="0" />
</set>

============================================

fadeout - 让它慢慢淡出 view.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="0.0"
        android:interpolator="@android:anim/accelerate_interpolator" 
        android:duration="300"
        android:repeatCount="0" />
</set>

============================================

push_down_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="-100%p" android:toYDelta="0" android:duration="400"/>
</set>

============================================

push_down_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="100%p" android:duration="400"/>
</set>

============================================

push_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="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

============================================

push_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="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

============================================

push_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="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

============================================

push_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="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

============================================

push_up_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="300"/>
    <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="300" />
</set>

============================================

push_up_out.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromYDelta="0" android:toYDelta="-100%p" android:duration="300"/>
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="300" />
</set>

============================================

rotation.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate
 xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:toDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="0" android:fillAfter="true">
</rotate>

============================================

scale_from_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="0" android:toYScale="1.0"
        android:fromXScale="0" android:toXScale="1.0" 
        android:duration="500" android:pivotX="100%"
        android:pivotY="100%" />
</set>

============================================

scale_torwards_corner.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <scale android:fromYScale="1.0" android:toYScale="0"
        android:fromXScale="1.0" android:toXScale="0" 
        android:duration="500"/>
</set>

============================================

shrink_and_rotate_a(exit).xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
    android:fromXScale="1.0" android:toXScale="0.8"
    android:fromYScale="1.0" android:toYScale="0.8"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="100"
/>
<scale
    android:fromXScale="1.0" android:toXScale="0.0"
    android:fromYScale="1.0" android:toYScale="1.0"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="150"
    android:startOffset="100"
/>

============================================

shrink_and_rotate_b(入口).xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
    android:fromXScale="0.0" android:toXScale="1.0"
    android:fromYScale="1.0" android:toYScale="1.0"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="150"
    android:startOffset="250"
/>

<scale
    android:fromXScale="0.8" android:toXScale="1.0"
    android:fromYScale="0.8" android:toYScale="1.0"
    android:pivotX="50%p" android:pivotY="50%p"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:duration="100"
    android:startOffset="400"
/>

=========================================

blink.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <alpha android:fromAlpha="0.0"
      android:toAlpha="1.0"
      android:interpolator="@android:anim/accelerate_interpolator"
      android:duration="800"
      android:repeatMode="reverse"
      android:repeatCount="infinite"/>
</set>

=========================================

ZoomIn.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <scale
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="1000"
       android:fromXScale="1"
       android:fromYScale="1"
       android:pivotX="50%"
       android:pivotY="50%"
       android:toXScale="3"
       android:toYScale="3" >
    </scale>
</set>

=========================================

ZoomOut.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <scale
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:duration="1000"
       android:fromXScale="1.0"
       android:fromYScale="1.0"
       android:pivotX="50%"
       android:pivotY="50%"
       android:toXScale="0.5"
       android:toYScale="0.5" >
    </scale>
</set>

=========================================

FadeIn.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <alpha
       android:duration="1000"
       android:fromAlpha="0.0"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:toAlpha="1.0" />
</set>

=========================================

FadeOut.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <alpha
       android:duration="1000"
       android:fromAlpha="1.0"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:toAlpha="0.0" />
</set>

=========================================

移动.xml

<?xml version="1.0" encoding="utf-8"?>
<set
   xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/linear_interpolator"
   android:fillAfter="true">
   <translate
       android:fromXDelta="0%p"
       android:toXDelta="80%p"
       android:duration="1000" />
</set>

=========================================

SlideDown.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true">
    <scale
       android:duration="800"
       android:fromXScale="1.0"
       android:fromYScale="0.0"
       android:interpolator="@android:anim/linear_interpolator"
       android:toXScale="1.0"
       android:toYScale="1.0" />
</set>

=========================================

SlideUp.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true" >
    <scale
       android:duration="800"
       android:fromXScale="1.0"
       android:fromYScale="1.0"
       android:interpolator="@android:anim/linear_interpolator"
       android:toXScale="1.0"
       android:toYScale="0.0" />
</set>

=========================================

弹跳.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
   android:fillAfter="true"
   android:interpolator="@android:anim/bounce_interpolator">
    <scale
       android:duration="800"
       android:fromXScale="1.0"
       android:fromYScale="0.0"
       android:toXScale="1.0"
       android:toYScale="1.0" />
</set>

【讨论】:

  • 我的荣幸! @VishrutMavani
  • 不错的动画合集!
  • 由于@PrinceDholakiya 的努力,我只是赞成这个答案
【解决方案2】:

对于从右到左的幻灯片

res/anim/in.xml:

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

res/anim/out.xml:

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

在活动 Java 文件中:

Intent intent = new Intent(HomeActivity.this, ActivityCapture.class);
startActivity(intent);
overridePendingTransition(R.anim.in,R.anim.out);

您可以更改 xml 文件中的持续时间,以获得更长或更短的幻灯片动画。

【讨论】:

    【解决方案3】:

    您可以覆盖您的默认活动动画。这是我使用的解决方案:

    创建一个“CustomActivityAnimation”并通过“windowAnimationStyle”将其添加到您的基本主题中。

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorPrimary</item>
        <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>
    
    </style>
    
    <style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
        <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
        <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
        <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
        <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
    </style>
    

    在res文件夹下创建anim文件夹,然后创建这四个动画文件:

    slide_in_right.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_mediumAnimTime"/>
    </set>
    

    slide_out_left.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_mediumAnimTime"/>
    </set>
    

    slide_in_left.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_mediumAnimTime"/>
    </set>
    

    slide_out_right.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_mediumAnimTime"/>
    </set>
    

    这是我的sample project in github.

    就是这样......快乐的编码:)

    【讨论】:

    • 您是否在应用清单中添加样式?我只是为您创建一个示例项目。 github.com/ShohanAhmed/… 如果它不起作用,请提供您的设备名称和它不起作用的 android 版本。谢谢
    • 三星SHV-E300S(S4韩文)安卓5.0.1版
    • 永远的最佳解决方案。
    • 这是最轻松的活动动画制作方式,点赞!
    【解决方案4】:

    如果您想要整个应用程序的转换工作,您可以创建一个rootacivity 并在您需要的活动中继承它。在根活动的 onCreate 调用 overridePendingTransition 与所需的方向。如果活动恢复,onStart 以其他方向呼叫 overridePendingTransition。在这里,我在下面给出完整的运行代码。如果我错了,请纠正我。

    在你的 anim 文件夹中创建这个 xml 文件

    anim_slide_in_left.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
        <translate
            android:duration="600"
            android:fromXDelta="100%"
            android:toXDelta="0%" >
        </translate>
    </set>
    

    anim_slide_in_right.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
        <translate
            android:duration="600"
            android:fromXDelta="-100%"
            android:toXDelta="0%" >
        </translate>
    </set>
    

    anim_slide_out_left.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
        <translate
            android:duration="600"
            android:fromXDelta="0%"
            android:toXDelta="-100%" >
        </translate>
    </set>
    

    anim_slide_out_right.xml

    <?xml version="1.0" encoding="utf-8"?>
    <set xmlns:android="http://schemas.android.com/apk/res/android" >
        <translate
            android:duration="600"
            android:fromXDelta="0%"
            android:toXDelta="100%" >
        </translate>
    </set>
    

    RootActivity

    import android.app.Activity;
    import android.os.Bundle;
    
    public class RootActivity extends Activity {
        int onStartCount = 0;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            onStartCount = 1;
            if (savedInstanceState == null) // 1st time
            {
                this.overridePendingTransition(R.anim.anim_slide_in_left,
                        R.anim.anim_slide_out_left);
            } else // already created so reverse animation
            { 
                onStartCount = 2;
            }
        }
    
        @Override
        protected void onStart() {
            // TODO Auto-generated method stub
            super.onStart();
            if (onStartCount > 1) {
                this.overridePendingTransition(R.anim.anim_slide_in_right,
                        R.anim.anim_slide_out_right);
    
            } else if (onStartCount == 1) {
                onStartCount++;
            }
    
        }
    
    }
    

    FirstActivity

    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class FirstActivity extends RootActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView tv = (TextView) findViewById(R.id.tvTitle);
            tv.setText("First Activity");
            Button bt = (Button) findViewById(R.id.buttonNext);
            bt.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(FirstActivity.this, SecondActivity.class);
                    startActivity(i);
    
                }
            });
        }
    
    }
    

    第二活动

    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class SecondActivity extends RootActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView tv = (TextView) findViewById(R.id.tvTitle);
            tv.setText("Second Activity");
            Button bt = (Button) findViewById(R.id.buttonNext);
            bt.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(SecondActivity.this, ThirdActivity.class);
                    startActivity(i);
    
                }
            });
    
        }
    
    }
    

    第三活动

    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.TextView;
    
    public class ThirdActivity extends RootActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            TextView tv = (TextView) findViewById(R.id.tvTitle);
            tv.setText("Third Activity");
            Button bt = (Button) findViewById(R.id.buttonNext);
            bt.setText("previous");
            bt.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    finish();
    
                }
            });
        }
    
    }
    

    最后 清单

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.example.transitiontest"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.example.transitiontest.FirstActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                android:name="com.example.transitiontest.SecondActivity"
                android:label="@string/app_name" >
            </activity>
            <activity
                android:name="com.example.transitiontest.ThirdActivity"
                android:label="@string/app_name" >
            </activity>
        </application>
    
    </manifest>
    

    【讨论】:

    • 我知道这是一篇很老的帖子,但是,我一辈子都无法让 onUpNavigation 加载从右到左的幻灯片动画(在创建活动之后)。每次,无论如何,它都会做从左到右的动画。有人有什么想法吗???
    • 这个解决方案可能会崩溃,我们必须使用 objectAnimator 请参考stackoverflow.com/questions/17760299/…
    • 那个答案应该是被接受的。这真的很容易理解并且效果很好
    【解决方案5】:

    如果您的 API 级别为 19+,您可以使用 translation 如上所述。 如果您的 API 级别低于 19,可以查看类似教程:http://trickyandroid.com/fragments-translate-animation/

    【讨论】:

      【解决方案6】:

      我无法使用 ViewPropertyAnimator 找到此类动画的任何解决方案。

      这是一个例子:

      布局:

      <FrameLayout
      android:id="@+id/child_view_container"
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      
          <EditText
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
              android:id="@+id/child_view"
              android:gravity="center_horizontal"
              android:layout_gravity="center_horizontal"
          />
      </FrameLayout>
      

      动画 - 从右到左并退出视图:

      final childView = findViewById(R.id.child_view);
      View containerView = findViewById(R.id.child_view_container);
      childView.animate()
        .translationXBy(-containerView.getWidth())
        .setDuration(TRANSLATION_DURATION)
        .setInterpolator(new AccelerateDecelerateInterpolator())
        .setListener(new AnimatorListenerAdapter() {
          @Override
          public void onAnimationEnd(Animator animation) {
              childView.setVisibility(View.GONE);
          }
      });
      

      动画 - 从右到左进入视图:

      final View childView = findViewById(R.id.child_view);
      View containerView = findViewById(R.id.child_view_container);
      childView.setTranslationX(containerView.getWidth());
      childView.animate()
          .translationXBy(-containerView.getWidth())
          .setDuration(TRANSLATION_DURATION)
          .setInterpolator(new AccelerateDecelerateInterpolator())
          .setListener(new AnimatorListenerAdapter() {
              @Override
              public void onAnimationStart(Animator animation) {
                  childView.setVisibility(View.VISIBLE);
              }
          });
      

      【讨论】:

      • 我可以从右到左显示吗?因为您的 Animate - 从右到左和退出视图将内容隐藏到左侧。我的目标是从右到左显示它
      【解决方案7】:

      另外,您可以这样做:

      FirstClass.this.overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
      

      而且你不需要添加任何动画xml

      【讨论】:

      • 过渡有点慢。有什么方法可以在不添加任何动画文件的情况下使其更快?
      【解决方案8】:

      res/anim/中使用这个xml

      这是从左到右的动画:

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

      这是从右到左的动画:

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

      在您的编码中使用从左到右的意图:

      this.overridePendingTransition(R.anim.animation_enter,
                         R.anim.animation_leave);
      

      在你的编码中使用从右到左的意图

      this.overridePendingTransition(R.anim.animation_leave,
                                     R.anim.animation_enter);
      

      【讨论】:

      • 我们有没有机会在 Java 中使用 android.view.animation.Animation 而不是在 XML 中定义它?我已经为我的 ViewFlipper 使用了 Animation 类,我想将它重用于 overrideTransitionPending()。
      • 我可以给动画一个图像吗?我正在解密图像并将其设置在图像视图中我想在每次投掷中更改它我希望图像设置为效果可以吗?
      • 我在我正在从事的一个爱好项目中尝试了这个,效果很好!使用基于 xml 的动画时,是否有某种方法可以在外部设置变量,如持续时间、缓动等?
      • 上面的animation_leave.xml和animation_enter.xml是哪个文件?
      • 谢谢。不过我注意到了一个问题;对于从右到左的动画,您交换了 XDelta 值。应该是 android:fromXDelta="100%" android:toXDelta="0%"
      【解决方案9】:

      制作了一个示例代码,从左、右、上和下实现相同的幻灯片效果。 (对于那些不想制作所有这些动画 xml 文件的人:))

      查看github上的代码

      【讨论】:

        猜你喜欢
        • 2021-07-05
        • 1970-01-01
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多