N S*_*rma 52 animation android android-activity
我正在开发一个演示应用程序,我想在应用程序启动时应用动画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 android:fromXDelta="-100%" android:toXDelta="0%"
android:fromYDelta="0%" android:toYDelta="0%"
android:duration="500"/>
</set>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我在这里开始activity这样的
startActivity(new Intent(this, LoginActivity.class));
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
Run Code Online (Sandbox Code Playgroud)
我想从右到左实现动画.如何做到这一点.
提前致谢.
Mik*_*ike 124
对动画文件进行以下修改:
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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
您将从右到左滑动您的第二个活动.
为了更好地理解如何使用动画的fromXDelta和toXDelta值,这里有一个关于值的基本说明:

通过这种方式,您可以轻松了解为什么要为当前活动添加android:fromXDelta ="0%"和android:toXDelta =" - 100%".这是因为你希望它从0%变为-100%的位置.
[编辑]
因此,如果您想从ActivityA打开ActivityB,请执行以下操作(假设您有一个按钮):
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);
}
});
Run Code Online (Sandbox Code Playgroud)
现在,如果你想拥有第一个动画的"向后"动画,当你离开活动B时,你需要2个新的动画文件和ActivityB的onBackPressed方法中的一些代码,如下所示:
首先是动画文件: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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
在ActivityB中执行以下操作:
@Override
public void onBackPressed() {
super.onBackPressed();
overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left);
}
Run Code Online (Sandbox Code Playgroud)
此外,如果您启用了导航,则在这种情况下您还必须添加动画:
您启用UP导航,如下所示:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getActionBar().setDisplayHomeAsUpEnabled(true);
}
Run Code Online (Sandbox Code Playgroud)
这就是你在这种情况下处理动画的方式:
@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);
}
Run Code Online (Sandbox Code Playgroud)
另请注意,即使您的代码没问题,您的手机也可能已关闭动画.然后再打开以下操作:
这有帮助吗?
overridePendingTransition应该在"目标"活动中调用.例如:从活动A - > B开始,您将把overridePendingTransition调用放在onCreate活动B中.
请记住,如果用户已在系统级别禁用动画,则无法强制显示动画.
编辑:
一个例子看起来像这样:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(R.anim.enter, R.anim.exit);
}
Run Code Online (Sandbox Code Playgroud)
这对我来说是完美的代码 Slideinleft
<?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"/>
Run Code Online (Sandbox Code Playgroud)
向右滑动
<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0"
android:toXDelta="-100%p"
android:duration="800"/>
Run Code Online (Sandbox Code Playgroud)
活动中
Intent intent = new Intent(getApplicationContext(),termcondionactivity.class);
Bundle bndlAnimation = ActivityOptions.makeCustomAnimation(getApplicationContext(), R.anim.slideinleft, R.anim.slideinright).toBundle();
startActivity(intent, bndlAnimation);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
47154 次 |
| 最近记录: |