Android笔记之为自定义对话框添加移动动画效果

给底部的对话框添加移动动画效果

可通过Window.setWindowAnimations(int resId)设置

SharingDialog.java

package com.bu_ish.sharing_dialog_example;

import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.WindowManager;
import android.widget.Toast;

public class SharingDialog extends Dialog {
    public SharingDialog(Context context) {
        super(context, R.style.SharingDialog);
        setCanceledOnTouchOutside(false);
        setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                Toast.makeText(getContext(), "已取消", Toast.LENGTH_SHORT).show();
            }
        });
        getWindow().setWindowAnimations(R.style.SharingDialogAnimation);
    }

    @Override
    public void show() {
        super.show();
        WindowManager.LayoutParams layoutParams = getWindow().getAttributes();
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        layoutParams.gravity = Gravity.BOTTOM;
        getWindow().setAttributes(layoutParams);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_sharing);
        findViewById(R.id.cancelTextView).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cancel();
            }
        });
    }
}

动画style

    <style name="SharingDialogAnimation" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/sharing_dialog_show_animation</item>
        <item name="android:windowExitAnimation">@anim/sharing_dialog_dismiss_animation</item>
    </style>

对话框显示动画

sharing_dialog_show_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromYDelta="100%p"
        android:toYDelta="0" />
</set>

对话框关闭动画

sharing_dialog_dismiss_animation.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="500"
        android:fromYDelta="0"
        android:toYDelta="100%p" />
</set>

P.S.

translate用于设置移动动画效果

完整Demo链接:https://pan.baidu.com/s/1hnFYo8i3SId8e3Ag0jKM3w,提取码:wgcr

SharingDialog

猜你喜欢

转载自www.cnblogs.com/buyishi/p/10455861.html