如何实现从左到右的animation来启动活动
我正在研究一个演示应用程序,我想在应用程序启动任何activity
时应用animation。 我写下面的代码,但这是为了从左到右的animation活动。
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>
right_to_left.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="0%" android:fromYDelta="0%" android:toXDelta="100%" android:toYDelta="0%" /> </set>
我在这里开始一个这样的activity
startActivity(new Intent(this, LoginActivity.class)); overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
我想实现从左到右的animation。 如何做到这一点。
提前致谢。
对你的animation文件做这些修改:
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>
exit.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="0%" android:fromYDelta="0%" android:toXDelta="-100%" android:toYDelta="0%" /> </set>
你会从右到左滑动你的第二个活动。
为了更好地理解如何在animation中使用fromXDelta和toXDelta值,下面是关于值的一个非常基本的例子:
通过这种方式,您可以轻松理解为什么要为当前活动添加android:fromXDelta =“0%”和android:toXDelta =“ – 100%”。 这是因为你想要它从0%到-100%的位置。
[编辑]
所以如果你想从ActivityA中打开ActivityB,你可以做下面的事情(假设你有一个button):
button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startActivity(new Intent(ActivityA.this, ActivityB.class)); overridePendingTransition(R.anim.enter, R.anim.exit); } });
现在,如果你想有第一个“倒退”animation,当你离开Activity B时,你需要在ActivityB的onBackPressed方法中有两个新的animation文件和一些代码,像这样:
首先是animation文件: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>
right_to_left.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="0%" android:fromYDelta="0%" android:toXDelta="100%" android:toYDelta="0%" /> </set>
并在ActivityB中执行以下操作:
@Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left); }
另外,如果您启用了导航,则在这种情况下也必须添加animation:
您启用UP导航像这样:
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getActionBar().setDisplayHomeAsUpEnabled(true); }
这也是你在这种情况下如何处理animation:
@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); }
另外请注意,即使您的代码没有问题,您的手机也可能closures了animation。 要打开然后执行以下操作:
- 打开设置并转到开发人员选项
- 确保启用(通过滑动右上angular的切换button)
- 向下滚动,在绘图下方,逐个点击这些选项:Windowsanimation缩放,过渡animation缩放和animation制作时间缩放
- select“animation比例1x”
这有帮助吗?
应该在“目标”活动中调用overridePendingTransition
。 例如:从活动A – > B,你可以把overridePendingTransition
调用放在Activity的onCreate
中。
请记住,如果用户在系统级别上禁用了animation,则不能强制显示animation。
编辑:
一个例子看起来像这样:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); overridePendingTransition(R.anim.enter, R.anim.exit); }
试试这个代码,它为我工作
从右向左滑动
<?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>