欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

简易UI

程序员文章站 2022-03-10 23:09:26
用户登录注册界面开发及用户信息管理案例详解 刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录、注册、注销、修改密码、记住密码共5个基本操作,其内容涉及到以下几点: 1:Button,TextView,TextEdit,ImageView,RatioButton等基本控件的使用; 2:多个Activities之间的切换; 3:使用Android本地数据库来管理用户信息。 实现上述功能的主要参考资料:CSDN博客之星郭霖大牛写的《第一行代码—A...

用户登录注册界面开发及用户信息管理案例详解
刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录、注册、注销、修改密码、记住密码共5个基本操作,其内容涉及到以下几点:

1:Button,TextView,TextEdit,ImageView,RatioButton等基本控件的使用;
2:多个Activities之间的切换;
3:使用Android本地数据库来管理用户信息。
实现上述功能的主要参考资料:CSDN博客之星郭霖大牛写的《第一行代码—Android》,个人比较喜欢看纸质的资料,所以买了这本书,大牛的博客主页链接http://my.csdn.net/sinyu890807。其次是参考了网上的一个用户登录注册的程序,在此基础上按照自己的需求慢慢添加完善一些功能,并且将原来的单个avtivity换用多个activity实现,UI设计也更加漂亮美观。
先上几个图【我在android6.0.1的真机上调试的】:
下面是用户登录和用户注册界面。用户登录注册界面开发及用户信息管理案例详解
刚开始接触Android编程,这算是我写的第一个简单工程,主要功能有:用户登录、注册、注销、修改密码、记住密码共5个基本操作,其内容涉及到以下几点:
1:Button,TextView,TextEdit,ImageView,RatioButton等基本控件的使用;
2:多个Activities之间的切换;
3:使用Android本地数据库来管理用户信息。
实现上述功能的主要参考资料:CSDN博客之星郭霖大牛写的《第一行代码—Android》,个人比较喜欢看纸质的资料,所以买了这本书,大牛的博客主页链接http://my.csdn.net/sinyu890807。其次是参考了网上的一个用户登录注册的程序,在此基础上按照自己的需求慢慢添加完善一些功能,并且将原来的单个avtivity换用多个activity实现,UI设计也更加漂亮美观。
先上几个图【我在android6.0.1的真机上调试的】:
下面是用户登录和用户注册界面。
简易UI
下面是用户密码修改和个人中心界面。
简易UI
**

一、工程代码

**
整个工程是在Android Studio 2.1.1环境下实现的,源码下载链接在末尾给出,下面是工程目录:
简易UI
这里先贴出各个布局文件.xml,各个类内容和各个activity代码:

1:几个界面布局文件.xml

    login.xml【登录界面】
<?xml version=1.0” encoding=“utf-8?>  
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”  
    xmlns:tools=”http://schemas.android.com/tools”  
    android:layout_width=”match_parent”  
    android:layout_height=”match_parent”  
    android:paddingBottom=@dimen/activity_vertical_margin”  
    android:paddingLeft=@dimen/activity_horizontal_margin”  
    android:paddingRight=@dimen/activity_horizontal_margin”  
    android:paddingTop=@dimen/activity_vertical_margin”  
    tools:context=”com.example.foolishfan.user_v10.Login”>  
    <RelativeLayout  
        android:id=”@+id/login_view”  
        android:layout_width=400dp”  
        android:layout_height=800dp”  
        android:layout_centerInParent=true>  
  
        <Button  
            android:layout_width=”fill_parent”  
            android:layout_height=”wrap_content”  
            android:text=”注册”  
            android:id=”@+id/login_btn_register”  
            android:onClick=”resetpwd”  
            android:textColor=”#ffffff”  
            android:background=”#e52525”  
            android:textSize=20dp”  
            android:layout_below=”@+id/login_btn_login”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true”  
            android:layout_marginTop=10dp” />  
  
        <Button  
            android:layout_width=”fill_parent”  
            android:layout_height=”wrap_content”  
            android:text=”登录”  
            android:id=”@+id/login_btn_login”  
            android:onClick=”finish_login”  
            android:background=”#545bcb”  
            android:textSize=20dp”  
            android:textColor=”#ffffff”  
            android:layout_below=”@+id/login_edit_pwd”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true”  
            android:layout_marginTop=52dp” />  
  
        <ImageView  
            android:layout_width=300dp”  
            android:layout_height=150dp”  
            android:id=”@+id/logo”  
            android:layout_alignParentRight=true”  
            android:layout_alignParentEnd=true”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true”  
            android:layout_alignParentTop=true”  
            android:layout_alignWithParentIfMissing=false”  
            android:background=”#ffffff” />  
  
        <EditText  
            android:layout_width=400dp”  
            android:layout_height=60dp”  
            android:inputType=”textPassword”  
            android:ems=10”  
            android:id=”@+id/login_edit_pwd”  
            android:drawableLeft=@android:drawable/ic_lock_idle_lock”  
            android:hint=”请输入您的密码”  
            android:layout_below=”@+id/login_edit_account”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true/>  
  
        <EditText  
            android:layout_width=400dp”  
            android:layout_height=60dp”  
            android:inputType=”textPersonName”  
            android:id=”@+id/login_edit_account”  
            android:drawableLeft=@android:drawable/ic_menu_myplaces”  
            android:hint=”请输入您的用户名”  
            android:layout_below=”@+id/logo”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true”  
            android:layout_marginTop=20dp” />  
  
        <Button  
            android:layout_width=”fill_parent”  
            android:layout_height=”wrap_content”  
            android:text=”注销”  
            android:id=”@+id/login_btn_cancle”  
            android:textSize=20dp”  
            android:layout_below=”@+id/login_btn_register”  
            android:layout_marginTop=10dp”  
            android:layout_alignParentRight=true”  
            android:layout_alignParentEnd=true”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true”  
            android:textColor=”#ffffff”  
            android:background=”#3a1313” />  
  
        <CheckBox  
            android:layout_width=100dp”  
            android:layout_height=20dp”  
            android:text=”记住密码”  
            android:id=”@+id/Login_Remember”  
            android:layout_below=”@+id/login_edit_pwd”  
            android:layout_alignParentLeft=true”  
            android:layout_alignParentStart=true”  
            android:checked=false”  
            android:textSize=15dp” />  
  
        <TextView  
            android:layout_width=60dp”  
            android:layout_height=20dp”  
            android:text=”修改密码”  
            android:id=”@+id/login_text_change_pwd”  
            android:layout_below=”@+id/login_edit_pwd”  
            android:layout_alignParentRight=true”  
            android:layout_alignParentEnd=true”  
            android:textSize=15dp” />  
    </RelativeLayout>  
    <RelativeLayout  
        android:id=”@+id/login_success_view”  
        android:layout_width=”fill_parent”  
        android:layout_height=”wrap_content”  
        android:layout_centerInParent=true”  
        android:layout_marginLeft=15.0px”  
        android:layout_marginRight=15.0px”  
        android:layout_marginTop=62.0px”  
        android:background=”#ff3f3f3f”  
        android:paddingBottom=10.0px”  
        android:paddingTop=21.0px”  
        android:visibility=”gone” >  
  
        <TextView  
            android:id=”@+id/login_success_show”  
            android:layout_width=”wrap_content”  
            android:layout_height=”wrap_content”  
            android:layout_centerInParent=true”  
            android:textColor=”#ff3f3f3f”  
            android:textSize=20.0dip” />  
    </RelativeLayout>  
  
</RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.foolishfan.user_v10.Login">
    <RelativeLayout
        android:id="@+id/login_view"
        android:layout_width="400dp"
        android:layout_height="800dp"
        android:layout_centerInParent="true"
         >

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="注册"
            android:id="@+id/login_btn_register"
            android:onClick="resetpwd"
            android:textColor="#ffffff"
            android:background="#e52525"
            android:textSize="20dp"
            android:layout_below="@+id/login_btn_login"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="10dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="登录"
            android:id="@+id/login_btn_login"
            android:onClick="finish_login"
            android:background="#545bcb"
            android:textSize="20dp"
            android:textColor="#ffffff"
            android:layout_below="@+id/login_edit_pwd"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="52dp" />

        <ImageView
            android:layout_width="300dp"
            android:layout_height="150dp"
            android:id="@+id/logo"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:layout_alignWithParentIfMissing="false"
            android:background="#ffffff" />

        <EditText
            android:layout_width="400dp"
            android:layout_height="60dp"
            android:inputType="textPassword"
            android:ems="10"
            android:id="@+id/login_edit_pwd"
            android:drawableLeft="@android:drawable/ic_lock_idle_lock"
            android:hint="请输入您的密码"
            android:layout_below="@+id/login_edit_account"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />

        <EditText
            android:layout_width="400dp"
            android:layout_height="60dp"
            android:inputType="textPersonName"
            android:id="@+id/login_edit_account"
            android:drawableLeft="@android:drawable/ic_menu_myplaces"
            android:hint="请输入您的用户名"
            android:layout_below="@+id/logo"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_marginTop="20dp" />

        <Button
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="注销"
            android:id="@+id/login_btn_cancle"
            android:textSize="20dp"
            android:layout_below="@+id/login_btn_register"
            android:layout_marginTop="10dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:textColor="#ffffff"
            android:background="#3a1313" />

        <CheckBox
            android:layout_width="100dp"
            android:layout_height="20dp"
            android:text="记住密码"
            android:id="@+id/Login_Remember"
            android:layout_below="@+id/login_edit_pwd"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:checked="false"
            android:textSize="15dp" />

        <TextView
            android:layout_width="60dp"
            android:layout_height="20dp"
            android:text="修改密码"
            android:id="@+id/login_text_change_pwd"
            android:layout_below="@+id/login_edit_pwd"
            android:layout_alignParentRight="true"
            android:layout_alignParentEnd="true"
            android:textSize="15dp" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/login_success_view"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_marginLeft="15.0px"
        android:layout_marginRight="15.0px"
        android:layout_marginTop="62.0px"
        android:background="#ff3f3f3f"
        android:paddingBottom="10.0px"
        android:paddingTop="21.0px"
        android:visibility="gone" >

        <TextView
            android:id="@+id/login_success_show"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:textColor="#ff3f3f3f"
            android:textSize="20.0dip" />
    </RelativeLayout>

