itsource

안드로이드에서 애니메이션 없이 활동을 전환하는 방법?

mycopycode 2023. 10. 29. 19:43
반응형

안드로이드에서 애니메이션 없이 활동을 전환하는 방법?

인텐트 플래그를 제대로 사용하려면 어떻게 해야 합니까?FLAG_ACTIVITY_NO_ANIMATIONAndroid Manifest 파일에 저장되어 있습니까?저는 제 문제가 사소한 것이라고 생각하지만, 그것에 대한 좋은 예나 해결책을 찾을 수 없습니다.

    <intent-filter>
        <data android:name="android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION" />
    </intent-filter>

그러나 컴파일러에 의해 오류가 보고되지는 않지만,data정확하지 않습니다.활동 간 전환 시 애니메이션을 비활성화하고 싶습니다.사용할 수 있습니다getWindow().setWindowAnimations(0);create나 resume에서 하는 것이 낫지만 플래그를 사용하는 것이 더 좋은 방법이 아닐까요?

코드에서도 사용할 수 있습니다.

    Intent intent = new Intent(v.getContext(), newactivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
    getContext().startActivity(intent);

하지만 저는 안드로이드 매니페스트에서 이 깃발을 사용하고 싶습니다.두 번째 활동에서 첫 번째 활동으로 돌아오는 경우에도 애니메이션을 비활성화합니다.

스타일을 만들 수 있고,

 <style name="noAnimTheme" parent="android:Theme">
   <item name="android:windowAnimationStyle">@null</item>
</style>

그리고 그것을 매니페스트에서 당신의 활동에 대한 주제로 설정합니다.

   <activity android:name=".ui.ArticlesActivity" android:theme="@style/noAnimTheme">
    </activity>

스타일을 정의하여 사용자 정의 진입 및 종료 애니메이션을 지정할 수도 있습니다.http://developer.android.com/reference/android/R.attr.html#windowEnterAnimation

컨텍스트가 작업인 경우 overridePendingTransition:

다음에 수행할 명시적 전환 애니메이션을 지정하려면 startActivity(Intent) 또는 finish의 맛 중 하나가 끝나면 바로 호출합니다.

프로그래밍 방식으로:

this.startActivity(new Intent(v.getContext(), newactivity.class));
this.overridePendingTransition(0, 0);

이 코드를 사용해 보세요.

this.startActivity(new Intent(v.getContext(), newactivity.class).addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION));

전환하지 않으려는 모든 작업에서 이 작업을 수행할 수도 있습니다.

@Override
public void onPause() {
    super.onPause();
    overridePendingTransition(0, 0);
}

저는 이 접근법이 마음에 듭니다. 왜냐하면 당신이 당신의 활동 스타일을 엉망으로 만들지 않아도 되기 때문입니다.

테마 스타일의 선은 잘 작동하지만 애니메이션을 흰색 화면으로 대체합니다.특히 느린 폰에서는 정말 짜증납니다.따라서 즉시 전환을 원할 경우 테마 스타일에서 이를 사용할 수 있습니다.

<item name="android:windowAnimationStyle">@null</item>
<item name="android:windowDisablePreview">true</item>

다음은 한 가지 비용으로 작동하는 원-라이너 솔루션입니다.minSdkVersion 14당신이 당신 안에 삽입해야 할 것.res/styles.xml:

<item name="android:windowAnimationStyle">@null</item>

다음과 같습니다.

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        ...
        <item name="android:windowAnimationStyle">@null</item>
    </style>
    ...
</resources>

건배!

의도를 시작한 후 이 코드를 사용할 수 있습니다.

Intent intent = new Intent(Activity1.this, Activity2.class);
overridePendingTransition(0, 0);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);

사용할 경우 애니메이션이나 전환 없이 의도가 작동합니다.

사용 예시나 사용 방법에 대한 설명이 아닙니다.FLAG_ACTIVITY_NO_ANIMATION, 그러나 그것은 어떻게 그것을 비활성화 할 수 있는지에 대한 답을 합니다.Activity애니메이션 전환, 질문 제목:

안드로이드, 새로운 활동 시작 시 '와이프' 효과 비활성화하는 방법?

Android:테마를 재정의하는 자신만의 스타일 만들기

<style name="noAnimationStyle" parent="android:Theme">
    <item name="android:windowAnimationStyle">@null</item>
</style>

그런 다음 매니페스트에 사용합니다.

<activity android:name=".MainActivity"
    android:theme="@style/noAnimationStyle">
</activity>

언급URL : https://stackoverflow.com/questions/6972295/how-to-switch-activity-without-animation-in-android

반응형