Android 底部支付弹窗

Android 底部弹出Dialog(支付方式选择) 项目开发中经常遇到使用底部弹出Dialog 例如选择图片上传时的 本地图库 和 拍照  还有支付时的支付方式选择  下面是我写的一个支付方式选择的底部弹出 Dialog  不足之处请指出 谢谢 初始化private void initDialog() { dialog = new Dialog(this, R.style.recharge_pay_dialog); 阅读详情

实现的效果:

 

实现的思路:

1.通过继承PopupWindow自定义View来达到弹窗的弹出效果;

2.通过回调将输入的密码由弹窗传入到主界面中;

2.恩,这就够了——>有些注意点在代码中备注;

 

自定义View的代码:

 

public class BottomDialogView extends PopupWindow {
    private View dialogView;
    private EditText payPassEt;
    private Button cancelBtn, confirmBtn;
    private ImageView backDialogIv;

    public BottomDialogView(Activity context, final BottomDialogOnclickListener bottomDialogOnclickListener) {
        super(context);
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        dialogView = inflater.inflate(R.layout.dialog, null);
        backDialogIv = (ImageView) dialogView.findViewById(R.id.backDialogIv);
        payPassEt = (EditText) dialogView.findViewById(R.id.payPassEt);
        cancelBtn = (Button) dialogView.findViewById(R.id.cancelBtn);
        confirmBtn = (Button) dialogView.findViewById(R.id.confirmBtn);
        backDialogIv.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
        cancelBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                dismiss();
            }
        });
        confirmBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                bottomDialogOnclickListener.onPositiveClick(payPassEt.getText().toString().trim(), BottomDialogView.this);
            }
        });


        this.setContentView(dialogView);
        this.setWidth(LayoutParams.MATCH_PARENT);
        this.setHeight(LayoutParams.MATCH_PARENT);
        this.setFocusable(true);
        this.setAnimationStyle(R.style.DialogShowStyle); //设置弹出窗体动画效果
        ColorDrawable dw = new ColorDrawable(0xb0000000);
        this.setBackgroundDrawable(dw);

        dialogView.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                int height = dialogView.findViewById(R.id.pop_layout).getTop();
                int y = (int) event.getY();
                if (event.getAction() == MotionEvent.ACTION_UP) {
                    if (y < height) { //添加OnTouchListener监听判断获取触屏位置如果在选择框外面则销毁弹出框
//                        dismiss();
                    }
                }
                return true;
            }
        });

    }

}


分析:其实很简单,无法就是通过加载布局将布局装载至自定义的View中。bottomDialogOnclickListener 是自定义的回调接口,无法就是将值传递至主界面中。

 

 

主界面代码:

 

public class ShowBottomDialogAct extends AppCompatActivity {
    private Button showBtn;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show_bottom_dialog);
        showBtn = (Button) findViewById(R.id.showBtn);
        showBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                showDialog();
            }
        });
    }


    private void showDialog() {
        DialogUtil.showBottomDialog(ShowBottomDialogAct.this, R.id.activity_show_bottom_dialog, new BottomDialogOnclickListener() {
            @Override
            public void onPositiveClick(String contentStr, BottomDialogView dialogView) {
                dialogView.dismiss();
            }
        });
    }

}


分析:可以看到,主界面的代码异常简单,主要是通过自定义一个帮助类来进行弹窗的显示——>因为弹窗很可能在多个界面使用,所以这种写法个人还是比较喜欢的。另外通过回调将弹窗对象给传输出来,以便在使用的时候根据网络请求的具体情况来控制弹窗的显示与取消。

 

 

帮助类的代码:

 

public static void showBottomDialog(Activity activity , int dialogLayoutId , BottomDialogOnclickListener bottomDialogOnclickListener){

        BottomDialogView bottomDialogView = new BottomDialogView(activity, bottomDialogOnclickListener);
        bottomDialogView.showAtLocation(activity.findViewById(dialogLayoutId), Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0); //设置窗口显示在parent布局的位置并显示
        InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);//自动打开软键盘
        imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);

    }


分析:两点——>1.负载布局文件;2.控制软键盘显示与关闭;

 

 

