Android - анимация Fadeout для заставки

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

Вот коды, которые я пробовал.

overridePendingTransition(R.anim.fade_in, R.anim.fade_out);

Но вышеприведенное может использоваться только из 2.0. Приложение Ny должно поддерживать от 1.5.

Итак, для моей основной деятельности была настроена следующая анимация.

getWindow().setWindowAnimations(android.R.style.Animation_Toast);

ИЛИ

getWindow().setWindowAnimations(R.style.Theme_FadeIn);

My Theme.FadeIn содержит

<style name="Theme.FadeIn">
<item name="android:windowNoTitle">true</item>
<item name="android:activityOpenEnterAnimation">@anim/fade_in</item>   
</style>

Теперь я вижу эффект fadein, но я вижу черный экран.

Как получить эффект fadein или fadeout без черного экрана.

Ответ 1

Вы можете попытаться сделать свою деятельность полупрозрачной... взгляните на полупрозрачную тему в sdk

@android:style/Theme.Translucent

Ответ 2

SWDeveloper,

Хотя прошло уже год с тех пор, как я сам разработал Android-разработки, я помню, как я столкнулся с этой проблемой с моим собственным заставным экраном.

К сожалению, для выпусков до 2.0 я вполне уверен, что тип перехода, который вы хотите, невозможен между действиями. То есть, в версии 1.5/1.6 между действиями могут использоваться только встроенные анимации перехода.

С учетом сказанного, похоже, я вспоминаю, что я использовал анимацию перехода в рамках данной деятельности для создания такого эффекта, который я искал. Другими словами, в моей активности заставки затухают исходное представление только до пустого белого представления перед переходом к следующему действию. Затем следующее действие начнется с чистого белого представления, а затем исчезнет в фактическом виде активности.

Если это похоже на большую работу, вы также можете просто включить свой экран заставки в свою начальную деятельность и всегда представлять его сначала, а затем исчезать. Все в рамках одной и той же деятельности. Использование этого метода, вероятно, сэкономит вам время и работу, но потеряет часть модульности, которая будет разделять ваши экраны на отдельные действия.

Анимация между представлениями может быть достигнута (если я правильно помню) через виджет ViewFlipper. Андроидные документы для него можно найти здесь: http://developer.android.com/reference/android/widget/ViewFlipper.html

Если я могу получить базу кода приложения, которое я написал, я попытаюсь опубликовать пример позже.

Удачи!

Ответ 3

Если вы используете отдельное действие для своего заставки, вы можете сделать вызов overridePendingTransition, который вы отметили, доступен только в Android 2+. Вы можете выбрать приложения, созданные для 2+, если переход и предыдущие версии просто выполняют переход по умолчанию:

try {
    Method method = Activity.class.getMethod("overridePendingTransition", new Class[]{int.class, int.class});
    method.invoke(youractivity, inanimation, outanimation);
} catch (Exception e) {
    // Can't change animation, so do nothing
}

Лучше всего, чтобы ваш заставку являлся частью вашей основной деятельности (см. этот пример). Когда заставка является частью вашего основного действия, вы можете просто назначить анимацию макету заставки.