我怎样才能添加一个animation完成()
我正在使用overridePendingTransition为我的活动创build时,正常工作,我可以看到淡入淡出效果很好,但是当我尝试和活动完成animation完成后,它仍然在默认的权利左滑动。
我首先尝试定义出来的animation,当我开始的活动如下:
Intent myIntent = new Intent(a, SkdyAlert.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); a.startActivity(myIntent); if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { AnimationHelper.overridePendingTransition(a, R.anim.fadein, R.anim.fadeout); }
然后当我完成这个活动的时候我也试着去做
okBtn.setOnClickListener(new OnClickListener() { public void onClick(View v) { finish(); if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.DONUT) { AnimationHelper.overridePendingTransition(activity, 0, R.anim.fadeout); } } });
但是这两种方法都不能阻止退出animation的“从右到左”滑动。 任何想法,我做错了什么?
在调用finish()之后,我重写挂起的转换。
就我而言,我已经做到了避免过渡。
finish(); Details.this.overridePendingTransition(R.anim.nothing,R.anim.nothing);
顺序是重要的:)
我使用这种方法解决了这个问题:
用animation打开:
Intent newUser = new Intent(getBaseContext(), NewUserActivity.class); startActivity(newUser); overridePendingTransition(R.anim.slide_in_right,R.anim.slide_out_left);
closuresanimation:
@Override public boolean onOptionsItemSelected(MenuItem item) { onBackPressed(); return super.onOptionsItemSelected(item); } @Override public void onBackPressed() { super.onBackPressed(); overridePendingTransition(R.anim.slide_out_right,R.anim.slide_in_right); }
finish(); overridePendingTransition(0, 0);
看看通过一个主题做到这一点。 您可以为活动或整个应用程序定义input退出animation
我build议使用isFinishing()方法来configurationonPause的animation,而不是调用finish()
@Override protected void onPause() { super.onPause(); if (isFinishing()){ overridePendingTransition(R.anim.activity_slide_in, R.anim.activity_slide_out); } }
这个问题已经回答了,但是从活动退出时放置animation的最有效的方法是覆盖相关活动的“finish()”方法:
@Override public void finish() { super.finish(); overridePendingTransition(R.anim.hold, R.anim.slide_out_bottom); }
以下是@schwiz的回答,下面是内置对话框主题的animation重写,其中我定义了本地的slide_up和slide_downanimation。 我的活动指定了主题MyDialog为了有这些转换进出。
<style name="Animation.MyDialog" parent="android:Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/slide_up</item> <item name="android:windowExitAnimation">@anim/slide_down</item> </style> <style name="Theme.MyDialog" parent="android:Theme.Dialog"> <item name="android:windowAnimationStyle">@style/Animation.MyDialog</item> </style>
使用startActivityForResult来开始您的子活动,并在您的父活动的onActivityResult()中:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode==REQUEST_YOUR_ACTIVITY) { overridePendingTransition(R.anim.parent_appearing_anim, R.anim.child_dissmissing_anim); } super.onActivityResult(requestCode, resultCode, arg2); }
if (getEnterAnimation() > -1 && getExitAnimation() > -1) { overridePendingTransition(getEnterAnimation(), getExitAnimation()); }
这些方法从R.anim.YOUR_ANIMATION_XML返回animation
在你的onCreate()之前添加这段代码
setContentView()
并在你的onPause()之前
super.onPause()
我试图在这些方法之前/之内添加此代码,但退出animation从未工作
startActivity() finish() onBackPressed()