Android设置dialog 位置和出入动画
2019-08-21 本文已影响0人
APP福星高照
Android开发中dialog使用是很平凡的,最常用的是居中弹窗,系统默认也是如此。
实际场景底部的也很常用,如分享平台对话框
效果如图:
![](https://img.haomeiwen.com/i8635142/f47bddd499e55f8e.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
<!--底出底进-->
<style name="dialog_bottom_top" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="android:windowExitAnimation">@anim/dialog_exit</item>
</style>
dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="100%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toYDelta="0%" />
<alpha
android:duration="300"
android:fromAlpha="0"
android:toAlpha="1" />
</set>
dialog_exit.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:duration="300"
android:fromYDelta="0%"
android:interpolator="@android:anim/accelerate_decelerate_interpolator"
android:toYDelta="100%" />
<alpha
android:duration="300"
android:fromAlpha="1"
android:toAlpha="0" />
</set>