Android开发功能库总结

Android设置dialog 位置和出入动画

2019-08-21  本文已影响0人  APP福星高照

Android开发中dialog使用是很平凡的,最常用的是居中弹窗,系统默认也是如此。
实际场景底部的也很常用,如分享平台对话框
效果如图:


分享.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>
上一篇 下一篇

猜你喜欢

热点阅读