1. 程式人生 > >Android--對話方塊顯示和退出動畫

Android--對話方塊顯示和退出動畫

效果:對話方塊會從頂部滾到中間顯示,點選取消就會從中間滾到下方退出介面

實現:

1.在res下建立anim資料夾,然後建立兩個Animation resourse file檔案:

dialog_enter.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--從上進入到中間-->
    <translate
        android:duration="200"
        
android:fromYDelta="-100%"/> </set>

dialog_out.xml:

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!--從中間到底部退出-->
    <translate android:fromYDelta="0"
        android:toYDelta="100%"
        android:duration="200"/>
</set
>

2.在style.xml檔案裡設定對話方塊的動畫樣式:

<style name="dialog_animation" parent="android:Animation">
    <!--進入時的動畫-->
    <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
    <!--退出時的動畫-->
    <item name="@android:windowExitAnimation">@anim/dialog_out</item
> </style>

3.在Activity中建立一個dialog,dialog設定syle樣式:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode==KeyEvent.KEYCODE_BACK){
            AlertDialog dialog=new AlertDialog.Builder(this)
                    .setTitle("123")
                    .setMessage("dialog顯示和退出動畫")
                    .setPositiveButton("確認", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    })
                    .setNegativeButton("取消",null)
                    .create();

            dialog.show();
            Window window=dialog.getWindow();
            window.setGravity(Gravity.CENTER);
            window.setWindowAnimations(R.style.dialog_animation);

        }
        return super.onKeyDown(keyCode, event);
    }
}


執行報下面的錯誤:

Error: style attribute '@android:attr/windowExitAnimation' not found

解決方法:

在gradle.properties中新增 android.enableAapt2=false