[英]custom activity transition animation in Android
The current flow of my app is Activity A -> Activity B ->Fragment BI am trying to implement Activity transition animation. 我的应用程序的当前流程是活动A - >活动B - >片段BI尝试实现活动过渡动画。 I have read many posts on SO mentioning about using overridependingtransition() and I have implemented almost everything mentioned in these posts.
我已经阅读了许多关于使用overridependingtransition()的帖子,我已经实现了这些帖子中提到的几乎所有内容。 Somehow the animation is not working.
不知何故,动画无效。
I need this to work on Android 2.2 ie sdkversion 8 我需要这个在Android 2.2上工作,即sdkversion 8
This is the code: 这是代码:
Activity A
oncreate method
Intent detailIntent = new Intent(this, WordDetailActivity.class);
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
detailIntent.putExtra(DbAdapter.KEY_ROWID, id);
startActivity(detailIntent);
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
@Override
protected void onPause() {
super.onPause();
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
}
Activity B
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
It would be great if someone could also suggest me any alternative way to implement activity transitions upto android 2.2 如果有人也可以建议我使用任何替代方法来实现Android 2.2的活动转换,那将是很棒的
Phones that have their animation disabled in the phone settings wont show the activity transition animations... so don't count on it. 在手机设置中禁用其动画的手机不会显示活动过渡动画...所以不要指望它。
Also, you can't change these users settings. 此外,您无法更改这些用户设置。
Instead of doing it onPause()
do in onResume()
而不是
onPause()
在onResume()
做
@Override
public void onResume() {
super.onResume();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
and try using `minSdk="5" 并尝试使用`minSdk =“5”
EDIT 编辑
Try like this 试试这样吧
Activity_A.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
Activity_B.this.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
EDIT 2 编辑2
@Override
public void overridePendingTransition(int enterAnim, int exitAnim) {
super.overridePendingTransition(enterAnim, exitAnim);
Log.d(LOG_TAG, "In overridePendingTransition");
}
Check if this log is hit or not, because we don't know weather this method is called or not?(Place it inside both the A and B) 检查这个日志是否被命中,因为我们不知道这个方法被调用的天气?(把它放在A和B里面)
Also please remove detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
另请删除
detailIntent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
falg and if its hit then replace super.overridePendingTransition(enterAnim, exitAnim);
falg,如果它命中,则替换
super.overridePendingTransition(enterAnim, exitAnim);
with super.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
with
super.overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
No need to write anywhere else except after startActivity. 除startActivity之外,无需在其他任何地方写入。 write like this.
写这样的。
Intent detailIntent = new Intent(this, WordDetailActivity.class);
detailIntent.putExtra(DbAdapter.KEY_ROWID, id);
startActivity(detailIntent);
this.overridePendingTransition(android.R.anim.fade_in,android.R.anim.fade_out)
//annination indside fragment to translate fragment
getFragmentManager()
.beginTransaction()
.setCustomAnimations(R.animator.slide_in_right,
R.animator.slide_in_left_out,
R.animator.slide_in_left,
R.animator.slide_in_right_out)
.replace(R.id.linearlayout, new mFragment())
.addToBackStack("fragments")
.commit();
// add inside activity to translate activity
Intent intent = new Intent(mContext, AbcActivity.class);
startActivity(intent);
overridePendingTransition(R.anim.slide_right_in,
R.anim.slide_left_out);
// put this inside OnBackPressed
overridePendingTransition(R.anim.slide_left_in, R.anim.slide_right_out);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.