Android开发登录功能那些事儿

Android新人刚刚参与项目,部门接到的项目是开发一个直播软件,我负责信息验证、登录以及设置等功能的实现,本文先从登录功能的实现说起。登录功能几乎是所有APP都必须具备的,下面我就来分享一下我在开发时遇到的一些值得记录的东西。通常来说登录页面包含两个EditText,分别对应使用者的账号密码(手机端验证码出现比较少,暂不考虑)。下面来说说一款优秀的手机应用登录页面应该包含哪些人性化的小组件。

1.很多应用的EditText为了给用户一个非常好的交互感受,会在左端设计一个表示输入内容的小图标。如“账号”出设置一个人头像,“密码”处设置一把锁头或钥匙,“搜索”处设置一个放大镜等等。这个时候要用到以下几个属性

android:drawableLeft     //设置位于EditText左边的小图标
android:paddingLeft      //设置该图标距离EditText左端的距离
android:drawablePadding  //设置hint或输入的文本与左边小图标的距离
android:hint             //设置EditText在没有任何输入的时候显示的提示,设置后利于自定义下划线

2.由于Android原生EditText的下划线比较一般,很多UI设计师选择设计其他样式或者颜色的下划线,这时候就需要取消原生EditText下划线的显示,而使用ImageView画一条下划线。
android:background="@null" //取消原生EditText下划线的显示

3.一个用户体验较好的EditText,还应该在输入框右端设置一个“×”图标,用于一键清空输入的文本信息。实现的方法类似于上述设置左端小图标,还需要补充的是在登录的Activity类中为ImageView设置onclick()方法,在方法中加入EditText.setText("");即可。

4.在登录Activity中,我们还应该加入记住账号密码功能,为了操作简便我们在登录成功后直接将账号和密码写入到SharedPreferences中,在onCreate()方法中读取账号密码并将二者回显到EditText中(因为是公司内部用的软件所以只考虑每部手机绑定一个账号)。如果要绑定多个账号密码请选择使用带下拉框的EditText进行回显。

以上是登录页面的常规功能的实现,下面来说说开发登录功能时应该注意的小细节:

1.将EditText的maxLines属性设为1。程序员们编程普遍的思想是先思考“我在使用这个APP的时候会做哪些事?”,然后将这些事情解决就好了。但是产品思考的是“一个完全不按套路出牌的人使用这个APP的时候会做哪些事?”这就非常需要我们程序员们做好限制了。虽说一般不会有人的账号密码足够长到第二行去,也不会输入到一半莫名其妙按回车键,但如果真的有这种情况出现导致布局变形或是程序崩溃,最终需要负责任的仍然是我们程序员。

2.在EditText中禁用回车键。原因同上,但实现起来却出现了一些状况。代码如下:
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
    switch (v.getId()) {
        case R.id.et_username:
            if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            return true;
            }
            return false;
        case R.id.et_password:
            if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER) {
            return true;
            }
            return false;
    }
    return false;
}
返回值为true代表你将该输入值拦截下来自定义处理,为false则代表不做任何处理。代码逻辑没有任何问题,回车键也确实已经失效,但当我在密码框输入密码后无意中按下了“完成”键时,程序报出空指针异常(三星输入法)。原因是三星键盘中“完成”键可以被onEditorAction()方法拦截到,但特别奇怪的是该按键并不属于KeyEvent类型,所以event.getKeyCode()处会出现异常。
解决的方法是:在onEditorAction()方法第一行先判断传入的event对象是否为空。
if (event == null) { 
    return false;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值