Android DiaLog全屏设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_40543575/article/details/81289470

这里写图片描述

如图,我想要做一个类似于这样的全屏的一个UI界面,实现方式有很多
例如:dialogfragment,AlertDialog,透明的Activity等方式,不过,我的项目比较急,就选择了一个保守的方案!

 Dialog shareDialog = new Dialog(context, R.style.dialog);
        shareDialog.show();//显示弹框
    //绘制弹出的UI
        LayoutInflater inflater = LayoutInflater.from(context);
    View viewDialog = inflater.inflate(R.layout.sign_day_showdialog, null);
    //获取当前屏幕的宽高
        int width = defaultDisplay.getWidth();
        int height = defaultDisplay.getHeight();
        //设置dialog的宽高为屏幕的宽高
        ViewGroup.LayoutParams layoutParams = new ViewGroup.LayoutParams(width, height);
        shareDialog.setContentView(viewDialog, layoutParams);

注意,UI布局一定要添加上透明属性
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">
    <!--返回按钮-->
    <ImageView
        android:id="@+id/sign_share_exit"
        android:layout_width="@dimen/_66px"
        android:layout_height="@dimen/_66px"
        android:layout_alignParentRight="true"
        android:layout_marginBottom="@dimen/_20px"
        android:layout_marginRight="@dimen/_40px"
        android:layout_marginTop="@dimen/_100px"
        android:src="@mipmap/qiandao_guanbi" />
    <!--分享内容-->
    <RelativeLayout
        android:id="@+id/sign_share_background"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/placeholder"
        android:layout_below="@+id/sign_share_exit"
        android:layout_marginBottom="@dimen/base25dp"
        android:layout_marginLeft="@dimen/_75px"
        android:layout_marginRight="@dimen/_75px">

        <TextView
            android:id="@+id/share_text_today"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_marginLeft="@dimen/_30px"
            android:layout_marginTop="@dimen/_32px"
            android:text="2018/07/23"
            android:textColor="@color/white"
            android:textSize="@dimen/base15dp" />

        <TextView
            android:id="@+id/weekdays"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@id/share_text_today"
            android:layout_marginLeft="@dimen/_30px"
            android:layout_marginTop="@dimen/_20px"
            android:text="周一"
            android:textColor="@color/white"
            android:textSize="@dimen/base15dp" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:background="@color/white"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/student_icon"
                android:layout_width="@dimen/_80px"
                android:layout_height="@dimen/_80px"
                android:layout_gravity="center"
                android:layout_marginBottom="@dimen/_44px"
                android:layout_marginLeft="@dimen/_30px"
                android:layout_marginTop="@dimen/_36px"
                android:src="@mipmap/center2_head" />

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="@dimen/_20px"
                android:layout_marginTop="@dimen/_44px"
                android:layout_weight="1"
                android:orientation="vertical">

                <TextView
                    android:id="@+id/student_nickname"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="学员昵称"
                    android:textColor="@color/black"
                    android:textSize="@dimen/_22px" />

                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="在优财网校坚持签到"
                        android:textColor="@color/text_999" />

                    <TextView
                        android:id="@+id/sign_days"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="1"
                        android:textColor="@color/text_BEB"
                        android:textSize="@dimen/_32px" />

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="天"
                        android:textColor="@color/text_999" />
                </LinearLayout>
            </LinearLayout>

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical"
                android:layout_marginBottom="@dimen/_44px"
                android:layout_marginRight="@dimen/_30px"
                android:layout_marginTop="@dimen/_36px"
                android:src="@mipmap/qiandao_erweima" />
        </LinearLayout>
    </RelativeLayout>

    <LinearLayout
        android:id="@+id/placeholder"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="#474747"
        android:gravity="bottom"
        android:orientation="vertical">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="@dimen/_26px"
            android:drawableLeft="@mipmap/line"
            android:drawableRight="@mipmap/line0"
            android:text="分享到"
            android:textSize="@dimen/_28px" />


        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginBottom="@dimen/_88px"
            android:layout_marginTop="@dimen/_32px"
            android:orientation="horizontal">

            <ImageView
                android:id="@+id/share_toweixin"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_marginLeft="@dimen/_202px"
                android:src="@mipmap/qiandao_weixin" />

            <View
                android:layout_width="wrap_content"
                android:layout_height="0dp"
                android:layout_weight="1" />

            <ImageView
                android:id="@+id/share_tofriend"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_marginRight="@dimen/_202px"
                android:src="@mipmap/qiandao_pengyouquan" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

摘取一段我项目中用用到的Dialog

private Dialog bottomDialog;

 //创建dialog,同时设置dialog主题
        bottomDialog = new Dialog(context, R.style.BottomDialog);
        //绘制dialog  UI视图
        View contentView = LayoutInflater.from(context).inflate(R.layout.dialog_sharetofriend_and, null);
        //给dialog添加view
        bottomDialog.setContentView(contentView);
        //为绘制的view设置参数
        ViewGroup.LayoutParams layoutParams = contentView.getLayoutParams();
        //设置为全屏的宽
        layoutParams.width = getResources().getDisplayMetrics().widthPixels;
        contentView.setLayoutParams(layoutParams);
        //设置dialog位置
        bottomDialog.getWindow().setGravity(Gravity.BOTTOM);
        //添加进出场动画
        bottomDialog.getWindow().setWindowAnimations(R.style.BottomDialog_Animation);
        //允许点击外部退出dialog
        bottomDialog.setCanceledOnTouchOutside(true);
        //show  dialog
        bottomDialog.show();

这个BottomDialog的主题设置dialog的相关属性

  <!--底部弹框属性设置-->
    <style name="BottomDialog" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog">
        <!--无标题-->
        <item name="android:windowNoTitle">true</item>
        <!--键盘状态-->
        <item name="android:windowSoftInputMode">stateUnspecified</item>
        <!--dialog弹出时activity的背景-->
        <item name="android:windowBackground">@android:color/transparent</item>
        <!-- 浮于Activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
    </style>

这个dialog是从底部弹出的,为了交互效果,添加了动画

  <!--底部弹框动画设置-->
    <style name="BottomDialog.Animation" parent="Animation.AppCompat.Dialog">
        <item name="android:windowEnterAnimation">@anim/dialog_in_anim</item>
        <item name="android:windowExitAnimation">@anim/dialog_out_anim</item>
    </style>

底部进出的动画

dialog_in_anim.xml 由下至上

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="300"
        android:fromYDelta="100%"
        android:toYDelta="0" />
</set>

dialog_out_anim.xml 由上至下

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

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

</set>

当然,还有从顶部弹出的dialog,这里我也放上动画

bottomDialog.getWindow().setWindowAnimations(R.style.TopDialog_Animation);
  <!--顶部弹框动画设置-->
    <style name="TopDialog.Animation" parent="Animation.AppCompat.Dialog">
        <item name="android:windowEnterAnimation">@anim/dialog_toptobottom_in</item>
        <item name="android:windowExitAnimation">@anim/dialog_toptobottom_out</item>
    </style>

dialog_toptobottom_in.xml由上至下

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="300"
        android:fromYDelta="-100%"
        android:toYDelta="0" />
</set>

dialog_toptobottom_out.xml由下至上

扫描二维码关注公众号,回复: 6169854 查看本文章
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="-100%" />
</set>

没办法,项目中要的弹框太多了各种样式的都有,我目前只能这样了!

猜你喜欢

转载自blog.csdn.net/qq_40543575/article/details/81289470