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

猜你喜欢

转载自blog.csdn.net/css33/article/details/80807288
今日推荐