android设置dialog动画,Android设置dialog 位置和出入动画

Android开发中dialog使用是很平凡的,最常用的是居中弹窗,系统默认也是如此。

实际场景底部的也很常用,如分享平台对话框

效果如图:

74abfe94d5b2

分享.jpeg

代码如下

ShareDialog.java

public ShareDialog(Context context) {

super(context, 0);

setContentView(R.layout.dialog_share); //布局文件

mActivity = (Activity) context;

Window window = getWindow();

WindowManager.LayoutParams params = window.getAttributes();

//dialog显示位置,不设置默认居中

window.setGravity(Gravity.BOTTOM);

window.setBackgroundDrawableResource(android.R.color.transparent);

params.width = getScreenWidth(context);

params.height = WindowManager.LayoutParams.WRAP_CONTENT;

//显示动画,从底部往上

params.windowAnimations = R.style.dialog_bottom_top;

getWindow().setAttributes(params);

}

public static int getScreenWidth(Context context) {

WindowManager wm = (WindowManager)context.getSystemService("window");

DisplayMetrics outMetrics = new DisplayMetrics();

wm.getDefaultDisplay().getMetrics(outMetrics);

return outMetrics.widthPixels;

}

styles.xml

@anim/dialog_enter

@anim/dialog_exit

dialog_enter.xml

android:duration="300"

android:fromYDelta="100%"

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:toYDelta="0%" />

android:duration="300"

android:fromAlpha="0"

android:toAlpha="1" />

dialog_exit.xml

android:duration="300"

android:fromYDelta="0%"

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:toYDelta="100%" />

android:duration="300"

android:fromAlpha="1"

android:toAlpha="0" />