android支付宝支付微信支付封装,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
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/bgItemCheck"
android:orientation="vertical">
android:layout_width="match_parent"
android:layout_height="60dp">
android:id="@+id/iv_close_key"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_centerVertical="true"
android:padding="10dp"
android:src="@mipmap/icon_close" />
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="输入密码"
android:textColor="@color/black"
android:textSize="20sp" />
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_alignParentBottom="true"
android:background="@color/underLine" />
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" />
android:layout_width="335dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@drawable/shape_bg_psw"
android:orientation="horizontal">
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" />
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/strokePsw" />
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" />
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/strokePsw" />
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" />
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/strokePsw" />
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" />
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/strokePsw" />
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" />
android:layout_width="1dp"
android:layout_height="match_parent"
android:background="@color/strokePsw" />
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" />
android:layout_width="match_parent"
android:layout_height="wrap_content">
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" />
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" />
android:layout_width="match_parent"
android:layout_height="58dp"
android:orientation="horizontal">
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@color/bgItemPsw" />
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" />
android:id="@+id/rl_undo"
android:layout_width="1dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/selector_bg_undo">
android:layout_width="25dp"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:src="@mipmap/icon_undo" />
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);使用了封装的方法 目的是获取屏幕的宽 可自行百度达到相同效果
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 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(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 + "");
}
};
}
/*
* 输入密码 先判断现有密码长度并设置显示输入了密码 添加密码到密码字符串
* 后判断输入后密码的长度 如果等于6则关闭并请求服务器
* */
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;
}
}
/*
* 删除密码 根据已输入的密码长度将对应的textview设置为空
* 并将密码字符串最后一位切割掉
* */
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;
}
}
}
3,设置弹框样式
(1),在构造方法中设置样式 R.style.keyboard_dialog
public KeyboardDialog(Context context, int money) {
super(context, R.style.keyboard_dialog);
this.context = context;
this.money = money;//要提现金额
setCanceledOnTouchOutside(true);
}
样式代码为
@android:color/transparent
@null
true
true
true
@null
@android:style/Animation.Dialog
true
(2),在onCreate方法中设置弹框动画样式
window.setWindowAnimations(R.style.keyboard_dialog_anim);
样式代码为
@anim/enter_dialog_anim
@anim/exit_dialog_anim
三,调用
调用很简单 一行就可以 需要返回数据就需要自行添加了
new KeyboardDialog(this, 1000).show();
下面给大家推荐有关本站android方面的专题,大家可以参考下:
以上所述是小编给大家介绍的Android仿支付宝微信支付密码界面弹窗封装dialog,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
android支付宝支付微信支付封装,Android仿支付宝微信支付密码界面弹窗封装dialog...相关推荐
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View...
Android特效专辑(十二)--仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上不了,怪自己技术 ...
- Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View
Android特效专辑(十二)--仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View 先来看看这个效果 这是我的在Only上添加的效果,说实话,Only现在都还只是半成品,台面都上不了,怪自己技术 ...
- Android自定义控件开发系列(三)——仿支付宝六位支付密码输入页面
在移动互联领域,有那么几家龙头一直是我等学习和追求的目标,比如支付宝.微信.饿了么.酷狗音乐等等,大神举不胜举,他们设计的界面.交互方式已经培养了中国(有可能会是世界)民众的操作习惯:举个小例子,对话 ...
- Android一步一步剖析+实现仿支付宝手势密码自定义View
最近项目需求:要求在项目中添加手势密码和指纹验证,恰巧最近在苦练自定义View,于是参考了网上轮子和自己的理解,实现了如下的效果. 国际惯例:Without pic you say a JB(奖杯). ...
- 移动端 transition动画函数的封装(仿Zepto)以及 requestAnimationFrame动画函数封装(仿jQuery)...
移动端 css3 transition 动画 ,requestAnimationFrame 动画 对于性能的要求,h5优先考虑: 移动端 单页有时候 制作只用到简单的css3动画即可,我们封装一下, ...
- Android仿支付宝UI功能开发,UI实例--仿支付宝首页头部伸缩效果
1. 效果图 下面是我们将要实现的效果图: 效果图 2.具体实现 我们可以利用design和v7包中的控件来实现(涉及到的控件有CoordinatorLayout.AppBarLayout.Toolb ...
- payjs 源码_第三方支付平台源码,仿支付宝
平台安装教程.rar4.63 MB07-04-14|22:45 347.00 B21-01-11|22:29 347.00 B21-01-11|22:30 347.00 B21-01-11|22:30 ...
- 微信小程序《仿支付宝首页应用管理》
1.首页:长按拖动应用排序,自动保存 2.功能:点击"管理",管理按钮变成"完成",首页图标显示 - 移除首页图标,长按拖动可排序 其他类型显示 + 点击 +添 ...
- html5支付宝主页面代码,JavaScript高仿支付宝倒计时页面及代码实现
实现目标 一,页面在图一时开始进行倒计时(可以点击取消订单按钮,支付页面消失). 二,倒计时完毕,出现删除订单. 三,单击删除订单,弹出弹框,询问是否要真正删除订单. 四,单击确定,即可删除订单. 如 ...
最新文章
- numpy 数组 维度 大小 形状
- python四个带 key 参数的函数(max、min、map、filter)
- 【CSU - 1980 】不堪重负的树(树上区间dp)
- 【CodeForces - 510D】Fox And Jumping(dp,stlmap,数论的性质)
- Kibana入门安装与介绍
- 不想用鸿蒙系统怎么办,华为鸿蒙系统出大BUG!网友:这再也不是用户想要的鸿蒙系统...
- Trend Micro Password Manager 多个高危漏洞
- HISI3536安装交叉编译工具链
- regsvr32注册Dll文件时出现0x80004005问题的解决方案
- linux查看redis安装目录
- 为植物种子备份 “末日种子库”收集样本逾百万
- CDH集群更换IP处理方法
- 迅捷路由器重新设置后服务器无响应,迅捷路由器恢复出厂设置后怎么重新设置...
- [转帖]Office全版本零售版转换VOL
- 最近在做文本匹配,想到了特征值的算法,自己写了一个文本计算算法。求批判。...
- 速写在网站建设中的重要地位
- cadence 通孔焊盘_allegro软件通孔类焊盘制作方法及步骤
- Windows11分辨率无法调整,缩放不能选择调整
- iconv-lite
- “COMSOL Multiphysics多物理场仿真技术与应用” 电化学专题
热门文章
- 04.18 蜜汁dp赛
- 用matlab写一个利用人工地震波定位掩埋物的程序
- 初识Indusoft Web Studio(IWS)
- Mac 安装 Maven 并配置环境
- 软件破解(1)-Java篇
- python解压函数extractall在windows上报错FileNotFoundError [Errno 2] No such file or directory
- 用苹果手机拍照,这5个功能要了解,不然手机真的白买了
- 画洗碗机器人的思维导图_一种智能洗碗机器人的制作方法
- 面试总结应届生必须在学校就找好工作不然你会后悔的
- Python 中的文本处理