2011-10-25 2 views
3

Я создаю свой собственный Android-пусковой механизм.Замена анимации активности запуска Launcher Android

Проблема заключается в том:

  • Когда я запустить деятельность, он скользит влево ...
  • Когда я закрыть, он скользит прямо ...
  • Это раздражающий и уродливый!

Я alread смог удалить запуска анимацию:

Intent launch_intent = new Intent("android.intent.action.MAIN"); 
launch_intent.addCategory("android.intent.category.LAUNCHER"); 
launch_intent.setComponent(new ComponentName(packageName, name)); 
launch_intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION); 

activity.startActivity(launch_intent); 

Моя цель состоит в том, чтобы:

  • удалить также закройте программу анимации.
  • Или измените анимацию запуска/закрытия по умолчанию.

Заранее благодарен!

+0

Мне кажется, что это контролируется приложением или самой ОС. Я не знаю, что это можно сделать без написания собственного дистрибутива Android. – Codeman

+1

Возможно [это] (http://developer.android.com/reference/android/app/Activity.html#overridePendingTransition%28int,%20int%29) может помочь? – Luksprog

ответ

5

Я ознакомился с демонстрационными версиями Android API. Как было предложено, вы должны использовать метод overridePendingTransition(), который устанавливает анимацию входящей активности и анимацию исходящей активности.
Метод Шоуда быть добавлен АВЭС startActivity() или после отделки():

Intent launch_intent = new Intent("android.intent.action.MAIN"); 
    launch_intent.addCategory("android.intent.category.LAUNCHER"); 
    launch_intent.setComponent(new ComponentName(packageName, name)); 
    activity.startActivity(launch_intent); 
    overridePendingTransition(R.anim.zoom_enter, R.anim.zoom_exit); 

Переходы являются стандартными андроид анимации, например, zoom_enter будет что-то подобное:

<set xmlns:android="http://schemas.android.com/apk/res/android" 
     android:interpolator="@android:anim/decelerate_interpolator"> 
    <scale android:fromXScale="2.0" android:toXScale="1.0" 
      android:fromYScale="2.0" android:toYScale="1.0" 
      android:pivotX="50%p" android:pivotY="50%p" 
      android:duration="@android:integer/config_mediumAnimTime" /> 
</set> 

Если вы также хотите настроить анимацию, когда ваша активность закрывается, например, когда пользователь нажимает кнопку «Назад» или «Домой», вы должны добавить переопределениеPendingTransition() к методу onPause().
Если вы хотите установить анимацию, когда ваша активность запускается каким-либо другим приложением, добавьте переопределитьPendingTransition() перед super.onCreate().

+0

Я разрабатываю пусковую установку, поэтому во многих приложениях я не могу изменить свой код. Я хочу отключить анимацию, изменяя только панель запуска. – inversus

+0

@inversus В этом случае добавьте переопределитьPendingTransition() после .startActivity(), чтобы вы получили переход, который вы хотите, когда приложение открывается с вашей панели запуска и overridePendingTransition() до вашего super.onCreate(), поэтому, когда Launcher снова появится в поле зрения, вы также получите необходимый переход. – eladrich

+0

Мне также нужно было добавить overridePendingTransition() в onResume на моем запуске! Пусковая установка никогда не уничтожается, поэтому она вызывает вызовы onCreate при загрузке. Спасибо за вашу помощь! – inversus

0

На самом деле, я также думаю, что это раздражающая анимация, поэтому я тоже хотел ее изменить ........ и я нашел ее как-то по умолчанию анимацию ......... проверьте это link ........ http: //developer.android.com/reference/android/view/animation/GridLayoutAnimationController.html , поэтому я прекратил поиск этой проблемы ....

0

Для отображения стандартной пусковой установки анимации вы должны применить конкретную тему для своей основной деятельности. Эта тема должна быть (или должна быть унаследована) от android: Theme.Wallpaper. android:theme="@android:style/Theme.Wallpaper"

Для такой темы Android Framework предоставляет определенные анимации, которые вы можете видеть для стандартной Launcher.

Смежные вопросы