Отображение активности с пользовательской анимацией
У меня есть виджет, который запускает действие при нажатии. Я бы хотел, чтобы какая-то причудливая анимация отображала эту активность, а не стандартную прокрутку справа от Android. Однако у меня проблемы с настройкой. Это то, что у меня есть:
slide_top_to_bottom.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
<translate android:fromYDelta="-100%" android:toXDelta="0" android:duration="100" />
<alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="50" />
</set>
... на который ссылается anim.xml
<?xml version="1.0" encoding="utf-8"?>
<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
android:delay="50%"
android:animation="@anim/slide_top_to_bottom" />
Но откуда я могу ссылаться? Я пробовал как базовый элемент активности, в которой я хочу вставить, так и активную запись в манифесте, оба раза с
android:layoutAnimation="@+anim/anim"
Возможно, я ошибаюсь. Любая помощь очень ценится!
Ответы
Ответ 1
Вы можете создать пользовательскую тему со ссылкой на свою собственную анимацию и применить ее к своей Деятельности в вашем файле манифеста.
Мне удалось применить пользовательскую анимацию для плавающего окна, используя следующее определение стиля. Возможно, вы сможете сделать что-то подобное, если родительский стиль вашего стиля будет "@android: style/Animation.Activity"
Посмотрите следующие файлы, чтобы получить более подробную информацию о том, что вы можете переопределить.
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml
https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/themes.xml
Здесь моя часть моих styles.xml и manifest.xml
styles.xml
<style name="MyTheme" parent="@android:style/Theme.Panel">
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">true</item>
<item name="android:windowAnimationStyle">@style/MyAnimation.Window</item>
</style>
<!-- Animations -->
<style name="MyAnimation" />
<!-- Animations for a non-full-screen window or activity. -->
<style name="MyAnimation.Window" parent="@android:style/Animation.Dialog">
<item name="android:windowEnterAnimation">@anim/grow_from_middle</item>
<item name="android:windowExitAnimation">@anim/shrink_to_middle</item>
</style>
manifest.xml
<activity
android:name="com.me.activity.MyActivity"
android:label="@string/display_name"
android:theme="@style/MyTheme">
</activity>
Ответ 2
startActivity(intent);
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);
Проверьте эту ссылку: метод overridePendingTransition
Edit:
Достижение анимации для просмотров. Вы используете метод startAnimation, как показано ниже
view.startAnimation(AnimationUtils.loadAnimation(
WidgetActivity.this,R.anim.slide_top_to_bottom));
Отметьте ссылку:
Ответ 3
Не имеет значения, что вы начали с виджета, написали учебник, чтобы вы могли анимировать свою деятельность. Эта анимация задается в рамках действия, которое вы вносите в фокус, чтобы вы могли сделать это с помощью pendingIntent.
Enjoy:
http://blog.blundell-apps.com/animate-an-activity/