Android의 활동 전환 1.5 이상의

Android 1.5 이상의 두 활동 간 전환을 어떻게 정의 할 수 있습니까? 활동이 바래지고 싶습니다.



답변

당신은 이것을 할 수 있습니다 Activity.overridePendingTransition(). XML 리소스 파일에서 간단한 전환 애니메이션을 정의 할 수 있습니다.


답변

다음은 두 가지 활동 사이에서 부드럽게 페이드를 수행하는 코드입니다.

라는 파일 만들기 fadein.xml에을res/anim

<?xml version="1.0" encoding="utf-8"?>
<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="2000" />

라는 파일 만들기 fadeout.xml에을res/anim

<?xml version="1.0" encoding="utf-8"?>

<alpha xmlns:android="http://schemas.android.com/apk/res/android"
   android:interpolator="@android:anim/accelerate_interpolator"
   android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="2000" />

활동 A 에서 활동 B 로 페이드 하려면 다음 onCreate()활동 B 의 방법에 넣으십시오 . setContentView()나를 위해 일 하기 전에 .

overridePendingTransition(R.anim.fadein, R.anim.fadeout);

페이드가 너무 느리면 android:duration위의 xml 파일에서 더 작은 것으로 변경 하십시오.


답변

가장 쉬운 방법은 다음과 같습니다.

  1. styles.xml 파일에 애니메이션 스타일 만들기
<style name="WindowAnimationTransition">
    <item name="android:windowEnterAnimation">@android:anim/fade_in</item>
    <item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
  1. 이 스타일을 앱 테마에 추가
<style name="AppBaseTheme" parent="Theme.Material.Light.DarkActionBar">
      <item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
</style>

그게 다야 🙂


답변

예. 활동에 어떤 종류의 전환이 필요한지 OS에 알릴 수 있습니다.

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    getWindow().setWindowAnimations(ANIMATION);

    ...

}

여기서 ANIMATION은 OS에 내장 된 애니메이션을 나타내는 정수입니다.


답변

res> anim> fadein.xml 생성

<?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" />

res> anim> fadeout.xml 생성

<?xml version="1.0" encoding="utf-8"?>
    <alpha xmlns:android="http://schemas.android.com/apk/res/android"
       android:interpolator="@android:anim/accelerate_interpolator"
       android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" />

res> values> styles.xml에서

<style name="Fade">
        <item name="android:windowEnterAnimation">@anim/fadein</item>
        <item name="android:windowExitAnimation">@anim/fadeout</item>
    </style>

onCreate () 활동에서

getWindow().getAttributes().windowAnimations = R.style.Fade;


답변

기본 애니메이션 목록은 http://developer.android.com/reference/android/R.anim.html을 참조하십시오.

사실이 fade_infade_outAPI 레벨 1 위로합니다.


답변

기본 활동 애니메이션을 덮어 씁니다. API 15에서 원활하게 작동하는지 테스트합니다. 내가 사용하는 솔루션은 다음과 같습니다.

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorPrimary</item>
    <item name="android:windowAnimationStyle">@style/CustomActivityAnimation</item>

</style>

<style name="CustomActivityAnimation" parent="@android:style/Animation.Activity">
    <item name="android:activityOpenEnterAnimation">@anim/slide_in_right</item>
    <item name="android:activityOpenExitAnimation">@anim/slide_out_left</item>
    <item name="android:activityCloseEnterAnimation">@anim/slide_in_left</item>
    <item name="android:activityCloseExitAnimation">@anim/slide_out_right</item>
</style>

res 폴더 아래에 anim 폴더를 만든 다음이 네 개의 애니메이션 파일을 만듭니다.

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_in_left.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

slide_out_right.xml

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="@android:integer/config_mediumAnimTime"/>
</set>

샘플 프로젝트를 다운로드 할 수 있습니다 .

그게 다야… 🙂