Android 底部弹出自定义Dialog(支付宝微信选择)

前言

Android 底部弹出自定义Dialog(支付宝微信选择)
之前做过很多 一直没有总结过 这次做一个总结 加深一下记忆
为别人留下一个可参考的方案
不多说 直接上gif效果图

UI希望の效果

Android 底部弹出自定义Dialog(支付宝微信选择)_第1张图片

实际の实现效果Gif

Android 底部弹出自定义Dialog(支付宝微信选择)_第2张图片

代码总结

首先写一个dialogDemo继承Dialog
需要实现构造方法 选择2参的即可 传一个上下文和一个dialog主题
剩下的就按照流程写

/**
 * @author lyudony
 * @date 2020/8/4.
 * description:支付方式dialog
 */
public class PayTypesDialog extends Dialog {

    private Unbinder mUnbinder;
    @BindView(R.id.iv_pay_type_weixin)
    ImageView mIvWeiChatPay;
    @BindView(R.id.iv_pay_type_zhifubao)
    ImageView mIvZhiFuBaoPay;

    //dialog构造方法 实现时需要传上下文和一个dialog主题
    public PayTypesDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_pay);
        mUnbinder = ButterKnife.bind(this);
        //设置基本属性
        Window dialogWindow = getWindow();
        //设置在底部显示
        dialogWindow.setGravity(Gravity.BOTTOM);
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        //设置宽度和手机持平
        lp.width = AbsListView.LayoutParams.MATCH_PARENT;
        lp.y = 0;//设置Dialog距离底部的距离
        dialogWindow.setAttributes(lp);
    }

    @OnClick({R.id.iv_pay_type_weixin, R.id.iv_pay_type_zhifubao,
     R.id.tv_zhifubao, R.id.tv_weixin, R.id.btn_confirm})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.tv_weixin://选择微信
            case R.id.iv_pay_type_weixin:
                mIvWeiChatPay.setSelected(true);
                mIvZhiFuBaoPay.setSelected(false);
                break;
            case R.id.tv_zhifubao://选择支付宝
            case R.id.iv_pay_type_zhifubao:
                mIvZhiFuBaoPay.setSelected(true);
                mIvWeiChatPay.setSelected(false);
                break;
            case R.id.btn_confirm:
                //选择提现方式
                if (mIvZhiFuBaoPay.isSelected()) {
                    ToastUtils.showShort(getContext(), "选择了支付宝");
                } else if (mIvWeiChatPay.isSelected()) {
                    if (!StringUtils.isWxAppInstalledAndSupported(getContext())) {
                        ToastUtils.showShort(getContext(), "请先安装微信");
                    } else {
                        ToastUtils.showShort(getContext(), "选择了微信 ");
                    }
                }
                break;
        }
    }

}

XML布局参考




    

    


    

    

    

    

    

设置主题style

如果不设置这一步 dialog显示出来就不是和父窗体持平的效果
也不会在父窗体的最下面 我之前就没有设置这个属性 导致一直不是自己想要的效果!

 

使用方法

so easy!!!

  //点击弹出支付方式
  PayTypesDialog payTypesDialog = new PayTypesDialog(this,R.style.pay_type_dialog);
  payTypesDialog.show();

有问题,望多指教!

共勉

我要一步一步往上爬
在最高点乘着叶片往前飞
任风吹干流过的泪和汗
我要一步一步往上爬
等待阳光静静看着它的脸
小小的天有大大的梦想
我有属于我的天
任风吹干流过的泪和汗
总有一天我有属于我的天
Android 底部弹出自定义Dialog(支付宝微信选择)_第3张图片

你可能感兴趣的:(Android,组件,支付方式dialog,android,dialog底部弹出,移动开发)