小说APP源码,实现带下划线的密码输入框实现的相关代码
现在很多app的密码输入框,都采用微信、支付宝等密码输入框的样式。还有一种就是每个密码字符下面带有一条下划线的样式。
仿微信、支付宝网上搜了下有很多demo,但是带下划线的不多,或者讲的比较复杂,都是自定义什么的。这两天正好要做个这样的东西,研究了一下,感觉没那么麻烦,不需要各种自定义。我的思路是:
1). 布局中定义一个edittext, 全透明,输入的字符大小为0sp, 这样用户就看不见。不能设置为visibility=gone,否则无法获取焦点,弹 不出输入法。
2). 然后定义四个textview, 来显示edittext的输入。同时定义四个下划线,分别在每个textview的下方。
3). 监听edittext的输入事件,控制每个textview的显示
1.布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="wrap_content"><TextViewandroid:id="@+id/input_title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="24dp"android:layout_marginTop="24dp"android:text="请输入密码"android:textSize="20sp"android:textColor="#333333"/><EditTextandroid:id="@+id/input_edit"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:inputType="number"android:digits="0123456789"android:maxLength="4"android:maxLines="1"android:background="@null"android:cursorVisible="false"android:textColor="#00000000"android:textSize="0sp"android:visibility="visible"/><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"android:layout_below="@+id/input_title"android:layout_marginLeft="24dp"android:layout_marginRight="24dp"android:layout_marginTop="24dp"><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"android:layout_marginRight="45dp"android:paddingBottom="10dp"><TextViewandroid:id="@+id/edit1"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:inputType="number"android:digits="0123456789"android:maxLength="1"android:maxLines="1"android:background="@null"android:cursorVisible="false"android:textColor="#333333"android:textSize="32sp"/><TextViewandroid:id="@+id/text1"android:layout_width="match_parent"android:layout_height="1dp"android:background="#767676"android:layout_marginTop="12dp"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"android:layout_marginRight="45dp"android:paddingBottom="10dp"><TextViewandroid:id="@+id/edit2"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:inputType="number"android:digits="0123456789"android:maxLength="1"android:maxLines="1"android:background="@null"android:cursorVisible="false"android:textColor="#333333"android:textSize="32sp"/><TextViewandroid:id="@+id/text2"android:layout_width="match_parent"android:layout_height="1dp"android:background="#767676"android:layout_marginTop="12dp"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"android:layout_marginRight="45dp"android:paddingBottom="10dp"><TextViewandroid:id="@+id/edit3"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:maxLength="1"android:maxLines="1"android:background="@null"android:cursorVisible="false"android:textColor="#333333"android:textSize="32sp"/><TextViewandroid:id="@+id/text3"android:layout_width="match_parent"android:layout_height="1dp"android:background="#767676"android:layout_marginTop="12dp"/></LinearLayout><LinearLayoutandroid:layout_width="0dp"android:layout_height="wrap_content"android:layout_weight="1"android:orientation="vertical"android:paddingBottom="10dp"><TextViewandroid:id="@+id/edit4"android:layout_width="match_parent"android:layout_height="wrap_content"android:gravity="center_horizontal"android:inputType="number"android:digits="0123456789"android:maxLength="1"android:maxLines="1"android:background="@null"android:cursorVisible="false"android:textColor="#333333"android:textSize="32sp"/><TextViewandroid:id="@+id/text4"android:layout_width="match_parent"android:layout_height="1dp"android:background="#767676"android:layout_marginTop="12dp"/></LinearLayout></LinearLayout></RelativeLayout>

2.实现代码

