2017-08-11 50 views
0

我有自定義提醒對話框作爲活動,我想動畫當視圖出現和退出時,第一個工作(當出現),但第二個不工作,我不知道如何動畫時退出(點擊之外),如果有人能幫助我預先感謝您幻燈片動畫自定義提醒活動

public class CustomAlertActivity extends Activity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(200, 255, 0, 0))); 

     ... 

     overridePendingTransition(R.anim.slide_out_down, R.anim.slide_in_out_up); 
    } 

} 

slide_out_down.xml

<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" > 
    <translate 
     android:fromYDelta="-100%p" 
     android:toYDelta="0" 
     android:duration="1000" />" 
    /> 
</set> 

slide_in_out_up.xml

<set 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:interpolator="@android:anim/accelerate_interpolator" > 
    <translate 
     android:fromYDelta="0" 
     android:toYDelta="-100%p" 
     android:duration="1000" />" 
    /> 
</set> 

的manifest.xml

<activity android:name=".CustomAlertActivity" 
      android:theme="@android:style/Theme.Dialog"/> 

Custom alert activity

我也試試這MainActivity.class

public void onClick(View view) { 
       Intent intent = new Intent(MainActivity.this, CustomAlertActivity.class); 
       ActivityOptions options = 
         ActivityOptions.makeCustomAnimation(MainActivity.this, R.anim.slide_out_down, R.anim.slide_in_out_up); 
       startActivity(intent, options.toBundle()); 
} 

解決方案:

public class CustomAlertActivity extends Activity { 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     getWindow().setBackgroundDrawable(new ColorDrawable(Color.argb(200, 255, 0, 0))); 

      ... 

     getWindow().getAttributes().windowAnimations = R.style.CustomDialog; 
    } 

    @Override 
    public void finish() { 
     super.finish(); 
     overridePendingTransition(R.anim.slide_out_down, R.anim.slide_in_out_up); 
    } 

} 

風格.XML

<style name="CustomDialog" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowEnterAnimation">@anim/slide_out_down</item> 
     <item name="android:windowExitAnimation">@anim/slide_in_up</item> 
    </style> 

回答

0

你需要重寫你的活動結束和調用相同的方法:

@Override 
public void finish() { 
    super.finish(); 
    overridePendingTransition(R.anim.slide_out_down, R.anim.slide_in_out_up); 
} 
+0

謝謝,現在它沒有任何閃光燈。 –

+0

很高興我幫了忙。請接受答案,以便其他人可以輕鬆找到它! –

0

在styles.xml添加新的風格是這樣的:在點擊

<style name="DialogTheme"> 
    <item name="android:windowEnterAnimation">@anim/slide_out_down</item> 
    <item name="android:windowExitAnimation">@anim/slide_in_out_up</item> 
</style> 

然後調用動畫這樣的:

int style = R.style.DialogTheme 
dialog.getWindow().getAttributes().windowAnimations = style; 

希望如此,將工作如果沒有,請隨時隨意問。

+0

它的工作原理,但我把我的CustomDialogActivity.class(裏面的onCreate 「getWindow()的getAttributes()windowAnimations =的風格。」 (Bundle)方法),並且我不會爲什麼在第二個動畫之前有小閃存 –

+0

只需在動畫文件中更正它們即可。 –