Отображение активности с пользовательской анимацией

У меня есть виджет, который запускает действие при нажатии. Я хотел бы иметь какую-то причудливую анимацию для отображения этой активности, а не стандартную прокрутку 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"

Я могу делать все это неправильно. Любая помощь высоко ценится!


person blork    schedule 21.06.2010    source источник


Ответы (3)


Вы можете создать пользовательскую тему со ссылкой на свою собственную анимацию и применить ее к своей деятельности в файле манифеста. Мне удалось применить пользовательскую анимацию для плавающего окна, используя следующее определение стиля. Возможно, вы сможете сделать что-то подобное, если установите родителем своего стиля значение «@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

Вот часть моих стилей.xml и manifest.xml

стили.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> 

Манифест.xml

    <activity
        android:name="com.me.activity.MyActivity"
        android:label="@string/display_name"
        android:theme="@style/MyTheme">
    </activity>
person Akos Cz    schedule 20.11.2010
comment
Спасибо, это сделало мой день! Пустой <style name="MyAnimation" /> кажется избыточным (т.е. у меня работает без этого бита). - person Thomas; 29.01.2011

startActivity(intent);
overridePendingTransition(R.anim.slide_top_to_bottom, R.anim.hold);

Проверьте эту ссылку: метод overridePendingTransition

Редактировать:

Чтобы добиться анимации для просмотров. Вы использовали метод startAnimation, как показано ниже.

view.startAnimation(AnimationUtils.loadAnimation(
                 WidgetActivity.this,R.anim.slide_top_to_bottom));

Проверьте эту ссылку. :

person Praveen    schedule 21.06.2010
comment
Я запускаю активность из виджета, поэтому у меня нет startActivity(), а есть setOnClickPendingIntent(). Где бы я мог вызвать overridePendingTransition()? Редактировать: это также для 2.0 и выше, я ориентируюсь на 1.6+ - person blork; 21.06.2010
comment
Запустить метод анимации. мы должны использовать. Проверьте АпиДемос. Это помогает. - person Praveen; 22.06.2010

Неважно, что вы начинаете с виджета, написали учебник, чтобы вы могли анимировать свою деятельность. Эта анимация устанавливается в рамках активности, которую вы фокусируете, поэтому вы можете сделать это и с pendingIntent.

Наслаждаться:

http://blog.blundellapps.co.uk/animate-an-activity/< /а>

person Blundell    schedule 09.02.2012