另外一个很重要的点,花了不少时间才去发现:弹窗弹起的时候,软键盘一般是会覆盖一部分输入框的,这是非常不好看的。之所以demo中没有出现这种情况,是通过了特殊的处理——>将整个弹窗布局外包一层ScrollView,这样方便软键盘弹起找到输入框焦点时会将整个布局往上顶。但,这还不够,一定要在ScrollView中设置一个属性:

 

 android:fillViewport="true"


最后,GitHub地址>>

 

 

 

 

Android支付宝微信银联等底部弹窗dialog(源码分析+例子) Android支付宝微信银联等底部弹窗dialog(源码分析+例子) 本博文做技术分享存档使用,涉及技术点包含动画,自定义控件,三方支付SDK等,本文相对简单直接贴相关代码,有不懂的请留言,博主看到会及时解答,谢谢理解.本文源码下载 文章目录Android支付宝微信银联等底部弹窗dialog(源码分析+例子)一 MainActivity核心代码二 activity_main.xml 布局核心代... 阅读详情

相关推荐

UniApp实战:优雅解决遮罩弹窗下的滚动穿透难题

本文深入剖析了UniApp开发中常见的滚动穿透问题,特别是在微信小程序等平台的表现。文章提供了两种优雅的解决方案:使用page-meta组件进行页面级控制,以及利用wx.setPageStyle API进行动态设置,有效隔离弹窗与底层页面的滚动事件,提升用户体验。

sam99的博客 510

Android——完全自定义 底部弹出支付页面

完全轻松自定义底部弹窗

GSLS 2007

uniapp [全端兼容] - 详细实现日期时间 “范围“ 弹框选择器功能,底部弹窗式选择日期范围组件(开始日期和结束日期,选择2个年月日),支持自定义返回数据格式、限制最大最小日期等(详细示例代码)

uni-app,微信小程序,支付宝小程序,安卓app,苹果ios,nvue,H5网页网站,日期时间选择器,范围选择,日期时间范围选取,uniApp日期范围选择插件,弹框式范围选取,日历时间范围,选择两个日期时间,uniapp选择开始和结束日期,年月日,月份,年份,Uniapp日期时间选择插件支持更多选择方式日期范围日期时间范围,picker日期选择器和时间选择器的用法,日期选择器,uniApp微信小程序日期时间段选择(精确到年月日时分),时间段选择限制(开始日期结束日期相互限制),日期选择组件单日/日期

🏆 前端领域优质创作者 5374

android-实现支付宝支付从底部弹窗效果

前言 我们再用支付宝支付的时候,会从底部弹上来一个对话框,让我们选择支付方式等等,今天我们就来慢慢实现这个功能 效果图 实现 主界面很简单,就是一个按钮,点击后跳到支付详情的Fragment中 package com.example.hfs.alipayuidemo; import android.support.v7.app.AppCompatActivity; import andr...

jasonhongcn的专栏 1170

Android实现支付宝支付从底部弹窗效果

Android实现支付宝支付从底部弹窗效果

Android支付底部弹窗自定义dialog

Android支付底部弹窗自定义dialog,包含完整自定义控件,以及相应进入退出动画

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