</RelativeLayout>
register.xml【注册界面】
<?xml version=1.0” encoding=“utf-8?>  
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”  
    android:layout_width=”match_parent”  
    android:layout_height=”match_parent”  
    android:paddingBottom=@dimen/activity_vertical_margin”  
    android:paddingLeft=@dimen/activity_horizontal_margin”  
    android:paddingRight=@dimen/activity_horizontal_margin”  
    android:paddingTop=@dimen/activity_vertical_margin”  
    android:weightSum=1>  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_menu_myplaces”  
        android:layout_width=”wrap_content”  
        android:layout_height=60dp”  
        android:inputType=”textPersonName”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_name”  
        android:layout_alignParentTop=true”  
        android:hint=”请输入您的用户名”  
        android:layout_alignLeft=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignStart=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignRight=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignEnd=”@+id/resetpwd_edit_pwd_new” />  
  
    <!<EditText android:id=”@+id/edt_operator_name” style=@style/syncEditText”  
        android:hint=@string/hint_operator_name” />  
    <ImageView android:id=”@+id/syncOperatorImg” style=@style/syncImageView”  
        android:layout_alignLeft=”@+id/edt_operator_name”  
        android:layout_alignTop=”@+id/edt_operator_name”  
        android:layout_alignBottom=”@+id/edt_operator_name” android:src=@drawable/sync_operator” />>  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_lock_idle_lock”  
        android:layout_width=”fill_parent”  
        android:layout_height=60dp”  
        android:inputType=”textPassword”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_pwd_old”  
        android:hint=”请输入您的密码”  
        android:layout_below=”@+id/resetpwd_edit_name”  
        android:layout_alignRight=”@+id/resetpwd_edit_name”  
        android:layout_alignEnd=”@+id/resetpwd_edit_name”  
        android:layout_alignLeft=”@+id/resetpwd_edit_name”  
        android:layout_alignStart=”@+id/resetpwd_edit_name” />  
  
    <Button  
        android:layout_width=”fill_parent”  
        android:layout_height=”wrap_content”  
        android:text=”取消”  
        android:id=”@+id/register_btn_cancel”  
        android:textSize=20dp”  
        android:background=”#f71818”  
        android:layout_below=”@+id/register_btn_sure”  
        android:layout_alignLeft=”@+id/register_btn_sure”  
        android:layout_alignStart=”@+id/register_btn_sure”  
        android:layout_marginTop=10dp” />  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_lock_idle_lock”  
        android:layout_width=”fill_parent”  
        android:layout_height=60dp”  
        android:inputType=”textPassword”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_pwd_new”  
        android:layout_below=”@+id/resetpwd_edit_pwd_old”  
        android:layout_centerHorizontal=true”  
        android:hint=”请确认您的密码” />  
  
    <Button  
        android:layout_width=”fill_parent”  
        android:layout_height=”wrap_content”  
        android:text=”确定”  
        android:id=”@+id/register_btn_sure”  
        android:textSize=20dp”  
        android:background=”#1cf718”  
        android:layout_below=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignLeft=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignStart=”@+id/resetpwd_edit_pwd_new”  
        android:layout_marginTop=20dp” />  
  
</RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:weightSum="1">

    <EditText
        android:drawableLeft="@android:drawable/ic_menu_myplaces"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/resetpwd_edit_name"
        android:layout_alignParentTop="true"
        android:hint="请输入您的用户名"
        android:layout_alignLeft="@+id/resetpwd_edit_pwd_new"
        android:layout_alignStart="@+id/resetpwd_edit_pwd_new"
        android:layout_alignRight="@+id/resetpwd_edit_pwd_new"
        android:layout_alignEnd="@+id/resetpwd_edit_pwd_new" />

    <!--

    <EditText android:id="@+id/edt_operator_name" style="@style/syncEditText"
        android:hint="@string/hint_operator_name" />
    <ImageView android:id="@+id/syncOperatorImg" style="@style/syncImageView"
        android:layout_alignLeft="@+id/edt_operator_name"
        android:layout_alignTop="@+id/edt_operator_name"
        android:layout_alignBottom="@+id/edt_operator_name" android:src="@drawable/sync_operator" />
-->

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_old"
        android:hint="请输入您的密码"
        android:layout_below="@+id/resetpwd_edit_name"
        android:layout_alignRight="@+id/resetpwd_edit_name"
        android:layout_alignEnd="@+id/resetpwd_edit_name"
        android:layout_alignLeft="@+id/resetpwd_edit_name"
        android:layout_alignStart="@+id/resetpwd_edit_name" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="取消"
        android:id="@+id/register_btn_cancel"
        android:textSize="20dp"
        android:background="#f71818"
        android:layout_below="@+id/register_btn_sure"
        android:layout_alignLeft="@+id/register_btn_sure"
        android:layout_alignStart="@+id/register_btn_sure"
        android:layout_marginTop="10dp" />

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_new"
        android:layout_below="@+id/resetpwd_edit_pwd_old"
        android:layout_centerHorizontal="true"
        android:hint="请确认您的密码" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="确定"
        android:id="@+id/register_btn_sure"
        android:textSize="20dp"
        android:background="#1cf718"
        android:layout_below="@+id/resetpwd_edit_pwd_new"
        android:layout_alignLeft="@+id/resetpwd_edit_pwd_new"
        android:layout_alignStart="@+id/resetpwd_edit_pwd_new"
        android:layout_marginTop="20dp" />

</RelativeLayout>

resetpwd.xml【修改密码界面】

<?xml version=1.0” encoding=“utf-8?>  
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”  
    android:layout_width=”match_parent”  
    android:layout_height=”match_parent”  
    android:paddingBottom=@dimen/activity_vertical_margin”  
    android:paddingLeft=@dimen/activity_horizontal_margin”  
    android:paddingRight=@dimen/activity_horizontal_margin”  
    android:paddingTop=@dimen/activity_vertical_margin”  
    android:weightSum=1>  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_menu_myplaces”  
        android:layout_width=”wrap_content”  
        android:layout_height=60dp”  
        android:inputType=”textPersonName”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_name”  
        android:layout_alignParentTop=true”  
        android:hint=”请输入您的用户名”  
        android:layout_alignLeft=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignStart=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignRight=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignEnd=”@+id/resetpwd_edit_pwd_new” />  
  
    <!<EditText android:id=”@+id/edt_operator_name” style=@style/syncEditText”  
            android:hint=@string/hint_operator_name” />  
        <ImageView android:id=”@+id/syncOperatorImg” style=@style/syncImageView”  
            android:layout_alignLeft=”@+id/edt_operator_name”  
            android:layout_alignTop=”@+id/edt_operator_name”  
            android:layout_alignBottom=”@+id/edt_operator_name” android:src=@drawable/sync_operator” />>  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_lock_idle_lock”  
        android:layout_width=”fill_parent”  
        android:layout_height=60dp”  
        android:inputType=”textPassword”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_pwd_old”  
        android:hint=”请输入您的旧密码”  
        android:layout_below=”@+id/resetpwd_edit_name”  
        android:layout_alignRight=”@+id/resetpwd_edit_name”  
        android:layout_alignEnd=”@+id/resetpwd_edit_name”  
        android:layout_alignLeft=”@+id/resetpwd_edit_name”  
        android:layout_alignStart=”@+id/resetpwd_edit_name” />  
  
    <Button  
        android:layout_width=”fill_parent”  
        android:layout_height=”wrap_content”  
        android:text=”取消”  
        android:id=”@+id/resetpwd_btn_cancel”  
        android:textSize=20dp”  
        android:onClick=”not_to_reset”  
        android:background=”#f71818”  
        android:layout_below=”@+id/resetpwd_btn_sure”  
        android:layout_alignParentLeft=true”  
        android:layout_alignParentStart=true”  
        android:layout_marginTop=20dp” />  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_lock_idle_lock”  
        android:layout_width=”fill_parent”  
        android:layout_height=60dp”  
        android:inputType=”textPassword”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_pwd_new”  
        android:layout_below=”@+id/resetpwd_edit_pwd_old”  
        android:layout_centerHorizontal=true”  
        android:hint=”请确认您的新密码”  
        />  
  
    <Button  
        android:layout_width=”fill_parent”  
        android:layout_height=”wrap_content”  
        android:text=”确定”  
        android:id=”@+id/resetpwd_btn_sure”  
        android:textSize=20dp”  
        android:onClick=”sure_to_reset”  
        android:background=”#1cf718”  
        android:layout_marginTop=92dp”  
        android:layout_below=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignParentLeft=true”  
        android:layout_alignParentStart=true/>  
  
    <EditText  
        android:drawableLeft=@android:drawable/ic_lock_idle_lock”  
        android:layout_width=”fill_parent”  
        android:layout_height=60dp”  
        android:inputType=”textPassword”  
        android:ems=10”  
        android:id=”@+id/resetpwd_edit_pwd_check”  
        android:hint=”请输入您的新密码”  
        android:layout_below=”@+id/resetpwd_edit_pwd_new”  
        android:layout_alignParentLeft=true”  
        android:layout_alignParentStart=true/>  
  
</RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:weightSum="1">

    <EditText
        android:drawableLeft="@android:drawable/ic_menu_myplaces"
        android:layout_width="wrap_content"
        android:layout_height="60dp"
        android:inputType="textPersonName"
        android:ems="10"
        android:id="@+id/resetpwd_edit_name"
        android:layout_alignParentTop="true"
        android:hint="请输入您的用户名"
        android:layout_alignLeft="@+id/resetpwd_edit_pwd_new"
        android:layout_alignStart="@+id/resetpwd_edit_pwd_new"
        android:layout_alignRight="@+id/resetpwd_edit_pwd_new"
        android:layout_alignEnd="@+id/resetpwd_edit_pwd_new" />

    <!--

        <EditText android:id="@+id/edt_operator_name" style="@style/syncEditText"
            android:hint="@string/hint_operator_name" />
        <ImageView android:id="@+id/syncOperatorImg" style="@style/syncImageView"
            android:layout_alignLeft="@+id/edt_operator_name"
            android:layout_alignTop="@+id/edt_operator_name"
            android:layout_alignBottom="@+id/edt_operator_name" android:src="@drawable/sync_operator" />
    -->

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_old"
        android:hint="请输入您的旧密码"
        android:layout_below="@+id/resetpwd_edit_name"
        android:layout_alignRight="@+id/resetpwd_edit_name"
        android:layout_alignEnd="@+id/resetpwd_edit_name"
        android:layout_alignLeft="@+id/resetpwd_edit_name"
        android:layout_alignStart="@+id/resetpwd_edit_name" />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="取消"
        android:id="@+id/resetpwd_btn_cancel"
        android:textSize="20dp"
        android:onClick="not_to_reset"
        android:background="#f71818"
        android:layout_below="@+id/resetpwd_btn_sure"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="20dp" />

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_new"
        android:layout_below="@+id/resetpwd_edit_pwd_old"
        android:layout_centerHorizontal="true"
        android:hint="请确认您的新密码"
        />

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="确定"
        android:id="@+id/resetpwd_btn_sure"
        android:textSize="20dp"
        android:onClick="sure_to_reset"
        android:background="#1cf718"
        android:layout_marginTop="92dp"
        android:layout_below="@+id/resetpwd_edit_pwd_new"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <EditText
        android:drawableLeft="@android:drawable/ic_lock_idle_lock"
        android:layout_width="fill_parent"
        android:layout_height="60dp"
        android:inputType="textPassword"
        android:ems="10"
        android:id="@+id/resetpwd_edit_pwd_check"
        android:hint="请输入您的新密码"
        android:layout_below="@+id/resetpwd_edit_pwd_new"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

user.xml【个人中心】

<?xml version=1.0” encoding=“utf-8?>  
<RelativeLayout xmlns:android=”http://schemas.android.com/apk/res/android”  
    android:layout_width=”match_parent”  
    android:layout_height=”match_parent”  
    android:paddingBottom=@dimen/activity_vertical_margin”  
    android:paddingLeft=@dimen/activity_horizontal_margin”  
    android:paddingRight=@dimen/activity_horizontal_margin”  
    android:paddingTop=@dimen/activity_vertical_margin”>  
  
    <TextView  
        android:layout_width=”wrap_content”  
        android:layout_height=”wrap_content”  
        android:textAppearance=?android:attr/textAppearanceLarge”  
        android:text=”FooilshFan您好,欢迎回来!”  
        android:id=”@+id/textView”  
        android:layout_centerHorizontal=true”  
        android:layout_marginLeft=50dp”  
        android:layout_marginTop=6dp”  
        android:textSize=16dp” />  
  
    <Button  
        android:layout_width=”wrap_content”  
        android:layout_height=”wrap_content”  
        android:text=”退出”  
        android:id=”@+id/returnback”  
        android:layout_below=”@+id/textView”  
        android:layout_marginTop=36dp”  
        android:onClick=”back_to_login”  
        android:textColor=”#ffffff”  
        android:textSize=20dp”  
        android:background=”#d95b5b”  
        android:layout_alignParentLeft=true”  
        android:layout_alignParentStart=true”  
        android:layout_alignParentRight=true”  
        android:layout_alignParentEnd=true/>  
  
</RelativeLayout>  
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="FooilshFan您好,欢迎回来!"
        android:id="@+id/textView"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="50dp"
        android:layout_marginTop="6dp"
        android:textSize="16dp" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="退出"
        android:id="@+id/returnback"
        android:layout_below="@+id/textView"
        android:layout_marginTop="36dp"
        android:onClick="back_to_login"
        android:textColor="#ffffff"
        android:textSize="20dp"
        android:background="#d95b5b"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

</RelativeLayout>

2:用户数据管理的类

UserData.java 【用户数据】

package com.example.foolishfan.user_v10;  
public class UserData {  
    private String userName;                  //用户名  
    private String userPwd;                   //用户密码  
    private int userId;                       //用户ID号  
    public int pwdresetFlag=0;  
    //获取用户名  
    public String getUserName() {             //获取用户名  
        return userName;  
    }  
    //设置用户名  
    public void setUserName(String userName) {  //输入用户名  
        this.userName = userName;  
    }  
    //获取用户密码  
    public String getUserPwd() {                //获取用户密码  
        return userPwd;  
    }  
    //设置用户密码  
    public void setUserPwd(String userPwd) {     //输入用户密码  
        this.userPwd = userPwd;  
    }  
    //获取用户id  
    public int getUserId() {                   //获取用户ID号  
        return userId;  
    }  
    //设置用户id  
    public void setUserId(int userId) {       //设置用户ID号  
        this.userId = userId;  
    }  
    public UserData(String userName, String userPwd) {  //这里只采用用户名和密码  
        super();  
        this.userName = userName;  
        this.userPwd = userPwd;  
    }  
  
}  
package com.example.foolishfan.user_v10;
public class UserData {
    private String userName;                  //用户名
    private String userPwd;                   //用户密码
    private int userId;                       //用户ID号
    public int pwdresetFlag=0;
    //获取用户名
    public String getUserName() {             //获取用户名
        return userName;
    }
    //设置用户名
    public void setUserName(String userName) {  //输入用户名
        this.userName = userName;
    }
    //获取用户密码
    public String getUserPwd() {                //获取用户密码
        return userPwd;
    }
    //设置用户密码
    public void setUserPwd(String userPwd) {     //输入用户密码
        this.userPwd = userPwd;
    }
    //获取用户id
    public int getUserId() {                   //获取用户ID号
        return userId;
    }
    //设置用户id
    public void setUserId(int userId) {       //设置用户ID号
        this.userId = userId;
    }
    public UserData(String userName, String userPwd) {  //这里只采用用户名和密码
        super();
        this.userName = userName;
        this.userPwd = userPwd;
    }

}

UserDataManager.java【用户管理】

package com.example.foolishfan.user_v10;  
import android.content.ContentValues;  
import android.content.Context;  
import android.database.Cursor;  
import android.database.SQLException;  
import android.database.sqlite.SQLiteDatabase;  
import android.database.sqlite.SQLiteOpenHelper;  
import android.util.Log;  
  
public class UserDataManager {             //用户数据管理类  
    //一些宏定义和声明  
    private static final String TAG = “UserDataManager”;  
    private static final String DB_NAME = “user_data”;  
    private static final String TABLE_NAME = “users”;  
    public static final String ID = “_id”;  
    public static final String USER_NAME = “user_name”;  
    public static final String USER_PWD = “user_pwd”;  
//    public static final String SILENT = “silent”;  
//    public static final String VIBRATE = “vibrate”;  
    private static final int DB_VERSION = 2;  
    private Context mContext = null;  
  
    //创建用户book表  
    private static final String DB_CREATE = “CREATE TABLE ” + TABLE_NAME +(+ ID + ” integer primary key,+ USER_NAME + “ varchar,+ USER_PWD + ” varchar” +);;  
  
    private SQLiteDatabase mSQLiteDatabase = null;  
    private DataBaseManagementHelper mDatabaseHelper = null;  
  
    //DataBaseManagementHelper继承自SQLiteOpenHelper  
    private static class DataBaseManagementHelper extends SQLiteOpenHelper {  
  
        DataBaseManagementHelper(Context context) {  
            super(context, DB_NAME, null, DB_VERSION);  
        }  
  
        @Override  
        public void onCreate(SQLiteDatabase db) {  
            Log.i(TAG,”db.getVersion()=+db.getVersion());  
            db.execSQL(”DROP TABLE IF EXISTS ” + TABLE_NAME +;);  
            db.execSQL(DB_CREATE);  
            Log.i(TAG, ”db.execSQL(DB_CREATE));  
            Log.e(TAG, DB_CREATE);  
        }  
  
        @Override  
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
            Log.i(TAG, ”DataBaseManagementHelper onUpgrade”);  
            onCreate(db);  
        }  
    }  
  
    public UserDataManager(Context context) {  
        mContext = context;  
        Log.i(TAG, ”UserDataManager construction!);  
    }  
    //打开数据库  
    public void openDataBase() throws SQLException {  
        mDatabaseHelper = new DataBaseManagementHelper(mContext);  
        mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();  
    }  
    //关闭数据库  
    public void closeDataBase() throws SQLException {  
        mDatabaseHelper.close();  
    }  
    //添加新用户,即注册  
    public long insertUserData(UserData userData) {  
        String userName=userData.getUserName();  
        String userPwd=userData.getUserPwd();  
        ContentValues values = new ContentValues();  
        values.put(USER_NAME, userName);  
        values.put(USER_PWD, userPwd);  
        return mSQLiteDatabase.insert(TABLE_NAME, ID, values);  
    }  
    //更新用户信息,如修改密码  
    public boolean updateUserData(UserData userData) {  
        //int id = userData.getUserId();  
        String userName = userData.getUserName();  
        String userPwd = userData.getUserPwd();  
        ContentValues values = new ContentValues();  
        values.put(USER_NAME, userName);  
        values.put(USER_PWD, userPwd);  
        return mSQLiteDatabase.update(TABLE_NAME, values,null, null) > 0;  
        //return mSQLiteDatabase.update(TABLE_NAME, values, ID + ”=” + id, null) > 0;  
    }  
    //  
    public Cursor fetchUserData(int id) throws SQLException {  
        Cursor mCursor = mSQLiteDatabase.query(false, TABLE_NAME, null, ID  
                +=+ id, null, null, null, null, null);  
        if (mCursor != null) {  
            mCursor.moveToFirst();  
        }  
        return mCursor;  
    }  
    //  
    public Cursor fetchAllUserDatas() {  
        return mSQLiteDatabase.query(TABLE_NAME, null, null, null, null, null,  
                null);  
    }  
    //根据id删除用户  
    public boolean deleteUserData(int id) {  
        return mSQLiteDatabase.delete(TABLE_NAME, ID +=+ id, null) > 0;  
    }  
    //根据用户名注销  
    public boolean deleteUserDatabyname(String name) {  
        return mSQLiteDatabase.delete(TABLE_NAME, USER_NAME +=+ name, null) > 0;  
    }  
    //删除所有用户  
    public boolean deleteAllUserDatas() {  
        return mSQLiteDatabase.delete(TABLE_NAME, null, null) > 0;  
    }  
  
    //  
    public String getStringByColumnName(String columnName, int id) {  
        Cursor mCursor = fetchUserData(id);  
        int columnIndex = mCursor.getColumnIndex(columnName);  
        String columnValue = mCursor.getString(columnIndex);  
        mCursor.close();  
        return columnValue;  
    }  
    //  
    public boolean updateUserDataById(String columnName, int id,  
                                      String columnValue) {  
        ContentValues values = new ContentValues();  
        values.put(columnName, columnValue);  
        return mSQLiteDatabase.update(TABLE_NAME, values, ID +=+ id, null) > 0;  
    }  
    //根据用户名找用户,可以判断注册时用户名是否已经存在  
    public int findUserByName(String userName){  
        Log.i(TAG,”findUserByName , userName=+userName);  
        int result=0;  
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+=+userName, null, null, null, null);  
        if(mCursor!=null){  
            result=mCursor.getCount();  
            mCursor.close();  
            Log.i(TAG,”findUserByName , result=+result);  
        }  
        return result;  
    }  
    //根据用户名和密码找用户,用于登录  
    public int findUserByNameAndPwd(String userName,String pwd){  
        Log.i(TAG,”findUserByNameAndPwd”);  
        int result=0;  
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+=+userName+“ and ”+USER_PWD+=+pwd,  
                null, null, null, null);  
        if(mCursor!=null){  
            result=mCursor.getCount();  
            mCursor.close();  
            Log.i(TAG,”findUserByNameAndPwd , result=+result);  
        }  
        return result;  
    }  
  
}  
package com.example.foolishfan.user_v10;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class UserDataManager {             //用户数据管理类
    //一些宏定义和声明
    private static final String TAG = "UserDataManager";
    private static final String DB_NAME = "user_data";
    private static final String TABLE_NAME = "users";
    public static final String ID = "_id";
    public static final String USER_NAME = "user_name";
    public static final String USER_PWD = "user_pwd";
//    public static final String SILENT = "silent";
//    public static final String VIBRATE = "vibrate";
    private static final int DB_VERSION = 2;
    private Context mContext = null;

    //创建用户book表
    private static final String DB_CREATE = "CREATE TABLE " + TABLE_NAME + " ("
            + ID + " integer primary key," + USER_NAME + " varchar,"
            + USER_PWD + " varchar" + ");";

    private SQLiteDatabase mSQLiteDatabase = null;
    private DataBaseManagementHelper mDatabaseHelper = null;

    //DataBaseManagementHelper继承自SQLiteOpenHelper
    private static class DataBaseManagementHelper extends SQLiteOpenHelper {

        DataBaseManagementHelper(Context context) {
            super(context, DB_NAME, null, DB_VERSION);
        }

        @Override
        public void onCreate(SQLiteDatabase db) {
            Log.i(TAG,"db.getVersion()="+db.getVersion());
            db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME + ";");
            db.execSQL(DB_CREATE);
            Log.i(TAG, "db.execSQL(DB_CREATE)");
            Log.e(TAG, DB_CREATE);
        }

        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.i(TAG, "DataBaseManagementHelper onUpgrade");
            onCreate(db);
        }
    }

    public UserDataManager(Context context) {
        mContext = context;
        Log.i(TAG, "UserDataManager construction!");
    }
    //打开数据库
    public void openDataBase() throws SQLException {
        mDatabaseHelper = new DataBaseManagementHelper(mContext);
        mSQLiteDatabase = mDatabaseHelper.getWritableDatabase();
    }
    //关闭数据库
    public void closeDataBase() throws SQLException {
        mDatabaseHelper.close();
    }
    //添加新用户,即注册
    public long insertUserData(UserData userData) {
        String userName=userData.getUserName();
        String userPwd=userData.getUserPwd();
        ContentValues values = new ContentValues();
        values.put(USER_NAME, userName);
        values.put(USER_PWD, userPwd);
        return mSQLiteDatabase.insert(TABLE_NAME, ID, values);
    }
    //更新用户信息,如修改密码
    public boolean updateUserData(UserData userData) {
        //int id = userData.getUserId();
        String userName = userData.getUserName();
        String userPwd = userData.getUserPwd();
        ContentValues values = new ContentValues();
        values.put(USER_NAME, userName);
        values.put(USER_PWD, userPwd);
        return mSQLiteDatabase.update(TABLE_NAME, values,null, null) > 0;
        //return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
    }
    //
    public Cursor fetchUserData(int id) throws SQLException {
        Cursor mCursor = mSQLiteDatabase.query(false, TABLE_NAME, null, ID
                + "=" + id, null, null, null, null, null);
        if (mCursor != null) {
            mCursor.moveToFirst();
        }
        return mCursor;
    }
    //
    public Cursor fetchAllUserDatas() {
        return mSQLiteDatabase.query(TABLE_NAME, null, null, null, null, null,
                null);
    }
    //根据id删除用户
    public boolean deleteUserData(int id) {
        return mSQLiteDatabase.delete(TABLE_NAME, ID + "=" + id, null) > 0;
    }
    //根据用户名注销
    public boolean deleteUserDatabyname(String name) {
        return mSQLiteDatabase.delete(TABLE_NAME, USER_NAME + "=" + name, null) > 0;
    }
    //删除所有用户
    public boolean deleteAllUserDatas() {
        return mSQLiteDatabase.delete(TABLE_NAME, null, null) > 0;
    }

    //
    public String getStringByColumnName(String columnName, int id) {
        Cursor mCursor = fetchUserData(id);
        int columnIndex = mCursor.getColumnIndex(columnName);
        String columnValue = mCursor.getString(columnIndex);
        mCursor.close();
        return columnValue;
    }
    //
    public boolean updateUserDataById(String columnName, int id,
                                      String columnValue) {
        ContentValues values = new ContentValues();
        values.put(columnName, columnValue);
        return mSQLiteDatabase.update(TABLE_NAME, values, ID + "=" + id, null) > 0;
    }
    //根据用户名找用户,可以判断注册时用户名是否已经存在
    public int findUserByName(String userName){
        Log.i(TAG,"findUserByName , userName="+userName);
        int result=0;
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName, null, null, null, null);
        if(mCursor!=null){
            result=mCursor.getCount();
            mCursor.close();
            Log.i(TAG,"findUserByName , result="+result);
        }
        return result;
    }
    //根据用户名和密码找用户,用于登录
    public int findUserByNameAndPwd(String userName,String pwd){
        Log.i(TAG,"findUserByNameAndPwd");
        int result=0;
        Cursor mCursor=mSQLiteDatabase.query(TABLE_NAME, null, USER_NAME+"="+userName+" and "+USER_PWD+"="+pwd,
                null, null, null, null);
        if(mCursor!=null){
            result=mCursor.getCount();
            mCursor.close();
            Log.i(TAG,"findUserByNameAndPwd , result="+result);
        }
        return result;
    }

}

3:具体操作的实现代码,即各个activity

    Login.java【用户登录activity】
package com.example.foolishfan.user_v10;  
  
import android.app.Activity;  
import android.content.Intent;  
import android.content.SharedPreferences;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.CheckBox;  
import android.widget.EditText;  
import android.widget.ImageView;  
import android.widget.TextView;  
import android.widget.Toast;  
  
public class Login extends Activity {                 //登录界面活动  
  
    public int pwdresetFlag=0;  
    private EditText mAccount;                        //用户名编辑  
    private EditText mPwd;                            //密码编辑  
    private Button mRegisterButton;                   //注册按钮  
    private Button mLoginButton;                      //登录按钮  
    private Button mCancleButton;                     //注销按钮  
    private CheckBox mRememberCheck;  
  
    private SharedPreferences login_sp;  
    private String userNameValue,passwordValue;  
  
    private View loginView;                           //登录  
    private View loginSuccessView;  
    private TextView loginSuccessShow;  
    private TextView mChangepwdText;  
    private UserDataManager mUserDataManager;         //用户数据管理类  
  
  
    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.login);  
        //通过id找到相应的控件  
        mAccount = (EditText) findViewById(R.id.login_edit_account);  
        mPwd = (EditText) findViewById(R.id.login_edit_pwd);  
        mRegisterButton = (Button) findViewById(R.id.login_btn_register);  
        mLoginButton = (Button) findViewById(R.id.login_btn_login);  
        mCancleButton = (Button) findViewById(R.id.login_btn_cancle);  
        loginView=findViewById(R.id.login_view);  
        loginSuccessView=findViewById(R.id.login_success_view);  
        loginSuccessShow=(TextView) findViewById(R.id.login_success_show);  
  
        mChangepwdText = (TextView) findViewById(R.id.login_text_change_pwd);  
  
        mRememberCheck = (CheckBox) findViewById(R.id.Login_Remember);  
  
        login_sp = getSharedPreferences(”userInfo”, 0);  
        String name=login_sp.getString(”USER_NAME”, “”);  
        String pwd =login_sp.getString(”PASSWORD”, “”);  
        boolean choseRemember =login_sp.getBoolean(“mRememberCheck”, false);  
        boolean choseAutoLogin =login_sp.getBoolean(“mAutologinCheck”, false);  
        //如果上次选了记住密码,那进入登录页面也自动勾选记住密码,并填上用户名和密码  
        if(choseRemember){  
            mAccount.setText(name);  
            mPwd.setText(pwd);  
            mRememberCheck.setChecked(true);  
        }  
  
        mRegisterButton.setOnClickListener(mListener);                      //采用OnClickListener方法设置不同按钮按下之后的监听事件  
        mLoginButton.setOnClickListener(mListener);  
        mCancleButton.setOnClickListener(mListener);  
        mChangepwdText.setOnClickListener(mListener);  
  
        ImageView image = (ImageView) findViewById(R.id.logo);             //使用ImageView显示logo  
        image.setImageResource(R.drawable.logo);  
  
        if (mUserDataManager == null) {  
            mUserDataManager = new UserDataManager(this);  
            mUserDataManager.openDataBase();                              //建立本地数据库  
        }  
    }  
    OnClickListener mListener = new OnClickListener() {                  //不同按钮按下的监听事件选择  
        public void onClick(View v) {  
            switch (v.getId()) {  
                case R.id.login_btn_register:                            //登录界面的注册按钮  
                    Intent intent_Login_to_Register = new Intent(Login.this,Register.class) ;    //切换Login Activity至User Activity  
                    startActivity(intent_Login_to_Register);  
                    finish();  
                    break;  
                case R.id.login_btn_login:                              //登录界面的登录按钮  
                    login();  
                    break;  
                case R.id.login_btn_cancle:                             //登录界面的注销按钮  
                    cancel();  
                    break;  
                case R.id.login_text_change_pwd:                             //登录界面的注销按钮  
                    Intent intent_Login_to_reset = new Intent(Login.this,Resetpwd.class) ;    //切换Login Activity至User Activity  
                    startActivity(intent_Login_to_reset);  
                    finish();  
                    break;  
            }  
        }  
    };  
  
    public void login() {                                              //登录按钮监听事件  
        if (isUserNameAndPwdValid()) {  
            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息  
            String userPwd = mPwd.getText().toString().trim();  
            SharedPreferences.Editor editor =login_sp.edit();  
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);  
            if(result==1){                                             //返回1说明用户名和密码均正确  
                //保存用户名和密码  
                editor.putString(”USER_NAME”, userName);  
                editor.putString(”PASSWORD”, userPwd);  
  
                //是否记住密码  
                if(mRememberCheck.isChecked()){  
                    editor.putBoolean(”mRememberCheck”, true);  
                }else{  
                    editor.putBoolean(”mRememberCheck”, false);  
                }  
                editor.commit();  
  
                Intent intent = new Intent(Login.this,User.class) ;    //切换Login Activity至User Activity  
                startActivity(intent);  
                finish();  
                Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登录成功提示  
            }else if(result==0){  
                Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登录失败提示  
            }  
        }  
    }  
    public void cancel() {           //注销  
        if (isUserNameAndPwdValid()) {  
            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息  
            String userPwd = mPwd.getText().toString().trim();  
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);  
            if(result==1){                                             //返回1说明用户名和密码均正确  
                Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();<span style=“font-family: Arial;>//注销成功提示</span>  
                mPwd.setText(”“);  
                mAccount.setText(”“);  
                mUserDataManager.deleteUserDatabyname(userName);  
            }else if(result==0){  
                Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //注销失败提示  
            }  
        }  
  
    }  
    public boolean isUserNameAndPwdValid() {  
        if (mAccount.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.account_empty),  
                    Toast.LENGTH_SHORT).show();  
            return false;  
        } else if (mPwd.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.pwd_empty),  
                    Toast.LENGTH_SHORT).show();  
            return false;  
        }  
        return true;  
    }  
    @Override  
    protected void onResume() {  
        if (mUserDataManager == null) {  
            mUserDataManager = new UserDataManager(this);  
            mUserDataManager.openDataBase();  
        }  
        super.onResume();  
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
    }  
    @Override  
    protected void onPause() {  
        if (mUserDataManager != null) {  
            mUserDataManager.closeDataBase();  
            mUserDataManager = null;  
        }  
        super.onPause();  
    }  
}  
package com.example.foolishfan.user_v10;

import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public class Login extends Activity {                 //登录界面活动

    public int pwdresetFlag=0;
    private EditText mAccount;                        //用户名编辑
    private EditText mPwd;                            //密码编辑
    private Button mRegisterButton;                   //注册按钮
    private Button mLoginButton;                      //登录按钮
    private Button mCancleButton;                     //注销按钮
    private CheckBox mRememberCheck;

    private SharedPreferences login_sp;
    private String userNameValue,passwordValue;

    private View loginView;                           //登录
    private View loginSuccessView;
    private TextView loginSuccessShow;
    private TextView mChangepwdText;
    private UserDataManager mUserDataManager;         //用户数据管理类


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login);
        //通过id找到相应的控件
        mAccount = (EditText) findViewById(R.id.login_edit_account);
        mPwd = (EditText) findViewById(R.id.login_edit_pwd);
        mRegisterButton = (Button) findViewById(R.id.login_btn_register);
        mLoginButton = (Button) findViewById(R.id.login_btn_login);
        mCancleButton = (Button) findViewById(R.id.login_btn_cancle);
        loginView=findViewById(R.id.login_view);
        loginSuccessView=findViewById(R.id.login_success_view);
        loginSuccessShow=(TextView) findViewById(R.id.login_success_show);

        mChangepwdText = (TextView) findViewById(R.id.login_text_change_pwd);

        mRememberCheck = (CheckBox) findViewById(R.id.Login_Remember);

        login_sp = getSharedPreferences("userInfo", 0);
        String name=login_sp.getString("USER_NAME", "");
        String pwd =login_sp.getString("PASSWORD", "");
        boolean choseRemember =login_sp.getBoolean("mRememberCheck", false);
        boolean choseAutoLogin =login_sp.getBoolean("mAutologinCheck", false);
        //如果上次选了记住密码,那进入登录页面也自动勾选记住密码,并填上用户名和密码
        if(choseRemember){
            mAccount.setText(name);
            mPwd.setText(pwd);
            mRememberCheck.setChecked(true);
        }

        mRegisterButton.setOnClickListener(mListener);                      //采用OnClickListener方法设置不同按钮按下之后的监听事件
        mLoginButton.setOnClickListener(mListener);
        mCancleButton.setOnClickListener(mListener);
        mChangepwdText.setOnClickListener(mListener);

        ImageView image = (ImageView) findViewById(R.id.logo);             //使用ImageView显示logo
        image.setImageResource(R.drawable.logo);

        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();                              //建立本地数据库
        }
    }
    OnClickListener mListener = new OnClickListener() {                  //不同按钮按下的监听事件选择
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.login_btn_register:                            //登录界面的注册按钮
                    Intent intent_Login_to_Register = new Intent(Login.this,Register.class) ;    //切换Login Activity至User Activity
                    startActivity(intent_Login_to_Register);
                    finish();
                    break;
                case R.id.login_btn_login:                              //登录界面的登录按钮
                    login();
                    break;
                case R.id.login_btn_cancle:                             //登录界面的注销按钮
                    cancel();
                    break;
                case R.id.login_text_change_pwd:                             //登录界面的注销按钮
                    Intent intent_Login_to_reset = new Intent(Login.this,Resetpwd.class) ;    //切换Login Activity至User Activity
                    startActivity(intent_Login_to_reset);
                    finish();
                    break;
            }
        }
    };

    public void login() {                                              //登录按钮监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息
            String userPwd = mPwd.getText().toString().trim();
            SharedPreferences.Editor editor =login_sp.edit();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){                                             //返回1说明用户名和密码均正确
                //保存用户名和密码
                editor.putString("USER_NAME", userName);
                editor.putString("PASSWORD", userPwd);

                //是否记住密码
                if(mRememberCheck.isChecked()){
                    editor.putBoolean("mRememberCheck", true);
                }else{
                    editor.putBoolean("mRememberCheck", false);
                }
                editor.commit();

                Intent intent = new Intent(Login.this,User.class) ;    //切换Login Activity至User Activity
                startActivity(intent);
                finish();
                Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登录成功提示
            }else if(result==0){
                Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登录失败提示
            }
        }
    }
    public void cancel() {           //注销
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息
            String userPwd = mPwd.getText().toString().trim();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){                                             //返回1说明用户名和密码均正确
                Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();<span style="font-family: Arial;">//注销成功提示</span>
                mPwd.setText("");
                mAccount.setText("");
                mUserDataManager.deleteUserDatabyname(userName);
            }else if(result==0){
                Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //注销失败提示
            }
        }

    }
    public boolean isUserNameAndPwdValid() {
        if (mAccount.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.account_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        } else if (mPwd.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }
    @Override
    protected void onResume() {
        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();
        }
        super.onResume();
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
    }
    @Override
    protected void onPause() {
        if (mUserDataManager != null) {
            mUserDataManager.closeDataBase();
            mUserDataManager = null;
        }
        super.onPause();
    }
}

Register.java【用户注册activity】

[java] view plain copy
package com.example.foolishfan.user_v10;  
  
import android.app.Activity;  
import android.content.Intent;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.Toast;  
  
public class Register extends AppCompatActivity {  
    private EditText mAccount;                        //用户名编辑  
    private EditText mPwd;                            //密码编辑  
    private EditText mPwdCheck;                       //密码编辑  
    private Button mSureButton;                       //确定按钮  
    private Button mCancelButton;                     //取消按钮  
    private UserDataManager mUserDataManager;         //用户数据管理类  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.register);  
        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);  
        mPwd = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);  
        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);  
  
        mSureButton = (Button) findViewById(R.id.register_btn_sure);  
        mCancelButton = (Button) findViewById(R.id.register_btn_cancel);  
  
        mSureButton.setOnClickListener(m_register_Listener);      //注册界面两个按钮的监听事件  
        mCancelButton.setOnClickListener(m_register_Listener);  
  
        if (mUserDataManager == null) {  
            mUserDataManager = new UserDataManager(this);  
            mUserDataManager.openDataBase();                              //建立本地数据库  
        }  
    }  
    View.OnClickListener m_register_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择  
        public void onClick(View v) {  
            switch (v.getId()) {  
                case R.id.register_btn_sure:                       //确认按钮的监听事件  
                    register_check();  
                    break;  
                case R.id.register_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面  
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity  
                    startActivity(intent_Register_to_Login);  
                    finish();  
                    break;  
            }  
        }  
    };  
    public void register_check() {                                //确认按钮的监听事件  
        if (isUserNameAndPwdValid()) {  
            String userName = mAccount.getText().toString().trim();  
            String userPwd = mPwd.getText().toString().trim();  
            String userPwdCheck = mPwdCheck.getText().toString().trim();  
            //检查用户是否存在  
            int count=mUserDataManager.findUserByName(userName);  
            //用户已经存在时返回,给出提示文字  
            if(count>0){  
                Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();  
                return ;  
            }  
            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样  
                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();  
                return ;  
            } else {  
                UserData mUser = new UserData(userName, userPwd);  
                mUserDataManager.openDataBase();  
                long flag = mUserDataManager.insertUserData(mUser); //新建用户信息  
                if (flag == -1) {  
                    Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();  
                }else{  
                    Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();  
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity  
                    startActivity(intent_Register_to_Login);  
                    finish();  
                }  
            }  
        }  
    }  
    public boolean isUserNameAndPwdValid() {  
        if (mAccount.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.account_empty),  
                    Toast.LENGTH_SHORT).show();  
            return false;  
        } else if (mPwd.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.pwd_empty),  
                    Toast.LENGTH_SHORT).show();  
            return false;  
        }else if(mPwdCheck.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.pwd_check_empty),  
                    Toast.LENGTH_SHORT).show();  
            return false;  
        }  
        return true;  
    }  
}  
package com.example.foolishfan.user_v10;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Register extends AppCompatActivity {
    private EditText mAccount;                        //用户名编辑
    private EditText mPwd;                            //密码编辑
    private EditText mPwdCheck;                       //密码编辑
    private Button mSureButton;                       //确定按钮
    private Button mCancelButton;                     //取消按钮
    private UserDataManager mUserDataManager;         //用户数据管理类
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);
        mPwd = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);
        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);

        mSureButton = (Button) findViewById(R.id.register_btn_sure);
        mCancelButton = (Button) findViewById(R.id.register_btn_cancel);

        mSureButton.setOnClickListener(m_register_Listener);      //注册界面两个按钮的监听事件
        mCancelButton.setOnClickListener(m_register_Listener);

        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();                              //建立本地数据库
        }
    }
    View.OnClickListener m_register_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.register_btn_sure:                       //确认按钮的监听事件
                    register_check();
                    break;
                case R.id.register_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity
                    startActivity(intent_Register_to_Login);
                    finish();
                    break;
            }
        }
    };
    public void register_check() {                                //确认按钮的监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();
            String userPwd = mPwd.getText().toString().trim();
            String userPwdCheck = mPwdCheck.getText().toString().trim();
            //检查用户是否存在
            int count=mUserDataManager.findUserByName(userName);
            //用户已经存在时返回,给出提示文字
            if(count>0){
                Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();
                return ;
            }
            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样
                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();
                return ;
            } else {
                UserData mUser = new UserData(userName, userPwd);
                mUserDataManager.openDataBase();
                long flag = mUserDataManager.insertUserData(mUser); //新建用户信息
                if (flag == -1) {
                    Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    //切换User Activity至Login Activity
                    startActivity(intent_Register_to_Login);
                    finish();
                }
            }
        }
    }
    public boolean isUserNameAndPwdValid() {
        if (mAccount.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.account_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        } else if (mPwd.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        }else if(mPwdCheck.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_check_empty),
                    Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }
}

Resetpwd.java【重新设置密码】

package com.example.foolishfan.user_v10;  
import android.app.Activity;  
import android.content.Intent;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
import android.widget.EditText;  
import android.widget.RelativeLayout;  
import android.widget.Toast;  
  
public class Resetpwd extends AppCompatActivity {  
    private EditText mAccount;                        //用户名编辑  
    private EditText mPwd_old;                        //密码编辑  
    private EditText mPwd_new;                        //密码编辑  
    private EditText mPwdCheck;                       //密码编辑  
    private Button mSureButton;                       //确定按钮  
    private Button mCancelButton;                     //取消按钮  
    private UserDataManager mUserDataManager;         //用户数据管理类  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.resetpwd);  
        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);  
        mPwd_old = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);  
        mPwd_new = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);  
        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_check);  
  
        mSureButton = (Button) findViewById(R.id.resetpwd_btn_sure);  
        mCancelButton = (Button) findViewById(R.id.resetpwd_btn_cancel);  
  
        mSureButton.setOnClickListener(m_resetpwd_Listener);      //注册界面两个按钮的监听事件  
        mCancelButton.setOnClickListener(m_resetpwd_Listener);  
        if (mUserDataManager == null) {  
            mUserDataManager = new UserDataManager(this);  
            mUserDataManager.openDataBase();                              //建立本地数据库  
        }  
    }  
    View.OnClickListener m_resetpwd_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择  
        public void onClick(View v) {  
            switch (v.getId()) {  
                case R.id.resetpwd_btn_sure:                       //确认按钮的监听事件  
                    resetpwd_check();  
                    break;  
                case R.id.resetpwd_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面  
                    Intent intent_Resetpwd_to_Login = new Intent(Resetpwd.this,Login.class) ;    //切换Resetpwd Activity至Login Activity  
                    startActivity(intent_Resetpwd_to_Login);  
                    finish();  
                    break;  
            }  
        }  
    };  
    public void resetpwd_check() {                                //确认按钮的监听事件  
        if (isUserNameAndPwdValid()) {  
            String userName = mAccount.getText().toString().trim();  
            String userPwd_old = mPwd_old.getText().toString().trim();  
            String userPwd_new = mPwd_new.getText().toString().trim();  
            String userPwdCheck = mPwdCheck.getText().toString().trim();  
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);  
            if(result==1){                                             //返回1说明用户名和密码均正确,继续后续操作  
                if(userPwd_new.equals(userPwdCheck)==false){           //两次密码输入不一样  
                    Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();  
                    return ;  
                } else {  
                    UserData mUser = new UserData(userName, userPwd_new);  
                    mUserDataManager.openDataBase();  
                    boolean flag = mUserDataManager.updateUserData(mUser);  
                    if (flag == false) {  
                        Toast.makeText(this, getString(R.string.resetpwd_fail),Toast.LENGTH_SHORT).show();  
                    }else{  
                        Toast.makeText(this, getString(R.string.resetpwd_success),Toast.LENGTH_SHORT).show();  
                        mUser.pwdresetFlag=1;  
                        Intent intent_Register_to_Login = new Intent(Resetpwd.this,Login.class) ;    //切换User Activity至Login Activity  
                        startActivity(intent_Register_to_Login);  
                        finish();  
                    }  
                }  
            }else if(result==0){                                       //返回0说明用户名和密码不匹配,重新输入  
                Toast.makeText(this, getString(R.string.pwd_not_fit_user),Toast.LENGTH_SHORT).show();  
                return;  
            }  
        }  
    }  
    public boolean isUserNameAndPwdValid() {  
        String userName = mAccount.getText().toString().trim();  
        //检查用户是否存在  
        int count=mUserDataManager.findUserByName(userName);  
        //用户不存在时返回,给出提示文字  
        if(count<=0){  
            Toast.makeText(this, getString(R.string.name_not_exist, userName),Toast.LENGTH_SHORT).show();  
            return false;  
        }  
        if (mAccount.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.account_empty),Toast.LENGTH_SHORT).show();  
            return false;  
        } else if (mPwd_old.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.pwd_empty),Toast.LENGTH_SHORT).show();  
            return false;  
        } else if (mPwd_new.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.pwd_new_empty),Toast.LENGTH_SHORT).show();  
            return false;  
        }else if(mPwdCheck.getText().toString().trim().equals(“”)) {  
            Toast.makeText(this, getString(R.string.pwd_check_empty),Toast.LENGTH_SHORT).show();  
            return false;  
        }  
        return true;  
    }  
}  
package com.example.foolishfan.user_v10;
import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class Resetpwd extends AppCompatActivity {
    private EditText mAccount;                        //用户名编辑
    private EditText mPwd_old;                        //密码编辑
    private EditText mPwd_new;                        //密码编辑
    private EditText mPwdCheck;                       //密码编辑
    private Button mSureButton;                       //确定按钮
    private Button mCancelButton;                     //取消按钮
    private UserDataManager mUserDataManager;         //用户数据管理类
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.resetpwd);
        mAccount = (EditText) findViewById(R.id.resetpwd_edit_name);
        mPwd_old = (EditText) findViewById(R.id.resetpwd_edit_pwd_old);
        mPwd_new = (EditText) findViewById(R.id.resetpwd_edit_pwd_new);
        mPwdCheck = (EditText) findViewById(R.id.resetpwd_edit_pwd_check);

        mSureButton = (Button) findViewById(R.id.resetpwd_btn_sure);
        mCancelButton = (Button) findViewById(R.id.resetpwd_btn_cancel);

        mSureButton.setOnClickListener(m_resetpwd_Listener);      //注册界面两个按钮的监听事件
        mCancelButton.setOnClickListener(m_resetpwd_Listener);
        if (mUserDataManager == null) {
            mUserDataManager = new UserDataManager(this);
            mUserDataManager.openDataBase();                              //建立本地数据库
        }
    }
    View.OnClickListener m_resetpwd_Listener = new View.OnClickListener() {    //不同按钮按下的监听事件选择
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.resetpwd_btn_sure:                       //确认按钮的监听事件
                    resetpwd_check();
                    break;
                case R.id.resetpwd_btn_cancel:                     //取消按钮的监听事件,由注册界面返回登录界面
                    Intent intent_Resetpwd_to_Login = new Intent(Resetpwd.this,Login.class) ;    //切换Resetpwd Activity至Login Activity
                    startActivity(intent_Resetpwd_to_Login);
                    finish();
                    break;
            }
        }
    };
    public void resetpwd_check() {                                //确认按钮的监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();
            String userPwd_old = mPwd_old.getText().toString().trim();
            String userPwd_new = mPwd_new.getText().toString().trim();
            String userPwdCheck = mPwdCheck.getText().toString().trim();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);
            if(result==1){                                             //返回1说明用户名和密码均正确,继续后续操作
                if(userPwd_new.equals(userPwdCheck)==false){           //两次密码输入不一样
                    Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();
                    return ;
                } else {
                    UserData mUser = new UserData(userName, userPwd_new);
                    mUserDataManager.openDataBase();
                    boolean flag = mUserDataManager.updateUserData(mUser);
                    if (flag == false) {
                        Toast.makeText(this, getString(R.string.resetpwd_fail),Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, getString(R.string.resetpwd_success),Toast.LENGTH_SHORT).show();
                        mUser.pwdresetFlag=1;
                        Intent intent_Register_to_Login = new Intent(Resetpwd.this,Login.class) ;    //切换User Activity至Login Activity
                        startActivity(intent_Register_to_Login);
                        finish();
                    }
                }
            }else if(result==0){                                       //返回0说明用户名和密码不匹配,重新输入
                Toast.makeText(this, getString(R.string.pwd_not_fit_user),Toast.LENGTH_SHORT).show();
                return;
            }
        }
    }
    public boolean isUserNameAndPwdValid() {
        String userName = mAccount.getText().toString().trim();
        //检查用户是否存在
        int count=mUserDataManager.findUserByName(userName);
        //用户不存在时返回,给出提示文字
        if(count<=0){
            Toast.makeText(this, getString(R.string.name_not_exist, userName),Toast.LENGTH_SHORT).show();
            return false;
        }
        if (mAccount.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.account_empty),Toast.LENGTH_SHORT).show();
            return false;
        } else if (mPwd_old.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_empty),Toast.LENGTH_SHORT).show();
            return false;
        } else if (mPwd_new.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_new_empty),Toast.LENGTH_SHORT).show();
            return false;
        }else if(mPwdCheck.getText().toString().trim().equals("")) {
            Toast.makeText(this, getString(R.string.pwd_check_empty),Toast.LENGTH_SHORT).show();
            return false;
        }
        return true;
    }
}

User.java【用户个人中心】

[java] view plain copy
package com.example.foolishfan.user_v10;  
  
import android.content.Intent;  
import android.support.v7.app.AppCompatActivity;  
import android.os.Bundle;  
import android.view.View;  
import android.widget.Button;  
  
public class User extends AppCompatActivity {  
    private Button mReturnButton;  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.user);  
        mReturnButton = (Button)findViewById(R.id.returnback);  
    }  
    public void back_to_login(View view) {  
        Intent intent3 = new Intent(User.this,Login.class) ;  
        startActivity(intent3);  
        finish();  
    }  
}  
package com.example.foolishfan.user_v10;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class User extends AppCompatActivity {
    private Button mReturnButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.user);
        mReturnButton = (Button)findViewById(R.id.returnback);
    }
    public void back_to_login(View view) {
        Intent intent3 = new Intent(User.this,Login.class) ;
        startActivity(intent3);
        finish();
    }
}

二、功能分析

   上面工程涉及到的这些内容,在网上有很多写的很有参考价值的资料,建议可单独熟悉各个部分内容,然后添加功能到已有代码基础上,由于好多天后才整理的博客,缺少很多刚学习时遇到的种种错误及其解决方法,细节之处还望多交流。

<1>:Button,TextView,TextEdit,ImageView,RatioButton等基本控件的使用
<2>:多个Activities之间的切换
<3>:使用Android本地数据库来管理用户信息

1:登录功能

   通过登录按钮的监听事件实现登录,登录过程中需要判断用户名是否存在,密码是否正确,核心函数:
public void login() {                        //登录按钮监听事件  
    if (isUserNameAndPwdValid()) {  
        String userName = mAccount.getText().toString().trim();//获取当前输入的用户名和密码信息  
        String userPwd = mPwd.getText().toString().trim();  
        SharedPreferences.Editor editor =login_sp.edit();  
        int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);  
        if(result==1){         //返回1说明用户名和密码均正确  
            //保存用户名和密码  
            editor.putString(”USER_NAME”, userName);  
            editor.putString(”PASSWORD”, userPwd);  
  
            //是否记住密码  
            if(mRememberCheck.isChecked()){  
                editor.putBoolean(”mRememberCheck”, true);  
            }else{  
                editor.putBoolean(”mRememberCheck”, false);  
            }  
            editor.commit();  
  
            Intent intent = new Intent(Login.this,User.class) ;  
            startActivity(intent);  
            finish();  
            Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登录成功提示  
        }else if(result==0){  
            Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登录失败提示  
        }  
    }  
}  
 public void login() {                        //登录按钮监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();//获取当前输入的用户名和密码信息
            String userPwd = mPwd.getText().toString().trim();
            SharedPreferences.Editor editor =login_sp.edit();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){         //返回1说明用户名和密码均正确
                //保存用户名和密码
                editor.putString("USER_NAME", userName);
                editor.putString("PASSWORD", userPwd);

                //是否记住密码
                if(mRememberCheck.isChecked()){
                    editor.putBoolean("mRememberCheck", true);
                }else{
                    editor.putBoolean("mRememberCheck", false);
                }
                editor.commit();

                Intent intent = new Intent(Login.this,User.class) ;
                startActivity(intent);
                finish();
                Toast.makeText(this, getString(R.string.login_success),Toast.LENGTH_SHORT).show();//登录成功提示
            }else if(result==0){
                Toast.makeText(this, getString(R.string.login_fail),Toast.LENGTH_SHORT).show();  //登录失败提示
            }
        }
    }

2:注册功能

   登录界面上点击注册按钮,进入对应监听事件,直接实现从Login的Activity到Register的Activity的跳转,然后在Register的Activity上实现用户注册,核心函数:
public void register_check() {                                //确认按钮的监听事件  
    if (isUserNameAndPwdValid()) {  
        String userName = mAccount.getText().toString().trim();  
        String userPwd = mPwd.getText().toString().trim();  
        String userPwdCheck = mPwdCheck.getText().toString().trim();  
        //检查用户是否存在  
       int count=mUserDataManager.findUserByName(userName);  
        //用户已经存在时返回,给出提示文字  
        if(count>0){  
            Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();  
            return ;  
        }  
        if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样  
            Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();  
            return ;  
        } else {  
            UserData mUser = new UserData(userName, userPwd);  
            mUserDataManager.openDataBase();  
            long flag = mUserDataManager.insertUserData(mUser); //新建用户信息  
            if (flag == -1) {  
                Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();  
            }else{  
                Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();  
                Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;    
                startActivity(intent_Register_to_Login);  
                finish();  
            }  
        }  
    }  
}  
 public void register_check() {                                //确认按钮的监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();
            String userPwd = mPwd.getText().toString().trim();
            String userPwdCheck = mPwdCheck.getText().toString().trim();
            //检查用户是否存在
           int count=mUserDataManager.findUserByName(userName);
            //用户已经存在时返回,给出提示文字
            if(count>0){
                Toast.makeText(this, getString(R.string.name_already_exist, userName),Toast.LENGTH_SHORT).show();
                return ;
            }
            if(userPwd.equals(userPwdCheck)==false){     //两次密码输入不一样
                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();
                return ;
            } else {
                UserData mUser = new UserData(userName, userPwd);
                mUserDataManager.openDataBase();
                long flag = mUserDataManager.insertUserData(mUser); //新建用户信息
                if (flag == -1) {
                    Toast.makeText(this, getString(R.string.register_fail),Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(this, getString(R.string.register_success),Toast.LENGTH_SHORT).show();
                    Intent intent_Register_to_Login = new Intent(Register.this,Login.class) ;  
                    startActivity(intent_Register_to_Login);
                    finish();
                }
            }
        }
    }

