Android - Анимация затухания для заставки - PullRequest
10 голосов
/ 13 октября 2010

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

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

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

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

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

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

OR

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>

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

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

Ответы [ 3 ]

2 голосов
/ 08 декабря 2010

SWDeveloper,

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

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

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

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

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

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

Удачи!

2 голосов
/ 11 января 2011

Если вы используете отдельную активность для заставки, вы можете выполнить вызов 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
}

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

2 голосов
/ 06 декабря 2010

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

@android:style/Theme.Translucent
...