android开发我的新浪微博客户端-登录页面功能篇

2024-06-18 01:58

本文主要是介绍android开发我的新浪微博客户端-登录页面功能篇,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原文地址: http://www.cnblogs.com/hll2008/archive/2011/01/17/1935396.html


 

     上一篇中完成了如上图的UI部分的实现,现在继续来讲功能的实现,用户登录操作主要就是账号列表显示和选择账号登录两个功能其他的都是些简单的辅助功能,首先是点击id为iconSelectBtn的ImageButton时显示用户选择窗口,这个时候去数据库中获取账号记录然后在选择窗口中以列表方式显示出来,通过上一篇已经知道Id为list的ListView控件来显示账号列表,首先是从数据库中获取所有的账户记录然后设置默认选中的用户账号代码如下:

复制代码
代码
private   void  initUser(){
        
// 获取账号列表
        dbHelper = new  DataHelper( this );
        userList 
=  dbHelper.GetUserList( false );
        
if (userList.isEmpty())
        {
            Intent intent 
=   new  Intent();
            intent.setClass(LoginActivity.
this , AuthorizeActivity. class );
            startActivity(intent);
        }
        
else
        {
            SharedPreferences preferences 
=  getSharedPreferences(Select_Name, Activity.MODE_PRIVATE);
            String str
=  preferences.getString( " name " "" );
            UserInfo user
= null ;
            
if (str != "" )
            {
                user
= GetUserByName(str);
            }
            
if (user == null )
            {
                user
= userList.get( 0 );
            }
            icon.setImageDrawable(user.getUserIcon());
            iconSelect.setText(user.getUserName());
        }
    }
复制代码

       这个initUser() 初始账号的方法在LoginActivity的onCreate中调用,主要完成两件事情,第一件获取通过userList = dbHelper.GetUserList(false);获取所有的账户记录,关于DataHelper前面已经有说过了,如果获取的用户记录为空那么就跳转到用户授权功能页面让用户添加账号,如果不为空那么通过SharedPreferences去读取用户上一次选择的账号名称,如果没有或者数据库里账号记录不包括这个账户名称那么默认显示记录的第一个账号和头像,如果有那么显示这个账户的名称和头像。关于SharedPreferences,是android提供给开发者用来存储一些简单的数据用的,非常方便类似于网站的Cookie,在这里我就是用这个来保存上一次用户选择的是哪个账号,非常实用。

     接下类首先为Id为list的ListView控件准备数据Adapter,这个Adapter非常简单就是普通的adapter继承BaseAdapter即可,代码如下:代码

复制代码
public   class  UserAdapater  extends  BaseAdapter{

        @Override
        
public   int  getCount() {
            
return  userList.size();
        }

        @Override
        
public  Object getItem( int  position) {
            
return  userList.get(position);
        }

        @Override
        
public   long  getItemId( int  position) {
            
return  position;
        }

