アクティビティを開始していますが、startActivity()
のアルファフェードインと、finish()
のフェードアウトが必要です。 Android SDKでこれを行うにはどうすればよいですか?
Finish()を実行するのと同じステートメントで、そこでもアニメーションを実行します。次に、新しいアクティビティで別のアニメーションを実行します。このコードを参照してください:
fadein.xml
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fillAfter="true">
<alpha Android:fromAlpha="1.0"
Android:toAlpha="0.0"
Android:duration="500"/> //Time in milliseconds
</set>
フィニッシュクラスで
private void finishTask() {
if("blabbla".equals("blablabla"){
finish();
runFadeInAnimation();
}
}
private void runFadeInAnimation() {
Animation a = AnimationUtils.loadAnimation(this, R.anim.fadein);
a.reset();
LinearLayout ll = (LinearLayout) findViewById(R.id.yourviewhere);
ll.clearAnimation();
ll.startAnimation(a);
}
fadeout.xml
<set xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:fillAfter="true">
<alpha Android:fromAlpha="0.0"
Android:toAlpha="1.0"
Android:duration="500"/>
</set>
新しいActivityクラスで、私が書いたrunFadeAnimationのような類似のメソッドを作成し、onCreateで実行し、リソースIDをフェードアウトに変更することを忘れないでください。
APIレベル5以降、overridePendingTransitionをすぐに呼び出して、明示的な遷移アニメーションを指定できます。
startActivity();
overridePendingTransition(R.anim.hold, R.anim.fade_in);
または
finish();
overridePendingTransition(R.anim.hold, R.anim.fade_out);
Androidのテーマを参照してください: http://developer.Android.com/guide/topics/ui/themes.html 。
themes.xml の下にAndroid:windowAnimationStyle
があり、 styles.xml でスタイルの宣言を確認できます。
実装例:
<style name="AppTheme" parent="...">
...
<item name="Android:windowAnimationStyle">@style/WindowAnimationStyle</item>
</style>
<style name="WindowAnimationStyle">
<item name="Android:windowEnterAnimation">@Android:anim/fade_in</item>
<item name="Android:windowExitAnimation">@Android:anim/fade_out</item>
</style>
overridePendingTransition
を使用します
startActivity();
overridePendingTransition(R.anim.fadein, R.anim.fadeout);
fadein.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<alpha xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:interpolator="@Android:anim/accelerate_interpolator"
Android:fromAlpha="0.0" Android:toAlpha="1.0" Android:duration="500" />
</set>
fadeout.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:Android="http://schemas.Android.com/apk/res/Android">
<alpha xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:interpolator="@Android:anim/anticipate_interpolator"
Android:fromAlpha="1.0" Android:toAlpha="0.0" Android:duration="500" />
</set>
fadeInおよびfadeOutの場合、これをsuper.onCreate(savedInstanceState)の後にのみ追加しますアクティビティクラス。他に何かを作成する必要はありません(XMLなし、animフォルダーなし、追加機能なし)。
overridePendingTransition(R.anim.abc_fade_in,R.anim.abc_fade_out);
あなたは単にコンテキストを作成し、以下のようなことをすることができます:
private Context context = this;
そしてあなたのアニメーション:-
((Activity) context).overridePendingTransition(R.anim.abc_slide_in_bottom,R.anim.abc_slide_out_bottom);
任意のアニメーションを使用できます。
アクティビティに対して常に同じ遷移アニメーションを使用する場合
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
@Override
protected void onPause() {
super.onPause();
if (isFinishing()) {
overridePendingTransition(Android.R.anim.fade_in, Android.R.anim.fade_out);
}
}