我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android仿支付宝微信支付密码界面弹窗封装dialog

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android仿支付宝微信支付密码界面弹窗封装dialog

一,功能效果

二,实现过程

1,先写xml文件:dialog_keyboard.xml

    注意事项

(1),密码部分用的是一个线性布局中6个TextView,并设置

android:inputType="numberPassword",
外框是用的一个有stroke属性的shape,

(2),1-9数字是用的recycleview ,每个item的底部和右边有1dp的黑线,填充后形成分割线。

(3),recycleview 要设置属性 

android:overScrollMode="never  
不然滑动键盘的时候有阴影

(4),底部三个按钮用的线性布局里的三个TextView


<span style="font-size:14px;"><?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="wrap_content" 
 android:background="@color/bgItemCheck" 
 android:orientation="vertical"> 
 <RelativeLayout 
  android:layout_width="match_parent" 
  android:layout_height="60dp"> 
  <ImageView 
   android:id="@+id/iv_close_key" 
   android:layout_width="45dp" 
   android:layout_height="45dp" 
   android:layout_centerVertical="true" 
   android:padding="10dp" 
   android:class="lazy" data-src="@mipmap/icon_close" /> 
  <TextView 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   android:layout_centerInParent="true" 
   android:text="输入密码" 
   android:textColor="@color/black" 
   android:textSize="20sp" /> 
  <View 
   android:layout_width="match_parent" 
   android:layout_height="1dp" 
   android:layout_alignParentBottom="true" 
   android:background="@color/underLine" /> 
 </RelativeLayout> 
 <TextView 
  android:id="@+id/tv_tip_money" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:layout_margin="15dp" 
  android:gravity="center" 
  android:text="提现金额0元,服务费0元" 
  android:textColor="@color/black" /> 
 <LinearLayout 
  android:layout_width="335dp" 
  android:layout_height="wrap_content" 
  android:layout_gravity="center" 
  android:background="@drawable/shape_bg_psw" 
  android:orientation="horizontal"> 
  <TextView 
   android:id="@+id/tv_first_num" 
   android:layout_width="55dp" 
   android:layout_height="55dp" 
   android:gravity="center" 
   android:inputType="numberPassword" 
   android:textColor="@color/black" 
   android:textSize="30sp" /> 
  <View 
   android:layout_width="1dp" 
   android:layout_height="match_parent" 
   android:background="@color/strokePsw" /> 
  <TextView 
   android:id="@+id/tv_second_num" 
   android:layout_width="55dp" 
   android:layout_height="55dp" 
   android:gravity="center" 
   android:inputType="numberPassword" 
   android:textColor="@color/black" 
   android:textSize="30sp" /> 
  <View 
   android:layout_width="1dp" 
   android:layout_height="match_parent" 
   android:background="@color/strokePsw" /> 
  <TextView 
   android:id="@+id/tv_third_num" 
   android:layout_width="55dp" 
   android:layout_height="55dp" 
   android:gravity="center" 
   android:inputType="numberPassword" 
   android:textColor="@color/black" 
   android:textSize="30sp" /> 
  <View 
   android:layout_width="1dp" 
   android:layout_height="match_parent" 
   android:background="@color/strokePsw" /> 
  <TextView 
   android:id="@+id/tv_fourth_num" 
   android:layout_width="55dp" 
   android:layout_height="55dp" 
   android:gravity="center" 
   android:inputType="numberPassword" 
   android:textColor="@color/black" 
   android:textSize="30sp" /> 
  <View 
   android:layout_width="1dp" 
   android:layout_height="match_parent" 
   android:background="@color/strokePsw" /> 
  <TextView 
   android:id="@+id/tv_fifth_num" 
   android:layout_width="55dp" 
   android:layout_height="55dp" 
   android:gravity="center" 
   android:inputType="numberPassword" 
   android:textColor="@color/black" 
   android:textSize="30sp" /> 
  <View 
   android:layout_width="1dp" 
   android:layout_height="match_parent" 
   android:background="@color/strokePsw" /> 
  <TextView 
   android:id="@+id/tv_sixth_num" 
   android:layout_width="55dp" 
   android:layout_height="55dp" 
   android:gravity="center" 
   android:inputType="numberPassword" 
   android:textColor="@color/black" 
   android:textSize="30sp" /> 
 </LinearLayout> 
 <RelativeLayout 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content"> 
  <TextView 
   android:id="@+id/tv_forget_psw" 
   android:layout_width="wrap_content" 
   android:layout_height="wrap_content" 
   android:layout_alignParentRight="true" 
   android:layout_margin="10dp" 
   android:padding="5dp" 
   android:text="忘记密码?" 
   android:textColor="@color/mainColor" 
   android:textSize="13sp" 
   android:visibility="invisible" /> 
 </RelativeLayout> 
 <android.support.v7.widget.RecyclerView 
  android:id="@+id/rv_keyboard" 
  android:layout_width="match_parent" 
  android:layout_height="wrap_content" 
  android:layout_marginTop="30dp" 
  android:background="@color/white" 
  android:overScrollMode="never" /> 
 <LinearLayout 
  android:layout_width="match_parent" 
  android:layout_height="58dp" 
  android:orientation="horizontal"> 
  <TextView 
   android:layout_width="0dp" 
   android:layout_height="match_parent" 
   android:layout_weight="1" 
   android:background="@color/bgItemPsw" /> 
  <TextView 
   android:id="@+id/tv_zero" 
   android:layout_width="0dp" 
   android:layout_height="match_parent" 
   android:layout_weight="1" 
   android:background="@drawable/selector_bg_psw_item" 
   android:gravity="center" 
   android:text="0" 
   android:textColor="@color/black" 
   android:textSize="25sp" /> 
  <RelativeLayout 
   android:id="@+id/rl_undo" 
   android:layout_width="1dp" 
   android:layout_height="match_parent" 
   android:layout_weight="1" 
   android:background="@drawable/selector_bg_undo"> 
   <ImageView 
    android:layout_width="25dp" 
    android:layout_height="match_parent" 
    android:layout_centerInParent="true" 
    android:class="lazy" data-src="@mipmap/icon_undo" /> 
  </RelativeLayout> 
 </LinearLayout> 