前言 Android 底部弹出自定义Dialog(支付宝微信选择) 之前做过很多 一直没有总结过 这次做一个总结 加深一下记忆 为别人留下一个可参考的方案 不多说 直接上gif效果图 UI希望の效果 实际の实现效果Gif 代码总结 首先写一个dialogDemo继承Dialog 需要实现构造方法 选择2参的即可 传一个上下文和一个dialog主题 剩下的就按照流程写 /** * @author lyudony * @date 2020/8/4. * description:支付方式dialog

吕氏春秋i 1332

android 支付宝弹出付款方式以及输入六位密码,输完自动关闭,回调密码

android 支付宝弹出付款方式以及输入六位密码,输完自动关闭,回调密码 超值,直接导入就可以使用

android 支付系统 demo,微信APP支付Android Demo详解

根据这篇文章的步骤,可以让你的账号跑通android app的微信支付.前提:已经有开通微信支付,有商户号,密钥.点击图片可以打开大图查看.1. 下载Android app Demo 2. 安装IDE2.1 我用的是adt bundle,不过adt bundle已经不是google官方支持的软件了,官方现在支持android studioadt bundle windows 64位的下载地址: ...

weixin_34206129的博客 671

Android---防支付宝支付密码输入弹窗

防支付宝支付密码输入弹窗, (1),封装成dialog (2),在构造方法中设置样式 (3),密码的存储和删除是操作字符串

仿支付宝支付弹框效果

自定义view方式实现仿支付宝支付弹框效果,dialog是参照系统dialog方式实现的万能dialog

Android底部弹窗的一些实现,Android实现底部支付弹窗效果

Android底部支付弹窗实现的效果:实现的思路:1.通过继承PopupWindow自定义View来达到弹窗的弹出效果;2.通过回调将输入的密码由弹窗传入到主界面中;2.恩,这就够了——>有些注意点在代码中备注;自定义View的代码:public class BottomDialogView extends PopupWindow {private View dialogView;priva...

weixin_39840729的博客 414

BQ25798双电源输入4节电池升降压充电与最大功率跟踪于光伏板应用

介绍一颗具有窄范围直流电压NVDC、路径管理PPMT、光伏板最大功率跟踪及反向放电OTG升降压充电控制器,带I2C接口能对内部寄存器做控制

linkedin_38804946的博客 1676

android底部支付,Android实现底部支付弹窗效果

Android底部支付弹窗实现的效果:实现的思路:1.通过继承PopupWindow自定义View来达到弹窗的弹出效果;2.通过回调将输入的密码由弹窗传入到主界面中;2.恩,这就够了――>有些注意点在代码中备注;自定义View的代码:public class BottomDialogView extends PopupWindow {private View dialogView;priva...

weixin_33421065的博客 437

机械设计师必看:如何用Autodesk Inventor高效完成钣金设计(附实战案例)

本文为机械设计师详细解析了如何利用Autodesk Inventor Professional高效完成钣金设计。文章通过一个钣金防护罩的实战案例,系统介绍了从核心设计逻辑、建模流程、参数化技巧到工程图输出的完整工作流,旨在帮助设计师掌握智能化的设计方法,显著提升从概念到制造的设计效率与准确性。

honey的博客 1181

车联网ECU、TSP与TBOX通信流程

对比维度ECU(电子控制单元)BMS(电池管理系统)应用场景传统燃油车 + 新能源汽车仅限新能源汽车核心作用控制整车各系统运行管理动力电池安全与寿命车联网角色数据采集与传输的核心载体提供电池相关的核心数据。

tecoes的博客 1232

android仿支付宝弹窗,实现支付宝支付从底部弹窗效果

前言我们再用支付宝支付的时候,会从底部弹上来一个对话框,让我们选择支付方式等等,今天我们就来慢慢实现这个功能效果图实现主界面很简单,就是一个按钮,点击后跳到支付详情的Fragment中package com.example.hfs.alipayuidemo;import android.support.v7.app.AppCompatActivity;import android.os.Bundl...

weixin_39979080的博客 491

深入解析安卓性能分析工具systrace/atrace的使用技巧与实战场景

本文深入解析了安卓性能分析工具systrace/atrace的核心使用技巧与实战场景。文章澄清了环境搭建的常见误区,详细拆解了命令参数,并通过列表卡顿、启动优化等具体案例,手把手指导开发者利用这些工具精准定位性能瓶颈,提升应用流畅度。

yyy34的博客 239

android仿支付宝弹窗,【转】MUI自定义底部弹窗自带遮罩层仿支付宝支付弹窗

[Asm] 纯文本查看 复制代码html,body{height: 100%;}.fr-tc{/* 控制弹窗高度 */height: 40%;}.fr-div-w{border-radius: 10px 10px 0px 0px;background-color: #FFFFFF;height: 100%;padding: 15px;}.fr-btn{display: block;height:...

weixin_35936375的博客 323

学Simulink--基于高比例可再生能源渗透的复杂电网建模场景实例:新能源高渗透下传统同步机主导系统的动态响应建模

摘要:本文详细介绍使用MATLAB/Simulink构建高比例可再生能源渗透的电网系统模型。主要内容包括:系统结构设计(新能源发电、同步发电机、电网等模块)、详细建模步骤(从创建项目到集成各模块)、关键控制算法实现(如MPPT和调速器控制)以及仿真分析。通过该模型可研究新能源高渗透率下传统同步机系统的动态响应特性,为电力系统稳定性分析提供有效工具。文章包含示例代码和典型仿真结果,展示了频率、电压等关键参数的稳定性表现。

xiaoheshang_123的博客 86

STM32G0/G4电机控制中三角函数与浮点运算优化实战

三角函数(sin/cos)和浮点运算是电机矢量控制(FOC)的核心基础,直接影响Clark/Park变换、SVPWM及观测器的实时性与精度。在资源受限的MCU上,标准math.h库因无硬件FPU支持而引发严重时序抖动,导致电流环延迟、转矩脉动增大甚至系统复位。通过硬件加速(如STM32G4的CORDIC协处理器)或定制化定点算法(如STM32G0的查表+线性插值),可将sin/cos计算从数十微秒压缩至1–3 μs量级,提升30倍以上效率。该方案广泛适用于BLDC/PMSM驱动、伺服控制及高动态响应嵌入式运

weixin_35751412的博客 109

Android弹窗开发终极方案:XPopup完整解析与实战应用

在Android应用开发中,弹窗组件是提升用户体验的重要元素。XPopup作为一款功能强大、易用性高的弹窗库,为开发者提供了完整的弹窗解决方案。无论你是需要底部菜单、全屏弹窗、图片查看器还是自定义动画效果,XPopup都能满足你的需求。 ## 🎯 为什么选择XPopup? XPopup库拥有丰富的弹窗类型和灵活的配置选项,支持多种动画效果和交互方式。相比系统自带的Dialog,XPopup提

gitblog_00518的博客 472

MIMO-OFDM通信系统性能仿真及MATLAB实现

将MIMO和OFDM技术结合起来,可以充分利用两者的优点,进一步提高无线通信系统的性能。在MIMO-OFDM系统中,多个天线同时发射多个子载波,称为多天线多载波(MIMO-OFDM)系统。随着无线通信技术的不断发展,MIMO-OFDM技术因其高效、可靠和适应性等优点已被广泛应用于新一代通信系统中。本篇文章旨在介绍MIMO-OFDM通信系统的基本原理及其性能评估方法,并结合MATLAB提供相关代码实现。本篇文章介绍了MIMO-OFDM通信系统的基本原理和性能评估方法,并结合MATLAB提供了相关的实现代码。

学习使你进步。 2216

使用DialogFragment实现支付宝支付从底部弹出效果

使用DialogFragment实现支付宝支付从底部弹出效果

凌风1205 2226

Field Characteristics 深入解析,理解 SAP ABAP Analytics 中 Dimension 与 Measure 的真正边界

在SAP ABAP Analytics数据模型中,字段应建模为Dimension还是Measure,关键在于业务语义而非数据类型。Dimension提供分析上下文,构成数据坐标系,支持钻取与切片;Measure则需具备明确聚合语义(如#SUM、#MIN、#MAX),且必须满足Distinct(无重复)与Complete(无缺失)原则,确保聚合结果准确。错误的建模会导致聚合偏差,根源常在事实粒度不清或关联关系不当。因此,正确划分字段角色,本质是让Analytical Engine准确理解业务数据的分析逻辑。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 56

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

PopupWindow弹出窗体

PopupWindow 显示方法 显示方法 显示位置 showAsDropDown(View anchor, int xoff, int yoff) 显示在anchor控件的下方 showAtLocation(View parent, int gravity, int x, int y) 显示在parent控件的某个位置 一.PopupWindow介绍 PopupWindo...

TimPika的博客 430

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

上一篇: Android 滚动的公告栏
下一篇: Android 实现WebView点击图片查看大图列表及图片保存
ganshenml
博客等级 码龄16年 445粉丝 108原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ganshenml

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值