看到这个登录,相信大家都做过,也遇到过问题。现在我把觉得要处理的几个细节说出来。
(1)当手机展示这个界面时,我们首先要判断的是,是否有网络。
(2)怎么样记住账号?
(3)当输入法出现时,是否让界面上移,是输入法不遮住输入框。
(4)怎么通过异步加载来验证账号和密码?
最后我说下,我这个只是粗糙的UI,通常我们要根据需求实现用户体验更好的布局和控件的。这点以后我想把我的想法和大家分享下。今天先说这4点吧。。
一、判断是否有网络这个大家搜一下资料就知道有很多的,我还是弱弱地写下我怎么实现的。
1.首先看到网络,我们就该想到设置权限啦,大家都懂的
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
然后我贴上核心代码吧:
判断没网络后,我们要展示提示信息了,这个方法各有千秋,我在自己的demo里写了一种简单的方法——通过dialog展示。
2.怎么记住账号和密码呢??还有大家常见的导航界面,其实通常是通过SharedPreferences来处理的。
通常我们在OnCreate()方法里加载保存的信息。
然后监听CheckBox的状态来保存用户信息啦。
isChecked参数:true:表示checkbox被选中 false:表示未被选中
3.我们只需通过在AndroidManifest.xml里设置android:windowSoftInputMode=XXX来控制界面是否上移。
没有设置时,当我们启动输入法时会发现很尴尬,输入法会遮住居中的输入框(我是通过G12测试的)
我直接在application节点里设置的,适用于各个actvity。。设置前后大家最好用手机自己体验下区别。
4.当我们点击登录按钮时,我们会将登录信息post到服务器,然后服务器返回信息(返回的信息格式可能是json,xml,简单数据类型,或者复合数据类型等等),通常需要我们 自己解析的。整个发送到返回需要一定时间的,如果我们将这个耗时操作放在actvity的主线程,很可能出现ANR(application not response),因此我们要开子线程来处理这些。android中有两种处理方式:handler和asynctask。
我是通过handler来处理的。这边的核心代码我在demo已经写了,如果大家觉得对学习有帮助的话下载这个demo吧。。
http://download.csdn.net/detail/xiana2012/4675438