        @Override
        
public  View getView( int  position, View convertView, ViewGroup parent) {
            convertView 
=  LayoutInflater.from(getApplicationContext()).inflate(R.layout.item_user,  null );

            ImageView iv 
=  (ImageView) convertView.findViewById(R.id.iconImg);
            TextView tv 
=  (TextView) convertView.findViewById(R.id.showName);
            UserInfo user 
=  userList.get(position);
            
try  {
                
// 设置图片显示
                iv.setImageDrawable(user.getUserIcon());
                
// 设置信息
                tv.setText(user.getUserName());

                
            } 
catch  (Exception e) {
                e.printStackTrace();
            }
            
return  convertView;
        }
复制代码

 

接下就是为这个ListView设定数据源Adapter,在账号选择窗口显示的时候进行设置,添加到id为iconSelectBtn的ImageButton的OnClickListener中代码如下:代码

复制代码
ImageButton iconSelectBtn = (ImageButton)findViewById(R.id.iconSelectBtn);
iconSelectBtn.setOnClickListener(
new  OnClickListener(){
            @Override
            
public   void  onClick(View v) {
                ......
                dialog.show();
                
                UserAdapater adapater 
=   new  UserAdapater();
                ListView listview
= (ListView)diaView.findViewById(R.id.list);
                listview.setVerticalScrollBarEnabled(
false ); //  ListView去掉下拉条
                listview.setAdapter(adapater);
                listview.setOnItemClickListener(
new  OnItemClickListener(){
                    @Override
                    
public   void  onItemClick(AdapterView <?>  arg0, View view, int  arg2,  long  arg3) {
                        TextView tv
= (TextView)view.findViewById(R.id.showName);
                        iconSelect.setText(tv.getText());
                        ImageView iv
= (ImageView)view.findViewById(R.id.iconImg);
                        icon.setImageDrawable(iv.getDrawable());
                        dialog.dismiss();
                    }
                    
                });
            }
            
        });
复制代码

通过上面代码完成了账号选择的功能,接下来给id为login的ImageButton添加OnClickListener,使得点击后以当前选择账号进入微博首页,代码如下:

复制代码
代码
@Override
    
public   void  onCreate(Bundle savedInstanceState) {
        
super .onCreate(savedInstanceState);
        setContentView(R.layout.login);
        ......
        ImageButton login
= (ImageButton)findViewById(R.id.login);
        login.setOnClickListener(
new  OnClickListener(){
            @Override
            
public   void  onClick(View v) {
                GoHome();
            }
            
        });
}

// 进入用户首页
private   void  GoHome(){
        
if (userList != null )
        {
            String name
= iconSelect.getText().toString();
            UserInfo u
= GetUserByName(name);
            
if (u != null )
            {
                ConfigHelper.nowUser
= u; // 获取当前选择的用户并且保存
            }
        }
        
if (ConfigHelper.nowUser != null )
        {
                        
// 进入用户首页
            Intent intent  =   new  Intent();
                    intent.setClass(LoginActivity.
this , HomeActivity. class );
                    startActivity(intent);
        }
    }
复制代码

 

在上面的GoHome方法中ConfigHelper.nowUser是类型为UserInfo的static类型用来保存当前登录账号的信息,替代web中session使用。

最后添加如下方法,用来当这个登录LoginActivity结束的时候保存当前选择的账户名称到SharedPreferences中,以便帮用户记住登录账号的功能,就是前面的initUser() 初始账号的方法中会获取保存在SharedPreferences中的账户名称,代码如下:

复制代码
代码
@Override
    
protected   void  onStop() {
        
// 获得SharedPreferences对象
        SharedPreferences MyPreferences  =  getSharedPreferences(Select_Name, Activity.MODE_PRIVATE);
        
// 获得SharedPreferences.Editor对象
        SharedPreferences.Editor editor  =  MyPreferences.edit();
        
// 保存组件中的值
        editor.putString( " name " , iconSelect.getText().toString());
        editor.commit();
        
super .onStop();
    }
复制代码

 

至此登录页面功能篇结束,请继续关注下一篇。 

这篇关于android开发我的新浪微博客户端-登录页面功能篇的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1070984

相关文章

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D

基于Python开发Windows自动更新控制工具

《基于Python开发Windows自动更新控制工具》在当今数字化时代,操作系统更新已成为计算机维护的重要组成部分,本文介绍一款基于Python和PyQt5的Windows自动更新控制工具,有需要的可... 目录设计原理与技术实现系统架构概述数学建模工具界面完整代码实现技术深度分析多层级控制理论服务层控制注

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

使用EasyPoi快速导出Word文档功能的实现步骤

《使用EasyPoi快速导出Word文档功能的实现步骤》EasyPoi是一个基于ApachePOI的开源Java工具库,旨在简化Excel和Word文档的操作,本文将详细介绍如何使用EasyPoi快速... 目录一、准备工作1、引入依赖二、准备好一个word模版文件三、编写导出方法的工具类四、在Export

JS纯前端实现浏览器语音播报、朗读功能的完整代码

《JS纯前端实现浏览器语音播报、朗读功能的完整代码》在现代互联网的发展中,语音技术正逐渐成为改变用户体验的重要一环,下面:本文主要介绍JS纯前端实现浏览器语音播报、朗读功能的相关资料,文中通过代码... 目录一、朗读单条文本:① 语音自选参数,按钮控制语音:② 效果图:二、朗读多条文本:① 语音有默认值:②

C#自动化实现检测并删除PDF文件中的空白页面

《C#自动化实现检测并删除PDF文件中的空白页面》PDF文档在日常工作和生活中扮演着重要的角色,本文将深入探讨如何使用C#编程语言,结合强大的PDF处理库,自动化地检测并删除PDF文件中的空白页面,感... 目录理解PDF空白页的定义与挑战引入Spire.PDF for .NET库核心实现:检测并删除空白页

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

90%的人第一步就错了! 顺利登录wifi路由器后台的技巧

《90%的人第一步就错了!顺利登录wifi路由器后台的技巧》登录Wi-Fi路由器,其实就是进入它的后台管理页面,很多朋友不知道该怎么进入路由器后台设置,感兴趣的朋友可以花3分钟了解一下... 你是不是也遇到过这种情况:家里网速突然变慢、想改WiFi密码却不知道从哪进路由器、新装宽带后完全不知道怎么设置?别慌

C#实现高性能拍照与水印添加功能完整方案

《C#实现高性能拍照与水印添加功能完整方案》在工业检测、质量追溯等应用场景中,经常需要对产品进行拍照并添加相关信息水印,本文将详细介绍如何使用C#实现一个高性能的拍照和水印添加功能,包含完整的代码实现... 目录1. 概述2. 功能架构设计3. 核心代码实现python3.1 主拍照方法3.2 安全HBIT

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求: