效果:对话框的缩放效果。
1、动画效果文件。
dialog_enter_anim.xml
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromXScale="0" android:toXScale="1" android:fromYScale="0" android:toYScale="1" android:pivotX="50%" android:pivotY="50%" android:duration="500"/>
dialog_exit_anim.xml
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromXScale="1" android:toXScale="0" android:fromYScale="1" android:toYScale="0" android:pivotX="50%" android:pivotY="50%" android:duration="500"/>
2、自定义Dialog
package com.deepreality.danmudemo.CustomView; import android.app.Dialog; import android.content.Context; import android.view.Window; import android.view.WindowManager; import com.deepreality.danmudemo.R; public class myDialog extends Dialog { private Window window = null; public myDialog(Context context) { super(context); } public void showDialog(int layoutResID, int x, int y){ setContentView(layoutResID); windowDeploy(x, y); //设置触摸对话框意外的地方取消对话框 setCanceledOnTouchOutside(true); show(); } //设置窗口显示 public void windowDeploy(int x, int y){ window = getWindow(); //得到对话框 window.setWindowAnimations(R.style.dialogWindowAnim); //设置窗口弹出动画 window.setBackgroundDrawableResource(R.color.colorTranslate); //设置对话框背景为透明 WindowManager.LayoutParams wl = window.getAttributes(); //根据x,y坐标设置窗口需要显示的位置 wl.x = x; //x小于0左移,大于0右移 wl.y = y; //y小于0上移,大于0下移 window.setAttributes(wl); } }
其中,window.setWindowAnimations(R.style.dialogWindowAnim)是为了给对话框设置动画效果样式Style。代码如下:
<style name="dialogWindowAnim" parent="android:Animation" mce_bogus="1"> <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item> <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item> <!--边框--> <item name="android:windowFrame">@null</item> <!--是否浮现在activity之上--> <item name="android:windowIsFloating">true</item> <!--半透明--> <item name="android:windowIsTranslucent">false</item> <!--无标题--> <item name="android:windowNoTitle">true</item> <!--提示框背景(透明)--> <item name="android:windowBackground">@color/colorTranslate</item> <!--模糊--> <item name="android:backgroundDimEnabled">true</item> </style>
3、如何使用自定义的Dialog
new myDialog(mContext).showDialog(R.layout.layout_cornerdialog, 0, 0);
其中R.layout.layout_cornerdialog是对话框的布局文件。