</LinearLayout></span> 

2,Java代码 KeyboardDialog.java

注意事项

(1),封装成dialog,这段代码要在setContentView之前   window.requestFeature(Window.FEATURE_NO_TITLE)

(2),在构造方法中设置样式(后面详述)

(3),适配器是已封装的,用原生的也没差

(4),密码的存储和删除是操作字符串

(5),使用了butterknife  版本为:compile'com.jakewharton:butterknife:7.0.1'

(6),在设置

attributes.width = ScreenUtils.getScreenWidth(context);
使用了封装的方法 目的是获取屏幕的宽  可自行百度达到相同效果


<span style="font-size:14px;">public class KeyboardDialog extends Dialog { 
 private final Context context; 
 private final int money; 
 @Bind(R.id.rv_keyboard)//数字列表 
   RecyclerView rvKeyboard; 
 @Bind(R.id.iv_close_key)//关闭按钮 
   ImageView ivCloseKey; 
 @Bind(R.id.tv_tip_money)//提现金额及手续费 
   TextView tvTipMoney; 
 @Bind(R.id.tv_zero)//数字0 
   TextView tvZero; 
 @Bind(R.id.rl_undo)//后退键 
   RelativeLayout rlUndo; 
 //六位密码 
 @Bind(R.id.tv_first_num) 
 TextView tvFirstNum; 
 @Bind(R.id.tv_second_num) 
 TextView tvSecondNum; 
 @Bind(R.id.tv_third_num) 
 TextView tvThirdNum; 
 @Bind(R.id.tv_fourth_num) 
 TextView tvFourthNum; 
 @Bind(R.id.tv_fifth_num) 
 TextView tvFifthNum; 
 @Bind(R.id.tv_sixth_num) 
 TextView tvSixthNum; 
 private ArrayList<String> keyboardList;//数字列表 
 private String psw = "";//密码 
 public KeyboardDialog(Context context, int money) { 
  super(context, R.style.keyboard_dialog); 
  this.context = context; 
  this.money = money;//要提现金额 
  setCanceledOnTouchOutside(true); 
 } 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  Window window = this.getWindow(); 
  assert window != null; 
  window.requestFeature(Window.FEATURE_NO_TITLE); 
  window.setWindowAnimations(R.style.keyboard_dialog_anim); 
  setContentView(R.layout.dialog_keyboard); 
  ButterKnife.bind(this); 
  WindowManager.LayoutParams attributes = window.getAttributes(); 
  attributes.gravity = Gravity.BOTTOM; 
  attributes.width = ScreenUtils.getScreenWidth(context); 
  attributes.height = GridLayoutManager.LayoutParams.WRAP_CONTENT; 
  initData(); 
 } 
  
 private void initData() { 
  keyboardList = new ArrayList<>(); 
  for (int i = 1; i < 10; i++) { 
   keyboardList.add(i + ""); 
  } 
  //设置要提现的金额 
  tvTipMoney.setText("提现金额" + money + "元"); 
  GridLayoutManager glManager = new GridLayoutManager(context, 3); 
  rvKeyboard.setLayoutManager(glManager); 
  RcyCommonAdapter adapter = getAdapter(); 
  rvKeyboard.setAdapter(adapter); 
 } 
 private RcyCommonAdapter getAdapter() { 
  return new RcyCommonAdapter<String>(context, keyboardList, false, rvKeyboard) { 
   @Override 
   public void convert(RcyViewHolder holder, String keyboard) { 
    TextView tvKeyboard = holder.getView(R.id.tv_keyboard_item); 
    tvKeyboard.setText(keyboard); 
   } 
   @Override 
   public int getmLayoutId(int position) { 
    return R.layout.item_keyboard; 
   } 
   @Override 
   public void onItemClickListener(int position) { 
    inputNum(position + 1 + ""); 
   } 
  }; 
 } 
  
 private void inputNum(String num) { 
  switch (psw.length()) { 
   case 0: 
    tvFirstNum.setText(num); 
    break; 
   case 1: 
    tvSecondNum.setText(num); 
    break; 
   case 2: 
    tvThirdNum.setText(num); 
    break; 
   case 3: 
    tvFourthNum.setText(num); 
    break; 
   case 4: 
    tvFifthNum.setText(num); 
    break; 
   case 5: 
    tvSixthNum.setText(num); 
    break; 
  } 
  psw += num; 
  if (psw.length() == 6) { 
   //TODO 请求服务器 密码为 psw 
   Log.d("psw", psw); 
   dismiss(); 
  } 
 } 
 @OnClick({R.id.iv_close_key, R.id.tv_zero, R.id.rl_undo}) 
 public void onClick(View view) { 
  switch (view.getId()) { 
   case R.id.iv_close_key://关闭dialog 
    dismiss(); 
    break; 
   case R.id.tv_zero://输入0 
    inputNum("0"); 
    break; 
   case R.id.rl_undo://删除输入的密码 
    deleteNum(); 
    break; 
  } 
 } 
  
 private void deleteNum() { 
  switch (psw.length()) { 
   case 1: 
    tvFirstNum.setText(""); 
    psw = ""; 
    break; 
   case 2: 
    tvSecondNum.setText(""); 
    psw = psw.substring(0, 1); 
    break; 
   case 3: 
    tvThirdNum.setText(""); 
    psw = psw.substring(0, 2); 
    break; 
   case 4: 
    tvFourthNum.setText(""); 
    psw = psw.substring(0, 3); 
    break; 
   case 5: 
    tvFifthNum.setText(""); 
    psw = psw.substring(0, 4); 
    break; 
  } 
 } 
}</span><span style="font-size:18px;"> 
</span> 

