android自定义带入场出场动画dialog

先上效果图

android自定义带入场出场动画dialog_第1张图片

res文件夹下建一个anim文件夹,然后anim文件夹下建这俩xml:dialog_in.xml和dialog_out.xml

dialog_in.xml

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillEnabled="true"
    android:shareInterpolator="true"
    android:interpolator="@android:anim/accelerate_interpolator">
    
    
    
            android:fromXScale="1.0"
        android:toXScale="1.0"
        android:fromYScale="0.0"
        android:toYScale="1.0"
        android:pivotX="0%"
        android:pivotY="100%"
        android:duration="1000"/>
dialog_out.xml

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    android:fillAfter="true"
    android:fillEnabled="true"
    android:shareInterpolator="true"
    android:interpolator="@android:anim/bounce_interpolator">
    
    
    
    
    
            android:duration="1000"
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="0%"
        android:pivotY="100%"
        android:toXScale="1.0"
        android:toYScale="0.0" />

value文件夹下styles.xml里面加上俩:





color里面加上一个半透明背景色:

name="bantouming">#0ef8fdf8

接下来就是dialog的布局:my_dialog.xml

xml version="1.0" encoding="utf-8"?>
xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

            android:layout_width="260dp"
        android:layout_height="200dp"
        android:gravity="center_horizontal"
        android:orientation="vertical"
        android:padding="10dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true"
        android:background="@android:color/white"
        >


                    android:layout_width="match_parent"
            android:layout_height="30dp"
            android:orientation="horizontal">
                            android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:text="点击右边小图标退出"
                android:gravity="center_vertical"/>


                            android:id="@+id/exit_img"
                android:layout_width="30dp"
                android:layout_height="match_parent"
                android:src="@mipmap/ic_launcher"/>
        
                    android:layout_width="match_parent"
            android:layout_height="100dp"
            android:src="@mipmap/ic_launcher"/>


        

再就是重写dialog类:MyDialog.class
/**
 * 自定义对话框
 */
public class MyDialog extends Dialog {
    private Button quedingBtn;                  //确定按钮
    private ImageView exitImg;                  //退出按钮
    //接口的实例
    private OnQudingListener qudingListener;    //确定监听实例
    private OnExitListener onExitListener;      //退出监听实例
    Context context;

    public MyDialog(Context context) {
        //关联style
        super(context, R.style.MyReasonDialog);
        Window window = getWindow();
        //设置动画效果
        window.setWindowAnimations(R.style.MyReasonDialogAnim);
        this.context = context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //关联布局样式
        setContentView(R.layout.my_dialog);
        //按空白处不能取消动画  
        setCanceledOnTouchOutside(false);
        setCancelable(false);
        //初始化界面控件
        initView();
        //初始化界面数据  
        initEvent();
    }

    /**
     * 初始化界面控件的显示数据
     */
    private void initEvent() {
        quedingBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                qudingListener.qudingclick();
            }
        });
        exitImg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onExitListener.exitclick();
            }
        });
    }

    /**
     * 确定实例赋值
     */
    public void setquedingclickListener(OnQudingListener onQudingListener) {
        qudingListener = onQudingListener;
    }

    /**
     * 退出实例赋值
     */
    public void setexitListener(OnExitListener onExitListener) {
        this.onExitListener = onExitListener;
    }

    /**
     * 初始化界面控件
     */
    private void initView() {
        exitImg = (ImageView) findViewById(R.id.exit_img);
        quedingBtn = (Button) findViewById(R.id.queding_btn);
    }

    /**
     * 确定钮接口
     */
    public interface OnQudingListener {
        void qudingclick();
    }

    /**
     * 退出钮接口
     */
    public interface OnExitListener {
        void exitclick();
    }

}  

使用方法MainActivity中:
 final MyDialog myDialog=new MyDialog(MainActivity.this);
        myDialog.setquedingclickListener(new MyDialog.OnQudingListener() {
            @Override
            public void qudingclick() {
                Toast.makeText(MainActivity.this,"我最帅~~~",Toast.LENGTH_SHORT).show();
                myDialog.dismiss();
            }
        });
        myDialog.setexitListener(new MyDialog.OnExitListener() {
            @Override
            public void exitclick() {
                myDialog.dismiss();
            }
        });
        myDialog.show();
    }
});
大功告成!!!

你可能感兴趣的:(功能块)