android 动画效果 translate 详解,包括 Dialog 上方弹出,底部弹出,中间弹出

先给出动画效果代码,可以直接拿去用:

1.上方弹出:

滑入动画( actionsheet_dialog_in):

滑出动画(actionsheet_dialog_out):

2.底部弹出:

滑入动画:

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

滑出动画:

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

以上是动画效果,下面是解析:

1.首先了解下手机屏幕的坐标系,左上角为原点(如下图),往右是 X 轴正方向,往下是 Y 轴正方向;

android 动画效果 translate 详解,包括 Dialog 上方弹出,底部弹出,中间弹出_第1张图片

2.其次了解 translate 的内部三个属性:

fromXDelta , fromYDelta 起始时 X ,Y 座标,屏幕右下角的座标是 X : 320 ,Y : 480

toXDelta ,toYDelta 动画结束时 X , Y 的座标

duration 是动画的时间,单位为毫秒 

在这些属性里面还可以加上%和p,例如:
android:toXDelta="100%",表示自身的100%,也就是从View自己的位置开始。

android:toXDelta="80%p",表示父层View的80%,是以它父层View为参照的。

 

到此为止, 对translate应该有简单的了解并且可以写出一些简单的动画效果。下面给出三种动画效果应用到 dialog 的 style 中的代码:

   
   
   
   

actionsheet_dialog_in 和 actionsheet_dialog_out 分别为划入划出的动画效果,里面改为自己想要的动画样式即可,

不加动画效果是默认为从中间弹出;

下面是自定义dialog的代码(直接在 onCreateView 方法中调用即可,从上方弹出为 wlp.gravity = Gravity.TOP; 

从下方弹出改为 wlp.gravity = Gravity.BOTTOM; 从中间弹出改为 wlp.gravity = Gravity.CENTER; )

    private Dialog dialog;

    private View inflate;

    ...(中间无关代码省略)

    //自定义dialog

    private void showDialog() {
        dialog = new Dialog(getActivity(),R.style.DialogStyle);
        inflate = LayoutInflater.from(getActivity()).inflate(R.layout.show_dialog,null);
        //弹窗点击周围空白处弹出层自动消失弹窗消失(false时为点击周围空白处弹出层不自动消失)
        dialog.setCanceledOnTouchOutside(true);
        dialog.setContentView(inflate);
        Window window = dialog.getWindow();
        WindowManager.LayoutParams wlp = window.getAttributes();
        wlp.gravity = Gravity.TOP;
        wlp.width = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(wlp);
        dialog.show();//显示dialog

    }

 

更多好内容戳下面:

https://blog.csdn.net/wuqingsen1

你可能感兴趣的:(动画效果)