精华内容
下载资源
问答
  • Android应用软件基本上都会用到登录注册功能,本篇文章主要介绍了Android登录注册功能封装功能实现,具有一定的参考价值,有兴趣的可以了解一下。
  • android实现注册功能

    万次阅读 2014-11-23 17:32:56
    android实现注册功能: 布局:layout/activity_main.xml

    android之实现注册功能:

    注意:(1、之前一直找不到不成功 的原因,经过调试,找到了,原来是:Toast.makeText(this, "用户名不能为空", 2000).show()没调用show方法;2、在switch下的case语句后一定要加break,不然他就会一直执行下一个case的

    布局:layout/activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
      <LinearLayout
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
         <TextView 
             
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="用户名:"/>
         <EditText 
             android:id="@+id/etUser"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:hint="请输入1-10个字符"/>
     </LinearLayout>
      <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
         <TextView 
             
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="密         码:"/>
         <EditText 
             android:id="@+id/etPassw"
           
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:hint="请输入1-10个字符"
             android:password="true"/>
     </LinearLayout>
     
     <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
         <TextView 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="确认密码:"/>
         <EditText 
               android:id="@+id/etRePassw"
             android:layout_width="0dp"
             android:layout_height="wrap_content"
             android:layout_weight="1"
             android:hint="请输入1-10个字符"
             android:password="true"/>
     </LinearLayout>
     <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
         <TextView 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="选择性别:"/>
        <RadioGroup 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal"
            >
            <RadioButton 
                android:id="@+id/rbMale"
                android:text="男"
                android:checked="true"/>
            <RadioButton 
                android:id="@+id/rbfaMale"
                android:text="女"/>
        </RadioGroup>
     </LinearLayout>
      <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
         <TextView 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="城市:"/>
       <Spinner 
           android:id="@+id/spCity"
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:layout_weight="1"
           android:entries="@array/citys"
           />
     </LinearLayout>
     
     <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal">
         <TextView 
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:text="兴趣爱好:"/>
        <RadioGroup 
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal"
            >
           <CheckBox 
               android:id="@+id/cbRead"
               android:text="读书"
               android:checked="true"/>
           <CheckBox 
               android:id="@+id/cbTourist"
               android:text="旅游"
               />
           <CheckBox 
               android:id="@+id/cbPlayGame"
               android:text="打电子"
               />
        </RadioGroup>
     </LinearLayout>
     <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:orientation="horizontal"
        >
       <Button 
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:visibility="invisible"
           android:layout_weight="1"
           />
        <Button
            android:id="@+id/btRegister"
             android:text="注册"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/login32x32"
            android:background="@drawable/btn_bg"
            android:onClick="onclick"
            />
       <Button 
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:visibility="invisible"
           android:layout_weight="1"
           />
         <Button 
             android:id="@+id/btEixt"
             android:text="退出"
             android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableLeft="@drawable/exit32x32"
            android:background="@drawable/btn_bg"
            android:onClick="onclick"
            />
          <Button 
           android:layout_width="0dp"
           android:layout_height="wrap_content"
           android:visibility="invisible"
           android:layout_weight="1"
           />
     </LinearLayout>
         <LinearLayout 
         android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:orientation="horizontal"
        >   
    <Button 
            android:text="返回"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|fill_horizontal"
            android:background="@drawable/btn_bg"
            
            />  
     </LinearLayout>
    </LinearLayout>

    java代码 :

    1、主要代码 :

    package com.sxt.main;


    import com.sxt.entity.User;
    import com.sxt.main.R;




    import android.text.TextUtils;
    import android.app.Activity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.widget.Button;
    import android.widget.CheckBox;
    import android.widget.EditText;
    import android.widget.RadioButton;
    import android.widget.Spinner;
    import android.widget.Toast;




    public class MainActivity extends Activity {
    EditText etUser,etPassw,etRePassw;
    RadioButton rbMale,rbfaMale;
    CheckBox cbRead,cbTourist,cbPlayGame;
    Spinner spCity;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            init();
        }
        private void init() {
    // TODO Auto-generated method stub
        etUser = (EditText) findViewById(R.id.etUser);
        etPassw = (EditText) findViewById(R.id.etPassw);
        etRePassw = (EditText) findViewById(R.id.etRePassw);
        rbMale =  (RadioButton) findViewById(R.id.rbMale);
        rbfaMale =  (RadioButton) findViewById(R.id.rbfaMale);
        cbRead = (CheckBox) findViewById(R.id.cbRead);
        cbTourist = (CheckBox) findViewById(R.id.cbTourist);
        cbPlayGame = (CheckBox) findViewById(R.id.cbPlayGame);
        spCity = (Spinner) findViewById(R.id.spCity);
    }
    public void onclick(View view){
        switch(view.getId()){
       
        case R.id.btRegister:
        String userName = etUser.getText().toString();
        if(TextUtils.isEmpty(userName)){
        Toast.makeText(this, "用户名不能为空", 2000).show();
        return;
        }
        String passW = etPassw.getText().toString();
        if(TextUtils.isEmpty(passW)){
        etPassw.setError("密码不能为空");
        return;
        }
        String rePassw = etRePassw.getText().toString();
        if(TextUtils.isEmpty(rePassw)){
        etRePassw.setError("确认密码不能为空");
        return;
        }
        if(!passW.equals(rePassw)){
        Toast.makeText(this, "两次密码不一致", 2000).show();
        return ;
        }
        char sex ;
        if(rbMale.isChecked()){
        sex = rbMale.getText().charAt(0);
        }else{
        sex = rbfaMale.getText().charAt(0);
        }
        StringBuffer s = new StringBuffer();
        if(cbRead.isChecked()){
        s.append(cbRead.getText().toString()+",");
        }
        if(cbTourist.isChecked()){
          s.append(cbTourist.getText().toString()+",");
          }
        if(cbPlayGame.isChecked()){
          s.append(cbPlayGame.getText().toString()+",");
          }
        String city = spCity.getSelectedItem().toString();
        User user = new User(userName,passW,sex,
        s.toString().equals("")?"":s.toString().substring(0, s.length()),
        city);
        Toast.makeText(this, "用户注册信息:"+user.toString(),100000).show();
            break;
        case R.id.btEixt:
        finish();
        break;
        }
        }

    }

    2、user类

    package com.sxt.entity;


    public class User {
    private String userName;
    private String passWord;
    private char sex;
    private String city;
    private String hobby;
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }
    public String getPassWord() {
    return passWord;
    }
    public void setPassWord(String passWord) {
    this.passWord = passWord;
    }
    public char getSex() {
    return sex;
    }
    public void setSex(char sex) {
    this.sex = sex;
    }
    public String getCity() {
    return city;
    }
    public void setCity(String city) {
    this.city = city;
    }
    public String getHobby() {
    return hobby;
    }
    public void setHobby(String hobby) {
    this.hobby = hobby;
    }
    public User(String userName, String passWord, char sex, String city,
    String hobby) {
    super();
    this.userName = userName;
    this.passWord = passWord;
    this.sex = sex;
    this.city = city;
    this.hobby = hobby;
    }
    @Override
    public String toString() {
    // TODO Auto-generated method stub
    return this.userName+","+this.passWord+","
    +this.sex+","+this.city+","+this.hobby;
    }

    }

    效果:



    展开全文
  • 主要为大家详细介绍了Android封装MVP实现登录注册功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 我们需要创建一个新工程,然后在activity_...androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"

    我们需要创建一个新工程,然后在activity_main.xml布局文件下设置布局在这里插入图片描述

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android=
    展开全文
  • Android 实现登录注册功能

    万次阅读 多人点赞 2015-12-27 00:31:04
    初次使用SQliteOpenHelper,SQliteDatabase实现登录注册功能。写下这篇博客谨记。先上图片看看效果。 **首先创建布局文件activity_main.xml文件。布局很简单只有一个LinearLayout,一个TableLayout,两个...

    初次使用SQliteOpenHelper,SQliteDatabase实现登录注册功能。写下这篇博客谨记。先上图片看看效果。
    登录界面
    注册界面
    登录成功界面

    首先创建布局文件activity_main.xml文件。布局很简单只有一个LinearLayout,一个TableLayout,两个TextView,两个EditText,两个Button。之所以在TableLayout之前嵌套一个LinearLayout,是希望把背景图定死。不然输入框获取焦点,软键盘弹出时背景图会被拉伸。关于软键盘弹出的遮挡组件影响美观的事情我还上网搜了有关资料。
    Android彻底解决软键盘弹出遮挡组件
    但是,我并没有按照这篇博文的方式重写LinearLayout。我的方法是直接设置marginTop=200dp。
    以下是activity_main.xml源码:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:background="@drawable/background"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        >
    <TableLayout
    
        android:layout_width="match_parent"
        android:layout_marginTop="200dp"
        android:layout_height="match_parent">
        <TableRow
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="@string/username"
                android:textSize="20dp"
                android:layout_marginLeft="30dp"
                android:textColor="#F5F5F5"
                android:id="@+id/textView" />
    
            <EditText
                android:layout_width="200dp"
                android:layout_height="wrap_content"
                android:background="@drawable/edit_selector"
                android:cursorVisible="false"
                android:singleLine="true"
                android:gravity="center"
                android:layout_marginRight="30dp"
                android:id="@+id/editText" />
    
        </TableRow>
        <TableRow android:layout_marginTop="10dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="20dp"
                android:layout_marginLeft="30dp"
                android:textColor="#F5F5F5"
                android:text="@string/password"
                android:id="@+id/textView2" />
    
            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:background="@drawable/edit_selector"
                android:ems="10"
                android:gravity="center"
                android:singleLine="true"
                android:cursorVisible="false"
                android:layout_marginRight="30dp"
                android:id="@+id/editText3" />
    
        </TableRow>
        <TableRow android:layout_marginTop="20dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="登录"
                android:textSize="20dp"
                android:background="@drawable/button_selector"
                android:layout_marginLeft="30dp"
                android:id="@+id/button" />
    
            <Button
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="注册"
                android:textSize="20dp"
                android:layout_marginLeft="10dp"
                android:background="@drawable/button_selector"
                android:layout_marginRight="30dp"
                android:id="@+id/button2" />
        </TableRow>
    
    
    </TableLayout>
    </LinearLayout>

    写好了activity_main.xml之后呢,我还在drawable文件夹下定义了一个edit_selector和一个button_selector.xml。是为了设置输入框获取焦点是的状态改变和button点击前后的状态改变。特别提醒android的空格是#&160; 不是&nbsp;。

    XML文件定义好之后,我们就获取组件并为其设置监听器。

      @Override
        protected void onCreate(Bundle savedInstanceState) {
    
            super.onCreate(savedInstanceState);
            requestWindowFeature(Window.FEATURE_NO_TITLE);
            setContentView(R.layout.activity_main);
            userName=(EditText)findViewById(R.id.editText);
            password=(EditText)findViewById(R.id.editText3);
            loadButton = (Button) findViewById(R.id.button);
            registerButton = (Button) findViewById(R.id.button2);
            loadButton.setTag(1);
            loadButton.setOnClickListener(this);
            registerButton.setTag(2);
            registerButton.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
            int tag = (int) v.getTag();
            switch (tag) {
                case 1:
                    Intent intent1=new Intent(MainActivity.this,firstPage.class);
                    intent1.putExtra("userName",userName.getText().toString());
                    intent1.putExtra("password",password.getText().toString());
                    if (idCorrect()){
                        intent1.putExtra("userName",userName.getText().toString());
                        intent1.putExtra("password",password.getText().toString());
                        startActivity(intent1);
                    }
                    break;
    
                case 2:
                    Intent intent=new Intent(this,registerActivity.class);
                    startActivity(intent);
                    break;
            }
    
        }

    这是登录界面的代码。当用户输入账号密码时,先进行判断该用户是否注册,即查询数据库。如果正确就跳转到另一个activity。

        public boolean idCorrect(){
            myOpenHelper=new MyOpenHelper(this,"mydb.db",null,1);
            database=myOpenHelper.getWritableDatabase();
            Cursor cursor=database.rawQuery(qurySql,null);
            while(cursor.moveToNext()){
                userName1=cursor.getString(cursor.getColumnIndex("userId"));
                password1=cursor.getString(cursor.getColumnIndex("password"));
                if (userName1.equals(userName.getText().toString())&&password1.equals(password.getText().toString())){
                    return true;
                }
                }
                Toast.makeText(this,"账号或密码错误,请重新输入",Toast.LENGTH_LONG).show();
                return false;
    
            }

    这是查询数据库并判断该用户是否已注册。

    //打开或创建一个名为mydb.db的数据库。如果没有就创建一个
    myOpenHelper=new MyOpenHelper(this,"mydb.db",null,1);
    //在getWritableDatabase()之前数据库其实并没有实际创建。
    //所以真正意义上来说这句才是创建数据库。获取一个可读写的数据库
    database=myOpenHelper.getWritableDatabase();
    //查询语句
    Cursor cursor=database.rawQuery(qurySql,null);

    MyOpenHelper是一个继承了SQLiteOpenHelper的子类。第一个参数是context,第二个参数是String DatabaseName,要打开或创建的数据库名称,第三个参数是CursorFactory factory,用来创建cursor对象,默认为null。第四个参数为int version,数据库版本。

    接下来我们看下注册界面的activity。

    package com.example.admin.dec1224;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.database.sqlite.SQLiteDatabase;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.Toast;
    
    /**
     * Created by admin on 2015/12/25.
     */
    public class registerActivity extends Activity implements View.OnClickListener{
        private Button register;
        private Button back;
        private String userName;
        private String password;
        private MyOpenHelper myOpenHelper;
        public static final String createTableSql="create table if not exists userInfo (userId varchar,password varchar)";
        private int Tag=0;
        private SQLiteDatabase database;
        private EditText editUser;
        private EditText pwd;
        private EditText pwdAgain;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.register);
            editUser=(EditText)findViewById(R.id.reg_userText);
            pwd=(EditText)findViewById(R.id.reg_pwdText);
            pwdAgain=(EditText)findViewById(R.id.reg_pwdagText);
            register= (Button) findViewById(R.id.button3);
            register.setTag(1);
            register.setOnClickListener(this);
            back=(Button)findViewById(R.id.button4);
            back.setTag(2);
            back.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
            int Tag=(int)v.getTag();
           switch (Tag){
               case 1:
                   createDatabase();
                   createTable();
                   insertData();
                   Toast.makeText(registerActivity.this,"注册成功",Toast.LENGTH_LONG).show();
                   break;
               case 2:
                   Intent intent=new Intent(this,MainActivity.class);
                   startActivity(intent);
                   break;
               default:
                   Toast.makeText(registerActivity.this,"注册失败,请再试一次",Toast.LENGTH_LONG).show();
                   break;
    
           }
    
        }
    
        public void createDatabase(){
            myOpenHelper=new MyOpenHelper(this,"mydb.db",null,1);
            database=myOpenHelper.getWritableDatabase();
    
        }
    
        public void createTable(){
            createDatabase();
            database.execSQL(createTableSql);
    
        }
    
        public void insertData(){
            pwdCorrect();
            createDatabase();
            String insertSql="insert into userInfo (userId,password) values ('"+editUser.getText().toString()+"','"+pwd.getText().toString()+"');";
            database.execSQL(insertSql);
    //        ContentValues cv=new ContentValues();
    //        cv.put(userName,editUser.getText().toString());
    //        cv.put(password,pwd.getText().toString());
    //        database.insert("userInfo", null, cv);
    
    
    
        }
    
        public boolean pwdCorrect(){
            if(pwd.getText().toString().equals(pwdAgain.getText().toString())){
                return true;
            }
            Toast.makeText(registerActivity.this,"两次密码输入不一致,请重新输入。",Toast.LENGTH_LONG).show();
            return false;
    
    
        }
    }
    

    即插入数据。

    展开全文
  • Android仿QQ登录界面示例,实现登录、注册功能

    万次阅读 多人点赞 2018-08-28 17:58:22
    Android开发经常用到注册、登录功能,于是便整理出一般通用的登录界面,并实现其相应功能。供读者参阅。此项目包含三个活动,即登录,注册界面,找回密码。 首先是登录界面 activity_main.xml: &lt;?...

    首语

    • 历经一个月的时间,自己终于搭建完成了个人网站,还在持续优化中,网站采用halo博客系统,功能非常强大!欢迎大家来我的网站逛逛。有什么建议可以留言!

    网站地址:http://www.yanghujun.com

    Android开发经常用到注册、登录功能,于是便整理出一般通用的登录界面,并实现其相应功能。供读者参阅。此项目包含三个活动,即登录,注册界面,找回密码。

    GitHub源码地址:LoginTest

    界面

    下面是对代码的分析过程。

    首先是登录界面 activity_main.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <!--登录界面,用LinearLayout-->
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@mipmap/bg"
        android:orientation="vertical">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="35dp">
    
            <ImageView
                android:id="@+id/symbol"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                />
    
            <TextView
                android:layout_marginLeft="20dp"
                android:id="@+id/qq"
                android:layout_width="wrap_content"
                android:layout_marginTop="35dp"
                android:text="仿QQ"
                android:textSize="24sp"
                android:layout_height="wrap_content" />
        </LinearLayout>
        <!--输入框-->
        <EditText
            android:id="@+id/et_user_name"
            android:layout_width="320dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="60dp"
            android:hint="账号"
            android:textSize="20sp" />
        <!--输入框-->
        <EditText
            android:id="@+id/et_psw"
            android:layout_width="320dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dp"
            android:hint="密码"
            android:textSize="20sp"
            android:inputType="textPassword"/>
        <!--按钮-->
        <Button
            android:id="@+id/btn_login"
            android:text="登录"
            android:background="#1E90FF"
            android:textSize="24sp"
            android:layout_gravity="center"
            android:layout_marginTop="20dp"
            android:layout_width="320dp"
            android:layout_height="wrap_content"/>
     
        <RelativeLayout
            android:layout_marginTop="15dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <TextView
                android:id="@+id/tv_register"
                android:layout_alignParentRight="true"
                android:layout_marginRight="20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="新用户注册"/>
            <!--layout_weight="1" layout_width="0dp"实现均分效果-->
            <TextView
                android:id="@+id/tv_find_psw"
                android:layout_alignParentLeft="true"
                android:layout_marginLeft="20dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="忘记密码?" />
       </RelativeLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <RelativeLayout
                android:layout_gravity="center"
                android:layout_marginBottom="30dp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
    
                <TextView
                    android:layout_alignParentBottom="true"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="登录即代表阅读并同意服务条款" />
            </RelativeLayout>
        </LinearLayout>
    </LinearLayout>
    
    

    对应的就是登录活动 MainActivity:

    public class MainActivity extends AppCompatActivity {
        private String userName,psw,spPsw;//获取的用户名,密码,加密密码
        private EditText et_user_name,et_psw;//编辑框
        @Override
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            //设置此界面为竖屏
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            init();
        }
        //获取界面控件
        private void init() {
            //从main_title_bar中获取的id
            //从activity_login.xml中获取的
            TextView tv_register = (TextView) findViewById(R.id.tv_register);
            TextView tv_find_psw = (TextView) findViewById(R.id.tv_find_psw);
            Button btn_login = (Button) findViewById(R.id.btn_login);
            et_user_name= (EditText) findViewById(R.id.et_user_name);
            et_psw= (EditText) findViewById(R.id.et_psw);
            //立即注册控件的点击事件
            tv_register.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //为了跳转到注册界面,并实现注册功能
                    Intent intent=new Intent(MainActivity.this,RegisterActivity.class);
                    startActivityForResult(intent, 1);
                }
            });
            //找回密码控件的点击事件
            tv_find_psw.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                   startActivity(new Intent(MainActivity.this,LostFindActivity.class));
                }
            });
            //登录按钮的点击事件
            btn_login.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //开始登录,获取用户名和密码 getText().toString().trim();
                    userName = et_user_name.getText().toString().trim();
                    psw = et_psw.getText().toString().trim();
                    //对当前用户输入的密码进行MD5加密再进行比对判断, MD5Utils.md5( ); psw 进行加密判断是否一致
                    String md5Psw = MD5Utils.md5(psw);
                    // md5Psw ; spPsw 为 根据从SharedPreferences中用户名读取密码
                    // 定义方法 readPsw为了读取用户名,得到密码
                    spPsw = readPsw(userName);
                    // TextUtils.isEmpty
                    if (TextUtils.isEmpty(userName)) {
                        Toast.makeText(MainActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                    } else if (TextUtils.isEmpty(psw)) {
                        Toast.makeText(MainActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                        // md5Psw.equals(); 判断,输入的密码加密后,是否与保存在SharedPreferences中一致
                    } else if (md5Psw.equals(spPsw)) {
                        //一致登录成功
                        Toast.makeText(MainActivity.this, "登录成功", Toast.LENGTH_SHORT).show();
             //保存登录状态,在界面保存登录的用户名 定义个方法 saveLoginStatus boolean 状态 , userName 用户名;
                        saveLoginStatus(true, userName);
                        //登录成功后关闭此页面进入主页
                        Intent data = new Intent();
                        //datad.putExtra( ); name , value ;
                        data.putExtra("isLogin", true);
                        //RESULT_OK为Activity系统常量,状态码为-1
           // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
                        setResult(RESULT_OK, data);
                        //销毁登录界面
                        MainActivity.this.finish();
                        //跳转到主界面,登录成功的状态传递到 MainActivity 中
                        startActivity(new Intent(MainActivity.this, ItemActivity.class));
                    } else if ((spPsw != null && !TextUtils.isEmpty(spPsw) && !md5Psw.equals(spPsw))) {
                        Toast.makeText(MainActivity.this, "输入的用户名和密码不一致", Toast.LENGTH_SHORT).show();
                    } else {
                        Toast.makeText(MainActivity.this, "此用户名不存在", Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        /**
         *从SharedPreferences中根据用户名读取密码
         */
        private String readPsw(String userName){
            //getSharedPreferences("loginInfo",MODE_PRIVATE);
            //"loginInfo",mode_private; MODE_PRIVATE表示可以继续写入
            SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            //sp.getString() userName, "";
            return sp.getString(userName , "");
        }
        /**
         *保存登录状态和登录用户名到SharedPreferences中
         */
        private void saveLoginStatus(boolean status,String userName){
                  //loginInfo表示文件名  SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            //获取编辑器
            SharedPreferences.Editor editor=sp.edit();
            //存入boolean类型的登录状态
            editor.putBoolean("isLogin", status);
            //存入登录状态时的用户名
            editor.putString("loginUserName", userName);
            //提交修改
            editor.apply();
        }
        /**
         * 注册成功的数据返回至此
         * @param requestCode 请求码
         * @param resultCode 结果码
         * @param data 数据
         */
        @Override
        //显示数据, onActivityResult
        //startActivityForResult(intent, 1); 从注册界面中获取数据
        //int requestCode , int resultCode , Intent data
        // LoginActivity -> startActivityForResult -> onActivityResult();
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            //super.onActivityResult(requestCode, resultCode, data);
            super.onActivityResult(requestCode, resultCode, data);
            if(data!=null){
                //是获取注册界面回传过来的用户名
                // getExtra().getString("***");
                String userName=data.getStringExtra("userName");
                if(!TextUtils.isEmpty(userName)){
                    //设置用户名到 et_user_name 控件
                    et_user_name.setText(userName);
                    //et_user_name控件的setSelection()方法来设置光标位置
                    et_user_name.setSelection(userName.length());
                }
            }
        }
    }
    

    接下来是注册界面 activity_register.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@color/colorPrimary"
            android:gravity="center_vertical">
    
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:text="注册"
                android:textSize="30sp"/>
    
        </RelativeLayout>
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@drawable/shap"
            android:orientation="vertical" >
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:gravity="center_vertical"
                android:orientation="horizontal" >
                <EditText
                    android:id="@+id/et_user_name"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:paddingTop="2dp"
                    android:paddingBottom="2dp"
                    android:paddingLeft="6dp"
                    android:hint="账号"
                    android:singleLine="true"
                    android:maxLength="15"
                    android:background="#ffffff"
                    android:textSize="18sp" />
            </LinearLayout>
    
    
            <LinearLayout
                android:background="@drawable/shap"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:gravity="center_vertical"
                android:orientation="horizontal" >
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:paddingTop="2dp"
                    android:paddingBottom="2dp"
                    android:paddingLeft="6dp"
                    android:singleLine="true"
                    android:hint="请输入密码"
                    android:inputType="textPassword"
                    android:maxLength="15"
                    android:background="#ffffff"
                    android:id="@+id/et_psw"
                    android:textSize="18sp" />
            </LinearLayout>
    
            <LinearLayout
                android:background="@drawable/shap"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:gravity="center_vertical"
                android:orientation="horizontal" >
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:paddingTop="2dp"
                    android:paddingBottom="2dp"
                    android:paddingLeft="6dp"
                    android:singleLine="true"
                    android:hint="请再次输入密码"
                    android:inputType="textPassword"
                    android:maxLength="15"
                    android:background="#ffffff"
                    android:id="@+id/et_psw_again"
                    android:textSize="18sp" />
            </LinearLayout>
    
            <LinearLayout
                android:background="@drawable/shap"
                android:layout_width="match_parent"
                android:layout_height="60dp"
                android:gravity="center_vertical"
                android:orientation="horizontal" >
                <TextView
                    android:layout_width="0px"
                    android:layout_height="wrap_content"
                    android:layout_weight="1"
                    android:layout_marginLeft="10dp"
                    android:paddingLeft="6dp"
                    android:gravity="left"
                    android:text="性别"
                    android:textSize="18sp" />
                <RadioGroup
                    android:layout_width="0px"
                    android:layout_height="wrap_content"
                    android:layout_weight="2.6"
                    android:id="@+id/SexRadio"
                    android:paddingLeft="5dp">
                    <RadioButton
                        android:id="@+id/mainRegisterRdBtnFemale"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="女生"/>
                    <RadioButton
                        android:id="@+id/mainRegisterRdBtnMale"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="男生"/>
                </RadioGroup>
            </LinearLayout>
            
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:gravity="center_vertical"
                android:orientation="horizontal" >
                <EditText
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:paddingTop="2dp"
                    android:paddingBottom="2dp"
                    android:paddingLeft="6dp"
                    android:hint="学校"
                    android:singleLine="true"
                    android:maxLength="15"
                    android:background="#ffffff"
                    android:textSize="18sp" />
            </LinearLayout>
    
        </LinearLayout>
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" >
            <Button
                android:id="@+id/btn_register"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="40dp"
                android:text="注册"
                android:textSize="24sp"
                android:background="@color/colorPrimary" />
         </RelativeLayout>
    
    </LinearLayout>
    

    对应注册活动 RegisterActivity:

    public class RegisterActivity extends AppCompatActivity {
    
        //用户名,密码,再次输入的密码的控件
        private EditText et_user_name,et_psw,et_psw_again;
        //用户名,密码,再次输入的密码的控件的获取值
        private String userName,psw,pswAgain;
        private RadioGroup Sex;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            //设置页面布局 ,注册界面
            setContentView(R.layout.activity_register);
            //设置此界面为竖屏
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
            init();
        }
    
        private void init() {
    
            //从activity_register.xml 页面中获取对应的UI控件
            Button btn_register = (Button) findViewById(R.id.btn_register);
            et_user_name= (EditText) findViewById(R.id.et_user_name);
            et_psw= (EditText) findViewById(R.id.et_psw);
            et_psw_again= (EditText) findViewById(R.id.et_psw_again);
            Sex= (RadioGroup) findViewById(R.id.SexRadio);
            //注册按钮
            btn_register.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View v) {
    
                    //获取输入在相应控件中的字符串
                    getEditString();
                    //判断输入框内容
                    int sex;
                    int sexChoseId = Sex.getCheckedRadioButtonId();
                    switch (sexChoseId) {
                        case R.id.mainRegisterRdBtnFemale:
                            sex = 0;
                            break;
                        case R.id.mainRegisterRdBtnMale:
                            sex = 1;
                            break;
                        default:
                            sex = -1;
                            break;
                    }
    
                    if(TextUtils.isEmpty(userName)){
                        Toast.makeText(RegisterActivity.this, "请输入用户名", Toast.LENGTH_SHORT).show();
                    }else if(TextUtils.isEmpty(psw)){
                        Toast.makeText(RegisterActivity.this, "请输入密码", Toast.LENGTH_SHORT).show();
                    }else if(TextUtils.isEmpty(pswAgain)) {
                        Toast.makeText(RegisterActivity.this, "请再次输入密码", Toast.LENGTH_SHORT).show();
                    } else if (sex<0){
                        Toast.makeText(RegisterActivity.this, "请选择性别", Toast.LENGTH_SHORT).show();
                    }else if(!psw.equals(pswAgain)){
                        Toast.makeText(RegisterActivity.this, "输入两次的密码不一样", Toast.LENGTH_SHORT).show();
    
                        /**
                         *从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
                         */
                    }else if(isExistUserName(userName)){
                        Toast.makeText(RegisterActivity.this, "此账户名已经存在", Toast.LENGTH_SHORT).show();
    
                    }else{
                        Toast.makeText(RegisterActivity.this, "注册成功", Toast.LENGTH_SHORT).show();
                        //把账号、密码和账号标识保存到sp里面
                        /**
                         * 保存账号和密码到SharedPreferences中
                         */
                        saveRegisterInfo(userName, psw);
                        //注册成功后把账号传递到LoginActivity.java中
                        // 返回值到loginActivity显示
                        Intent data = new Intent();
                        data.putExtra("userName", userName);
                        setResult(RESULT_OK, data);
                        //RESULT_OK为Activity系统常量,状态码为-1,
                        // 表示此页面下的内容操作成功将data返回到上一页面,如果是用back返回过去的则不存在用setResult传递data值
                        RegisterActivity.this.finish();
                    }
                }
            });
        }
        /**
         * 获取控件中的字符串
         */
        private void getEditString(){
            userName=et_user_name.getText().toString().trim();
            psw=et_psw.getText().toString().trim();
            pswAgain=et_psw_again.getText().toString().trim();
        }
        /**
         * 从SharedPreferences中读取输入的用户名,判断SharedPreferences中是否有此用户名
         */
        private boolean isExistUserName(String userName){
            boolean has_userName=false;
            //mode_private SharedPreferences sp = getSharedPreferences( );
            // "loginInfo", MODE_PRIVATE
            SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
            //获取密码
            String spPsw=sp.getString(userName, "");//传入用户名获取密码
            //如果密码不为空则确实保存过这个用户名
            if(!TextUtils.isEmpty(spPsw)) {
                has_userName=true;
            }
            return has_userName;
        }
        /**
         * 保存账号和密码到SharedPreferences中SharedPreferences
         */
        private void saveRegisterInfo(String userName,String psw){
            String md5Psw = MD5Utils.md5(psw);//把密码用MD5加密
            //loginInfo表示文件名, mode_private SharedPreferences sp = getSharedPreferences( );
            SharedPreferences sp=getSharedPreferences("loginInfo", MODE_PRIVATE);
    
            //获取编辑器, SharedPreferences.Editor  editor -> sp.edit();
            SharedPreferences.Editor editor=sp.edit();
            //以用户名为key,密码为value保存在SharedPreferences中
            //key,value,如键值对,editor.putString(用户名,密码);
            editor.putString(userName, md5Psw);
            //提交修改 editor.commit();
            editor.apply();
        }
    }
    

    最后是找回密码界面 activity_lost_find.xml:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    
      <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:background="@color/colorPrimary"
        android:gravity="center">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="忘记密码"
            android:textSize="30sp"/>
            
      </LinearLayout>
        
      <LinearLayout
        android:layout_marginTop="15dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:paddingTop="2dp"
            android:paddingBottom="2dp"
            android:paddingLeft="6dp"
            android:hint="请输入忘记密码的账号"
            android:singleLine="true"
            android:maxLength="15"
            android:background="#ffffff"
            android:textSize="24sp" />
      </LinearLayout>
    
    </LinearLayout>
    

    找回密码功能只是新建了一个活动,并未实现功能。

    小结:功能未使用内置数据库SQLite,运用MD5加密算法完成。

    展开全文
  • 自己实现Android PHP JSON实现登陆注册功能,使用okhttp3实现
  • android 实现注册代码

    热门讨论 2013-01-25 11:11:15
    android 注册功能代码 容错机制全 分享咯
  • 实现效果: 主要功能 注册界面含有用户名和密码,确定密码三个输入框,输入相应的内容,点击注册按钮,系统获取输入框里面的内容,判断输入的密码与再次输入的密码是不一致,与三个输入框的内容不能为空,若出现...
  • Android登录注册功能实现,实现Android客户端与php服务端交互,传输数据格式用的是json,能够从客户端想服务器的MySQL数据库中插入数据以及读取服务端的数据返回到客户端。内包含php文件,sql文件,java代码
  • Android注册登录功能

    2020-01-31 12:41:41
    实现Android注册登录功能,基本涵盖了注册登录的问题。 实现Android注册登录功能,基本涵盖了注册登录的问题。
  • 最近刚好做了一个Android的登录注册界面,将数据利用SharedPreferences或者SQLite绑定到Android程序中,实现简单的登陆注册功能,本文未涉及到与服务器的交流。 首先,对于登陆注册要有一个明确的逻辑顺序,不管是...
  • Android PHP JSON 实现登陆注册功能

    热门讨论 2015-02-03 15:55:51
    实现Android客户端与php服务端交互,传输数据格式用的是json,能够从客户端想服务器的MySQL数据库中插入数据以及读取服务端的数据返回到客户端。
  • android实现登录注册

    热门讨论 2013-03-08 21:04:53
    android实现登录注册功能,代码简单很实用
  • Android手机端连接Java后台 实现登录注册功能 注意修改下自己的ip地址 查询语句中修改自己的表名
  • Android——实现登录和注册功能

    千次阅读 2020-04-05 23:43:06
    这次尝试写了一个登录注册功能,大概涉及以下几个知识点:使用LitePal操作数据库、颜色渐变、嵌套布局。其他的皆是比较正常的知识。话不多说,进入正题。 正文 UI界面 登录 先来说说登录界面的实现。 在布局上最外层...
  • 使用SQLiteOnpeHelper,SQLiteDatabase实现对数据库的增删查改。以及对按钮及文本框实现获取焦点后的效果
  • 加入数据库mysql实现android注册登陆功能的客户端服务器源码
  • Android实现简单的登录和注册功能

    万次阅读 2019-04-21 23:21:13
    文章目录登录和注册功能app一.UI设计1.实现隐藏状态栏和全屏幕2.图片设置为背景被拉伸的解决方案3.设置圆角Button按钮4.设置圆形图片二.运用数据库功能1.实现退出登录活动后再进入可以记住账号2.实现记住密码 登录和...
  • android 仿微信demo————注册功能实现(服务端)

    千次阅读 多人点赞 2021-06-13 17:22:28
    android 仿微信demo————注册功能(移动端) 上一篇文章实现了微信注册的移动端功能,下面继续完善功能,实现微信注册服务端功能 文章目录服务端注册功能实现创建项目创建web层和客户端完成数据交互创建service...
  • 今天来实现一下请求服务器获取短信验证码实现注册功能 由于用的是别人的服务器接口代码中我会把接口地址删掉,谅解。 请求服务器获取验证码需要传入相应的字段,如下: /** * 获取手机验证码 * @method get * @...
  • 主要介绍了Android开发之TextView使用intent传递信息,实现注册界面功能,涉及Android使用intent传值及界面布局等相关操作技巧,需要的朋友可以参考下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 101,065
精华内容 40,426
关键字:

安卓实现注册功能