仿 58 同城的退出动画

2018-10-12  本文已影响0人  Yue_Q

一 实例说明

实例说明.png

二 实现步骤

   1. 在 app\res 下面新建一个 anim 文件
   2. 在 anim 下创建 XML 文件。
   3. 重写 onKeyDown() 方法,该方法判断是否单击 “返回” 按钮,如果单击则显示带动画效果的对话框。

dialog_enter.xml 文件

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromXDelta="-100%"
    android:fromYDelta="-100%">
</translate>

dialog_exit.xml 文件

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:toXDelta="100%"
    android:toYDelta="100%"
    android:fromYDelta="0">
</translate>

MainActivity

  @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK){
            //创建对话框
            AlertDialog dlg = new AlertDialog.Builder(this).create();
            dlg.show();                         //显示对话框
            Window window = dlg.getWindow();    //获取对话框窗口
            window.setGravity(Gravity.CENTER);  //设置对话框中心位置
            window.setWindowAnimations(R.style.mystyle);    //添加动画
            window.setContentView(R.layout.dialog_layout);  //设置对话框布局
            button = window.findViewById(R.id.dialog_button);//点击事件
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Log.d("MainActivity", "onClick: ");
                }
            });

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

translate 位置转移动画效果
整型值:
fromXDelta 属性为动画起始时 X坐标上的位置
toXDelta 属性为动画结束时 X坐标上的位置
fromYDelta 属性为动画起始时 Y坐标上的位置
toYDelta 属性为动画结束时 Y坐标上的位置
注意:
没有指定,
默认是以自己为相对参照物
长整型值:
duration 属性为动画持续时间
说明: 时间以毫秒为单位
在这些属性里面还可以加上%和p,例如:
android:toXDelta="100%",表示自身的100%,也就是从View自己的位置开始。
android:toXDelta="80%p",表示父层View的80%,是以它父层View为参照的。

image.png
上一篇下一篇

猜你喜欢

热点阅读