3,设置弹框样式

(1),在构造方法中设置样式  R.style.keyboard_dialog


<span style="font-size:14px;">public KeyboardDialog(Context context, int money) { 
  super(context, R.style.keyboard_dialog); 
  this.context = context; 
  this.money = money;//要提现金额 
  setCanceledOnTouchOutside(true); 
 }</span> 

  样式代码为


<span style="font-size:14px;"><style name="keyboard_dialog" parent="AppTheme.base"> 
  <item name="android:windowBackground">@android:color/transparent</item> 
  <item name="android:windowFrame">@null</item> 
  <item name="android:windowNoTitle">true</item> 
  <item name="android:windowIsFloating">true</item> 
  <item name="android:windowIsTranslucent">true</item> 
  <item name="android:windowContentOverlay">@null</item> 
  <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> 
  <item name="android:backgroundDimEnabled">true</item> 
 </style></span> 

(2),在onCreate方法中设置弹框动画样式


<span style="font-size:14px;">window.setWindowAnimations(R.style.keyboard_dialog_anim);</span> 

样式代码为


<span style="font-size:14px;"><style name="keyboard_dialog_anim"> 
  <item name="android:windowEnterAnimation">@anim/enter_dialog_anim</item> 
  <item name="android:windowExitAnimation">@anim/exit_dialog_anim</item> 
 </style></span> 

