활동 전환에서 페이드 애니메이션을 수행하는 방법은 무엇입니까?
로고 활동과 주요 활동 사이의 전환 효과를 정리하고 있지만 활동이 사라지기 전에 맨 위로 이동하는 문제가 있습니다.
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<alpha
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0" >
</alpha>
</set>
소멸 효과 만 얻기 위해이 코드를 어떻게 개선 할 수 있습니까?
자신 만의 .xml 애니메이션 파일 을 만들어 새 애니메이션 을 페이드 Activity
인하 고 현재 페이드 아웃 할 수 있습니다 Activity
.
fade_in.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" />
fade_out.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:fillAfter="true"
android:duration="500" />
다음과 같은 코드에서 사용하십시오. (Inside your Activity
)
Intent i = new Intent(this, NewlyStartedActivity.class);
startActivity(i);
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
위의 코드는 현재 활성 상태 Activity
를 페이드 아웃하고 새로 시작된 페이드 Activity
인하여 부드러운 전환을 제공합니다.
업데이트 : @Dan J는 내장 Android 애니메이션을 사용 하면 성능이 향상 된다는 점을 지적했습니다. 실제로 테스트를 수행 한 후 실제로 그럴 것으로 나타났습니다. 내장 애니메이션으로 작업하려면 다음을 사용하십시오.
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
리소스 ID에 액세스하는 android.R
대신 참조를 참조 R
하십시오.
업데이트 : 이제 API 레벨 19에 도입 된 Transition 클래스를 사용하여 전환 을 수행하는 것이 일반적 입니다.
overridePendingTransition이 일부 모바일에서 작동하지 않거나 장치 설정에 따라 다르기 때문에 아래와 같은 onCreate 메서드에서 활동에 애니메이션을 추가 할 수도 있습니다.
View view = findViewById(android.R.id.content);
Animation mLoadAnimation = AnimationUtils.loadAnimation(getApplicationContext(), android.R.anim.fade_in);
mLoadAnimation.setDuration(2000);
view.startAnimation(mLoadAnimation);
간단하고 깔끔하기 때문에 oleynikd의 답변을 다시 게시하십시오.
Bundle bundle = ActivityOptionsCompat.makeCustomAnimation(getContext(),
android.R.anim.fade_in, android.R.anim.fade_out).toBundle();
startActivity(intent, bundle);
style.xml 파일 에서이 코드를 사용할 수도 있으므로 activity.java에 다른 내용을 작성할 필요가 없습니다.
<!-- 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/colorAccent</item>
<item name="android:windowAnimationStyle">@style/AppTheme.WindowTransition</item>
</style>
<!-- Setting window animation -->
<style name="AppTheme.WindowTransition">
<item name="android:windowEnterAnimation">@android:anim/fade_in</item>
<item name="android:windowExitAnimation">@android:anim/fade_out</item>
</style>
setContentView 바로 뒤에 아래 줄을 넣으십시오.
overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
활동에 페이드 인 및 페이드 아웃 애니메이션을 추가합니다. 애니메이션은 이미 안드로이드 시스템에서 제공되므로 다시 만들 필요가 없습니다.
도움이 되길 바랍니다 :)
참고 URL : https://stackoverflow.com/questions/18475826/how-to-perform-a-fade-animation-on-activity-transition
'Nice programing' 카테고리의 다른 글
다른 상태에 대한 이미지 버튼 배경 이미지를 설정하는 방법은 무엇입니까? (0) | 2020.10.08 |
---|---|
너비와 높이가 프로그래밍 방식으로 자동 레이아웃을 사용하는 superView와 같습니까? (0) | 2020.10.08 |
Android SDK를 찾지 못함 (Unity) (0) | 2020.10.08 |
JSF 페이지에 끊기지 않는 공백 문자를 어떻게 삽입합니까? (0) | 2020.10.08 |
60 초 내에 안정적인 firefox 연결을 얻을 수 없음 (127.0.0.1:7055) (0) | 2020.10.07 |