private Dialog inputDialog;
private LayoutInflater mInflater;
private EditText input_edit;
private TextView edit1;
private TextView edit2;
private TextView edit3;
private TextView edit4;
private String codeStr = null;private void initInputDialogView(View view)
{input_edit = (EditText) view.findViewById(R.id.input_edit);input_edit.addTextChangedListener(mTextWatcher);edit1 = (TextView) view.findViewById(R.id.edit1);edit2 = (TextView) view.findViewById(R.id.edit2);edit3 = (TextView) view.findViewById(R.id.edit3);edit4 = (TextView) view.findViewById(R.id.edit4);edit1.setOnClickListener(onClickListener);edit2.setOnClickListener(onClickListener);edit3.setOnClickListener(onClickListener);edit4.setOnClickListener(onClickListener);}//创建输入框dialog
private void createInputDialog()
{AlertDialog.Builder builder = new AlertDialog.Builder(this);if (mInflater == null){mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);}View view = mInflater.inflate(R.layout.input_view_layout, null);initInputDialogView(view);builder.setView(view);inputDialog = null;inputDialog = builder.create();inputDialog.show();openKeyboard(input_edit); //dialog show之后立即弹出输入法}//对四个显示密码textview监听点击事件,这样做是为了:如果输入法没有弹起来,用户点击密码框也是可以弹起来的
private View.OnClickListener onClickListener = new View.OnClickListener()
{@Overridepublic void onClick(View v){int vid = v.getId();switch (vid){case R.id.edit1:case R.id.edit2:case R.id.edit3:case R.id.edit4:openKeyboard(input_edit);break;}}
}//输入监听
private TextWatcher mTextWatcher = new TextWatcher()
{@Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after){}@Overridepublic void onTextChanged(CharSequence s, int start, int before, int count){}@Overridepublic void afterTextChanged(Editable s){/*** 我的处理逻辑是:1. 只能从第一个框输入;2.只能从最后一次输入的框删除* 3. 如果输入的密码个数小于4(我这里总共4个), 也是可以删除的。4.按了删除键,还可以继续接着输入,保证每一次输入,显示的位置都是对的。**/int len = s.length();String str = s.toString();codeStr = str;switch (len){case 1:edit1.setText(str);edit2.setText("");edit3.setText("");edit4.setText("");break;case 2:edit2.setText(subStr(str, 1, 2));edit3.setText("");edit4.setText("");break;case 3:edit3.setText(subStr(str, 2, 3));edit4.setText("");break;case 4:edit4.setText(subStr(str, 3, 4));break;default:edit1.setText("");break;}}
};private String subStr(String s, int start, int end)
{if (s == null || s.length() < 1){return "";}return s.substring(start, end);
}//弹起输入法
public static void openKeyboard(final EditText view)
{view.setFocusableInTouchMode(true);view.setFocusable(true);view.setClickable(true);view.requestFocus();InputMethodManager inputManager = (InputMethodManager)view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);inputManager.showSoftInput(view, 0);Timer timer = new Timer();timer.schedule(new TimerTask(){public void run(){InputMethodManager inputManager=(InputMethodManager)view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);inputManager.showSoftInput(view,0);}}, 500);}
  1. 最后在合适的地方调用createInputDialog()方法就能弹出密码框,并且同时弹起输入法。
    以上就是 小说APP源码,实现带下划线的密码输入框实现的相关代码,更多内容欢迎关注之后的文章

