美文网首页
仿 58 同城的退出动画

仿 58 同城的退出动画

作者: Yue_Q | 来源:发表于2018-10-12 20:38 被阅读0次

    一 实例说明

    实例说明.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

    相关文章

      网友评论

          本文标题:仿 58 同城的退出动画

          本文链接:https://www.haomeiwen.com/subject/ivggaftx.html