3:修改密码功能

  在登录界面点击“修改密码”即可进入对应的Resetpwd的Activity,实现用户密码的修改,核心函数:
public void resetpwd_check() {                                //确认按钮的监听事件  
    if (isUserNameAndPwdValid()) {  
        String userName = mAccount.getText().toString().trim();  
        String userPwd_old = mPwd_old.getText().toString().trim();  
        String userPwd_new = mPwd_new.getText().toString().trim();  
        String userPwdCheck = mPwdCheck.getText().toString().trim();  
        int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);  
        if(result==1){                                             //返回1说明用户名和密码均正确,继续后续操作  
            if(userPwd_new.equals(userPwdCheck)==false){           //两次密码输入不一样  
                Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();  
                return ;  
            } else {  
                UserData mUser = new UserData(userName, userPwd_new);  
                mUserDataManager.openDataBase();  
                boolean flag = mUserDataManager.updateUserData(mUser);  
                if (flag == false) {  
                    Toast.makeText(this, getString(R.string.resetpwd_fail),Toast.LENGTH_SHORT).show();  
                }else{  
                    Toast.makeText(this, getString(R.string.resetpwd_success),Toast.LENGTH_SHORT).show();  
                    mUser.pwdresetFlag=1;  
                    Intent intent_Register_to_Login = new Intent(Resetpwd.this,Login.class) ;      
                    startActivity(intent_Register_to_Login);  
                    finish();  
                }  
            }  
        }else if(result==0){                                       //返回0说明用户名和密码不匹配,重新输入  
            Toast.makeText(this, getString(R.string.pwd_not_fit_user),Toast.LENGTH_SHORT).show();  
            return;  
        }  
    }  
}  
  public void resetpwd_check() {                                //确认按钮的监听事件
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();
            String userPwd_old = mPwd_old.getText().toString().trim();
            String userPwd_new = mPwd_new.getText().toString().trim();
            String userPwdCheck = mPwdCheck.getText().toString().trim();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd_old);
            if(result==1){                                             //返回1说明用户名和密码均正确,继续后续操作
                if(userPwd_new.equals(userPwdCheck)==false){           //两次密码输入不一样
                    Toast.makeText(this, getString(R.string.pwd_not_the_same),Toast.LENGTH_SHORT).show();
                    return ;
                } else {
                    UserData mUser = new UserData(userName, userPwd_new);
                    mUserDataManager.openDataBase();
                    boolean flag = mUserDataManager.updateUserData(mUser);
                    if (flag == false) {
                        Toast.makeText(this, getString(R.string.resetpwd_fail),Toast.LENGTH_SHORT).show();
                    }else{
                        Toast.makeText(this, getString(R.string.resetpwd_success),Toast.LENGTH_SHORT).show();
                        mUser.pwdresetFlag=1;
                        Intent intent_Register_to_Login = new Intent(Resetpwd.this,Login.class) ;    
                        startActivity(intent_Register_to_Login);
                        finish();
                    }
                }
            }else if(result==0){                                       //返回0说明用户名和密码不匹配,重新输入
                Toast.makeText(this, getString(R.string.pwd_not_fit_user),Toast.LENGTH_SHORT).show();
                return;
            }
        }
    }

4:注销功能

   注销功能直接在登录界面,当用户名和密码均正确时,点击注销按钮将直接注销用户【各位可根据需求将注销放在个人中心里面进行操作】。核心函数:

[java] view plain copy
public void cancel() {           //注销  
    if (isUserNameAndPwdValid()) {  
        String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息  
        String userPwd = mPwd.getText().toString().trim();  
        int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);  
        if(result==1){                                             //返回1说明用户名和密码均正确  
            Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();//登录成功提示  
            mPwd.setText(”“);  
            mAccount.setText(”“);  
            mUserDataManager.deleteUserDatabyname(userName);  
        }else if(result==0){  
            Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //登录失败提示  
        }  
    }  
  
}  
 public void cancel() {           //注销
        if (isUserNameAndPwdValid()) {
            String userName = mAccount.getText().toString().trim();    //获取当前输入的用户名和密码信息
            String userPwd = mPwd.getText().toString().trim();
            int result=mUserDataManager.findUserByNameAndPwd(userName, userPwd);
            if(result==1){                                             //返回1说明用户名和密码均正确
                Toast.makeText(this, getString(R.string.cancel_success),Toast.LENGTH_SHORT).show();//登录成功提示
                mPwd.setText("");
                mAccount.setText("");
                mUserDataManager.deleteUserDatabyname(userName);
            }else if(result==0){
                Toast.makeText(this, getString(R.string.cancel_fail),Toast.LENGTH_SHORT).show();  //登录失败提示
            }
        }

    }

5:记住密码

   当记住密码的RadioButton为真时,系统将记住此时用户登录的信息,用户在下次登录时可避免再次输入用户名和密码的麻烦,实现细节在Login的Activity中。

LoginActivity.java

package com.liu.activity;
 
import android.app.Activity;
import android.app.backup.SharedPreferencesBackupHelper;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.text.Spannable;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.Toast;
 
public class LoginActivity extends Activity {
	
	private EditText userName, password;
	private CheckBox rem_pw, auto_login;
	private Button btn_login;
	private ImageButton btnQuit;
    private String userNameValue,passwordValue;
	private SharedPreferences sp;
 
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		//去除标题
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.login);
		
        //获得实例对象
		sp = this.getSharedPreferences("userInfo", Context.MODE_WORLD_READABLE);
		userName = (EditText) findViewById(R.id.et_zh);
		password = (EditText) findViewById(R.id.et_mima);
        rem_pw = (CheckBox) findViewById(R.id.cb_mima);
		auto_login = (CheckBox) findViewById(R.id.cb_auto);
        btn_login = (Button) findViewById(R.id.btn_login);
        btnQuit = (ImageButton)findViewById(R.id.img_btn);
		
        
		//判断记住密码多选框的状态
      if(sp.getBoolean("ISCHECK", false))
        {
    	  //设置默认是记录密码状态
          rem_pw.setChecked(true);
       	  userName.setText(sp.getString("USER_NAME", ""));
       	  password.setText(sp.getString("PASSWORD", ""));
       	  //判断自动登陆多选框状态
       	  if(sp.getBoolean("AUTO_ISCHECK", false))
       	  {
       		     //设置默认是自动登录状态
       		     auto_login.setChecked(true);
       		    //跳转界面
				Intent intent = new Intent(LoginActivity.this,LogoActivity.class);
				LoginActivity.this.startActivity(intent);
				
       	  }
        }
		
	    // 登录监听事件  现在默认为用户名为:liu 密码:123
		btn_login.setOnClickListener(new OnClickListener() {
 
			public void onClick(View v) {
				userNameValue = userName.getText().toString();
			    passwordValue = password.getText().toString();
			    
				if(userNameValue.equals("liu")&&passwordValue.equals("123"))
				{
					Toast.makeText(LoginActivity.this,"登录成功", Toast.LENGTH_SHORT).show();
					//登录成功和记住密码框为选中状态才保存用户信息
					if(rem_pw.isChecked())
					{
					 //记住用户名、密码、
					  Editor editor = sp.edit();
					  editor.putString("USER_NAME", userNameValue);
					  editor.putString("PASSWORD",passwordValue);
					  editor.commit();
					}
					//跳转界面
					Intent intent = new Intent(LoginActivity.this,LogoActivity.class);
					LoginActivity.this.startActivity(intent);
					//finish();
					
				}else{
					
					Toast.makeText(LoginActivity.this,"用户名或密码错误,请重新登录", Toast.LENGTH_LONG).show();
				}
				
			}
		});
 
	    //监听记住密码多选框按钮事件
		rem_pw.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
				if (rem_pw.isChecked()) {
                    
					System.out.println("记住密码已选中");
					sp.edit().putBoolean("ISCHECK", true).commit();
					
				}else {
					
					System.out.println("记住密码没有选中");
					sp.edit().putBoolean("ISCHECK", false).commit();
					
				}
 
			}
		});
		
		//监听自动登录多选框事件
		auto_login.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
				if (auto_login.isChecked()) {
					System.out.println("自动登录已选中");
					sp.edit().putBoolean("AUTO_ISCHECK", true).commit();
 
				} else {
					System.out.println("自动登录没有选中");
					sp.edit().putBoolean("AUTO_ISCHECK", false).commit();
				}
			}
		});
		
		btnQuit.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				finish();
			}
		});
 
	}
}

LogoActivity.java

package com.liu.activity;
 
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.opengl.ETC1;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.ProgressBar;
 
public class LogoActivity extends Activity {
	private ProgressBar progressBar;
	private Button backButton;
 
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 去除标题
		this.requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.logo);
 
		progressBar = (ProgressBar) findViewById(R.id.pgBar);
		backButton = (Button) findViewById(R.id.btn_back);
 
		Intent intent = new Intent(this, WelcomeAvtivity.class);
		LogoActivity.this.startActivity(intent);
 
		backButton.setOnClickListener(new OnClickListener() {
 
			@Override
			public void onClick(View v) {
				finish();
 
			}
		});
 
	}
 
}

本文地址:https://blog.csdn.net/z031022/article/details/107166198