小说APP源码,实现带下划线的密码输入框相关推荐

  1. 原生仿微信社交社区即时通讯聊天双端APP源码开源带PC客户端文档说明

    简介: 原生仿微信社交社区即时通讯聊天双端APP源码开源带PC客户端文档说明 5438亲测完美搭建 网盘下载地址: http://kekewangLuo.net/uiBBnJ8xQup0 图片:

  2. 基于Android的看小说APP源码Android本科毕业设计Android小说阅读器、小说APP源码

    基于kotlin + 协程 + MVVM 模式来编写的看小说APP. 完整代码下载地址:基于Android的看小说APP源码Android本科毕业设计Android小说阅读器.小说APP源码 主要框架 ...

  3. android社交源码,原生仿微信社交社区即时通讯聊天双端APP源码开源 带PC客户端...

    野火IM是一套跨平台.核心功能开源的即时通讯解决方案,主要包含以下内容. | 仓库                                                         | ...

  4. 市面售价2W的仿抖音短视频原生双端APP源码,带技术文档管理后台和数据库

    这个短视频系统源码是2w某站购买来的仿抖音视频app,原生双端开发,带技术文档管理后台和数据库.非常适合用来做类似项目的基础开发框架,能节省大量的开发时间和试错成本. 除了直播没有开通,其他功能都是精 ...

  5. 织梦dedecms小说网站源码|带采集+搭建方式

    介绍: 织梦dedecms小说网站源码,带全自动采集功能. 此套源码某宝买的,东西全套! 源码文件夹带部署搭建教程, 与普通织梦安装方法几乎一致,另外有专门的官方教程,非常详细. 网盘下载地址: ht ...

  6. 爱看小说手机网源码全站带3w数据带采集,ThinkPHP内核小说网站源码带听书等全部插件

    源码介绍 会员分享的一款自带2w数据爱看小说网源码全站带数据打包,ThinkPHP内核小说网站源码带听书等全部插件 还带了采集规则,采集是没问题的但是不保证时效,早下载早采集!! 喜欢的拿去研究学习吧 ...

  7. 影视APP源码 带直播功能与代理系统 带有独立后台

    介绍: ThinkPHP核心[影视APP源码]带直播功能与代理系统 带有独立后台 [包含所有E4A类库] 数 据 库 :MySql 语言编码:PHP 源码大小:30.12M 适用系统:Windows/ ...

  8. 绿豆APP源码苹果CMS影视插件版本原生JAVA源码

    纯净原版绿豆APP源码苹果CMS影视插件版本原生JAVA源码,这套绿豆源码相当完美运行非常流畅,纯原汁原味的绿豆UI,不是市面上被改的乱七八糟的版本,其实大家也清楚网上卖几百的也只是换个底图换个图标而 ...

  9. 直播带货app源码,实现直播的秒开和优化

    一.概述 目前,移动视频直播正处于一个高速膨胀的时期.游戏直播,秀场直播.直播带货app源码等APP铺天盖地.如何在千军万马中脱颖而出,直播的实时性和流畅性是重中之重. 直播带货app源码的实时性对于 ...

  10. 直播带货app源码,实现直播连麦和PK

    一.概述 连麦:是指直播带货app源码中,由观众向主播发起连线请求,在主播和该观众之间建立低延迟的通讯链路,而其他观众可以看到"主播+连麦观众"的合成音视频内容. PK:是指直播过 ...

最新文章

  1. os.system() 和 os.popen()
  2. 荣耀9将要回归金属材质,网友直呼:看着就很贵
  3. 接口自动化测试系列(一):HTTP状态码
  4. Jmeter之事物控制器
  5. python中loop函数_python + Django 的forloop功能试验讲解
  6. asp.net中,%#%,%=%和%%分别是什么意思,有什么区别
  7. Andoid TextView显示富文本html内容及问题处理
  8. python没有联网_无网环境下的 Python 开发指南
  9. python计时器程序设计总框图_怎么用python编写计时器?这个编程的方法你一定不要错过...
  10. SL4A/Py4A直接在adb中用python加载脚本
  11. UITableView上的iOS UIRefreshControl
  12. Linux如何创建makefile文件,如何在Linux上为gcc创建简单的makefile?
  13. AFTN和SITA报文简介
  14. VTK:图形基本操作进阶——连通区域分析
  15. 解决微信企业号和公众号无法调用摄像头拍视频的问题
  16. 前后端交互学习笔记(二):Node.js及npm学习
  17. Kaggle教程 机器学习入门3 你的第一个机器学习模型
  18. mapping文件的编写
  19. 百度数据挖掘实习生面试经验
  20. 创建Mac的shell命令文件(xxx.sh)

热门文章

  1. AutoCAD 2018安装教程
  2. win7局域网共享设置_教你win7局域网共享设置操作步骤
  3. 系统电脑频繁假死(突然屏幕卡死,任何操作无法执行)
  4. python 爬虫 运用urlopen() 和urlretrieve()方法傻瓜操作 爬取虎牙直播主播头像
  5. 抖音运营攻略大全,新手主播必知干货丨国仁网络
  6. Android面试准备复习之Android知识点大扫描
  7. 计算机u盘能直接拨出吗,电脑怎么直接拔出U盘而不丢失数据|电脑可以不用弹出设备直接拔出U盘吗...
  8. 读书笔记:《从生活常识的角度看懂财务报表》
  9. 《犯罪心理学》读书笔记(part2)--犯罪心理学发展史
  10. ros nh.parmam 用法