Android 如何实现从右向左动画开始活动
我正在开发一个演示应用程序,我想在应用程序启动任何Android 如何实现从右向左动画开始活动,android,animation,android-activity,Android,Animation,Android Activity,我正在开发一个演示应用程序,我想在应用程序启动任何活动时应用动画。我写了下面的代码,但这是为了从左到右动画的活动 left_to_right.xml <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false"> <translate an
活动时应用动画。我写了下面的代码,但这是为了从左到右动画的活动
left_to_right.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="500"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="100%p" />
</set>
我想实现一个从右到左的动画。如何做到这一点
提前谢谢。试试这段代码,它对我有用
从右向左滑动
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0%"
android:toXDelta="-50%" >
</translate>
</set>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-50%"
android:toXDelta="0%" >
</translate>
从左向右滑动
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<translate
xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="0%"
android:toXDelta="-50%" >
</translate>
</set>
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
android:fromXDelta="-50%"
android:toXDelta="0%" >
</translate>
对动画文件进行以下修改:
enter.xml:
<?xml version="1.0" encoding="utf-8"?>
<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>
现在,如果您想拥有第一个动画的“向后”动画,当您离开活动B时,您需要两个新的动画文件和活动B的onBackPressed方法中的一些代码,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.enter, R.anim.exit);
}
首先是动画文件:
left_to_right.xml:
<?xml version="1.0" encoding="utf-8"?>
<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>
此外,如果启用了向上导航,则在这种情况下还必须添加动画:
您可以如下方式启用向上导航:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.enter, R.anim.exit);
}
这也是在这种情况下处理动画的方式:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
// Respond to the action bar's Up/Home button
case android.R.id.home:
//NavUtils.navigateUpFromSameTask(this);
finish();
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
return true;
}
return super.onOptionsItemSelected(item);
}
还要注意,即使您的代码正常,您的手机也可能已关闭动画。要打开,请执行以下操作:
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
}
打开设置并转到开发人员选项
确保已启用(通过滑动右上角的切换按钮)
向下滚动并在“绘图”下,逐个点击这些选项:“Windows动画比例”、“过渡动画比例”和“Animator持续时间比例”
选择“动画比例1x”
这有帮助吗?应该在“目标”活动中调用overridePendingTransition
。例如:从活动A->B开始,您将把overridePendingTransition
调用放入活动B的onCreate
请记住,如果用户已在系统级别禁用动画,则无法强制显示动画
编辑:
示例如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.enter, R.anim.exit);
}
这对我来说是完美的代码 滑动左
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="100%p"
android:toXDelta="0"
android:duration="800"/>
要在整个应用程序上应用活动转换动画,我们需要遵循以下几个步骤 第一步。创建四个动画资源(向左滑入、向右滑入、向左滑出和向右滑出) 资源文件:slide\u in_left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="-100%p"
android:toXDelta="0" />
</set>
资源文件:slide\u in_right.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="500"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="100%p" />
</set>
资源文件:slide\u out\u left.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="-100%p" />
</set>
资源文件:slide\u out\u right.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="500"/>
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="100%p"
android:toXDelta="0" />
</set>
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="@android:integer/config_mediumAnimTime"
android:fromXDelta="0"
android:toXDelta="100%p" />
</set>
第二步。创建自定义样式并使用动画资源
<style name="MyCustomActivityAnimation" 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>
@动画/幻灯片在右侧
@动画/滑出左
@动画/幻灯片在左
@动画/滑出\右
第三步。将样式应用于应用程序的主题
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
<item name="android:windowAnimationStyle">@style/MyCustomActivityAnimation</item>
</style>
@样式/MyCustomActivityAnimation
第四步。将主题应用于清单中的应用程序
<application
....
android:theme="@style/AppTheme"
>
....
</application>
....
要在目标活动中编写什么来实现这一点?请参见编辑,以获取添加到活动A的示例,以及b要编写什么来启动活动和目标活动?绝对正确。我要补充一点too@Mike我们可以使用内置的android.R.anim.slide\u左移和android.R.anim.slide\u右移吗?前两个动画可以在后过渡中重复使用,只需交换它们即可@Mike@abdu试试看:)