Android之底部弹出框 Dialog

1、效果图:

2、定义dialog属性样式

    <!-- Dialog 样式-->
    <style name="dialogStyle" parent="@android:style/Theme.Holo.Dialog">
        <!-- 是否有边框 -->
        <item name="android:windowFrame">@null</item>
        <!--是否在悬浮Activity之上  -->
        <item name="android:windowIsFloating">true</item>
        <!-- 标题 -->
        <item name="android:windowNoTitle">true</item>
        <!--阴影  -->
        <item name="android:windowIsTranslucent">true</item><!--半透明-->
        <!--背景透明-->
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

3.底部弹出框--弹出动画

   3.1、res下创建anim,如下

 3.2、创建弹出,退出动画效果属性文件

     3.2.1、dialog_pop_up

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

  3.2.2、dialog_exit

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

3.2.3、样式引用

 <!--弹出框 动画-->
    <style name="dialog_share" parent="android:Animation">
        <item name="android:windowEnterAnimation">@anim/dialog_pop_up</item>
        <item name="android:windowExitAnimation">@anim/dialog_exit</item>
    </style>

4、创建dialog布局文件  dialog_retrieve_password

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:orientation="vertical">
    
    <TextView
        android:id="@+id/dialog_regist"
        android:text="找回密码"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="55dp" />
    
    <!--分割线-->
    <View
        android:background="#DCDCDC"
        android:layout_width="wrap_content"
        android:layout_height="1dp"/>

    <TextView
        android:id="@+id/dialog_Message"
        android:text="短信验证登录"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="55dp" />

    <View
        android:background="#DCDCDC"
        android:layout_width="wrap_content"
        android:layout_height="10dp"/>

    <TextView
        android:id="@+id/dialog_cancel"
        android:text="取消"
        android:textSize="18sp"
        android:gravity="center"
        android:layout_width="match_parent"
        android:layout_height="58dp" />

</LinearLayout>

5、代码调用,showDialog()

  5.1、调用

        case R.id.login_forgot:                 //忘记密码  弹出底部弹出框
                showDialog();
                break;

  5.2、 弹出

    /**
     * 底部弹出框
     */
    private void showDialog() {
        if (mDialog ==null){
            initShareDialog();
        }
       mDialog.show();
    }

5.3、初始化

    /**
     * dialog 初始化
     */
    private void initShareDialog() {
        mDialog = new Dialog(this, R.style.dialogStyle);
        mDialog.setCanceledOnTouchOutside(true);
        mDialog.setCancelable(true);            //点击框外,框退出
        Window window = mDialog.getWindow();
        window.setGravity(Gravity.BOTTOM);      //位于底部
        window.setWindowAnimations(R.style.dialog_share);    //弹出动画
        View inflate = View.inflate(this, R.layout.dialog_retrieve_password, null);
        inflate.findViewById(R.id.dialog_cancel).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (mDialog != null && mDialog.isShowing()){
                    mDialog.dismiss();      //消失,退出
                }
            }
        });
        window.setContentView(inflate);
        //横向充满
        window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,WindowManager.LayoutParams.WRAP_CONTENT);
    }

6、结束。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值