I am starting an activity and would rather have a alpha fade-in for startActivity()
, and a fade-out for the finish()
. How can I go about this in the 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 и не забудьте изменить идентификатор ресурсов на постепенное исчезновение.
См. Темы на 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>