三,调用

调用很简单 一行就可以  需要返回数据就需要自行添加了


<span style="font-size:14px;">  new KeyboardDialog(this, 1000).show();</span> 

下面给大家推荐有关本站android方面的专题,大家可以参考下:

android 验证码功能  //www.jb51.net/Special/899.htm

Android RecyclerView使用方法汇总    //www.jb51.net/Special/855.htm

Android ListView常见功能   //www.jb51.net/Special/850.htm

Android控件imageview详细用法   //www.jb51.net/Special/726.htm

Android SDK基础教程   //www.jb51.net/Special/637.htm

Android 开发中缓存知识汇总  //www.jb51.net/Special/622.htm

以上所述是小编给大家介绍的Android仿支付宝微信支付密码界面弹窗封装dialog,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程网网站的支持!

您可能感兴趣的文章:微信小程序实现元素渐入渐出动画效果封装方法微信小程序设置全局请求URL及封装wx.request请求操作示例微信小程序之多文件下载的简单封装示例微信小程序 数据封装,参数传值等经验分享微信小程序 使用picker封装省市区三级联动实例代码深入学习微信网址链接解封的防封原理visit_type


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android仿支付宝微信支付密码界面弹窗封装dialog

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android仿支付宝微信支付密码界面弹窗封装dialog

一,功能效果二,实现过程 1,先写xml文件:dialog_keyboard.xml 注意事项 (1),密码部分用的是一个线性布局中6个TextView,并设置android:inputType="numberPassword",外
2022-06-06

android仿微信支付宝的支付密码输入框示例

大家好,我是狸小华,萌汉子一枚。今天给大家带来的是仿微信/支付宝的密码输入框。这个效果也出来有一段时间了,所以搜索一下还是有不少的网友实现,但是,但是!经过一番查看后,我发现他们的实现分为两大类。 一,直接继承EditText,然后在ond
2022-06-06

Android仿微信/支付宝密码输入框

在用到支付类app时,都有一个简密的输入框。。开始实现的时候思路有点问题,后来到github上搜了下,找到了一个开源的库看起来相当的牛逼,,来个地址先: https://github.com/Jungerr/GridPasswordView
2022-06-06

Android仿微信支付密码弹出层功能

预览使用这个弹出层是一个DialogFragment,逻辑都封装在其内部,使用起来很简单:Bundle bundle = new Bundle();bundle.putString(PayFragment.EXTRA_CONTENT, "提
2023-05-31

在Android应用中怎么利用dialog实现一个支付密码界面弹窗

这篇文章将为大家详细讲解有关在Android应用中怎么利用dialog实现一个支付密码界面弹窗,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。实现过程1,先写xml文件:dialog_keyb
2023-05-31

Android高仿微信支付密码输入控件

像微信支付密码控件,在app中是一个多么司空见惯的功能。最近,项目需要这个功能,于是乎就实现这个功能。 老样子,投篮需要找准角度,变成需要理清思路。对于这个"小而美"的控件,我们思路应该这样子。Ⅰ、将要输入密码数量动态通过代码加载出来。Ⅱ、
2022-06-06

Android实现支付宝6位密码输入界面

我们先来照图分析一下: (1)限制输入6位,每一位都有自己的框格,每个格显示一位; (2)有回退/取消支付按钮; (3)有忘记密码链接; (4)自定义的只能输入数字的键盘输入区; (5)在6位输完后自动进行密码校验和支付交易。如上图左边是
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录