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 파일에서 더 작은 것으로 변경 하십시오.
답변
가장 쉬운 방법은 다음과 같습니다.
- styles.xml 파일에 애니메이션 스타일 만들기
<style name="WindowAnimationTransition"> <item name="android:windowEnterAnimation">@android:anim/fade_in</item> <item name="android:windowExitAnimation">@android:anim/fade_out</item> </style>
- 이 스타일을 앱 테마에 추가
<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_in
및 fade_out
API 레벨 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>
샘플 프로젝트를 다운로드 할 수 있습니다 .
그게 다야… 🙂