登录注册实例android_android注册登录实例 - CSDN
  • AndroidManifest.xml <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="online.geekgalaxy.layoutlearn"> android:allowBackup="true" and

    AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="online.geekgalaxy.layoutlearn">
    
        <application
            android:allowBackup="true"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
            <activity android:name=".MainActivity">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
    
            <activity android:name=".login">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>
    
            <activity android:name=".register">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                </intent-filter>
            </activity>
    
        </application>
    
    </manifest>

    MainActivity.java

    package online.geekgalaxy.layoutlearn;
    
    import android.content.DialogInterface;
    import android.content.Intent;
    import android.support.v7.app.AlertDialog;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.EditText;
    
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //login button
            final Button login = (Button) findViewById(R.id.button);
            final String user = "admin";
            final String pass = "hello";
    
    
            login.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    String username = "";
                    EditText editText1 = (EditText)findViewById(R.id.editText);
                    username = editText1.getText().toString();
    
                    String password = "";
                    EditText editText2 = (EditText)findViewById(R.id.editText2);
                    password = editText2.getText().toString();
    
                    if (username.equals(user) & password.equals(pass)) {
                        Intent intent = new Intent(MainActivity.this, login.class);
                        startActivity(intent);
                    }
                    else {
                        new AlertDialog.Builder(MainActivity.this).setTitle("Error!").setMessage("Wrong username or password.")
                                .setNegativeButton("OK",null)
                                .show();
                    }
                }
    
            });
    
            //register button
            final Button register = (Button) findViewById(R.id.button2);
            register.setOnClickListener(new View.OnClickListener() {
                public void onClick(View view) {
                    //提示框确定是否跳转
                    new AlertDialog.Builder(MainActivity.this).setTitle("Jump").setMessage("Ready to jump?")
                            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                                public void onClick(DialogInterface dialog, int which) {
                                    Intent intent = new Intent(MainActivity.this, register.class);
                                    startActivity(intent);
                                }})
                            .setNegativeButton("No",null)
                            .show();
                }
            });
        }
    }
    

    login.java

    package online.geekgalaxy.layoutlearn;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    /**
     * Created by jailman on 2017/9/18.
     */
    
    public class login extends Activity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.login);
        }
    }
    

    register.java

    package online.geekgalaxy.layoutlearn;
    
    import android.app.Activity;
    import android.os.Bundle;
    
    /**
     * Created by jailman on 2017/9/18.
     */
    
    public class register extends Activity{
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.register);
        }
    }
    

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerVertical="true"
        tools:context="online.geekgalaxy.layoutlearn.MainActivity">
    
        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="68dp"
            android:text="@string/login"
            app:layout_constraintRight_toLeftOf="@+id/button2"
            tools:layout_constraintTop_creator="1"
            android:layout_marginEnd="68dp"
            android:layout_marginTop="26dp"
            app:layout_constraintTop_toBottomOf="@+id/editText2" />
    
        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/register"
            tools:layout_constraintTop_creator="1"
            tools:layout_constraintRight_creator="1"
            android:layout_marginEnd="68dp"
            app:layout_constraintRight_toRightOf="parent"
            android:layout_marginTop="26dp"
            app:layout_constraintTop_toBottomOf="@+id/editText2" />
    
        <EditText
            android:id="@+id/editText"
            android:layout_width="240dp"
            android:layout_height="45dp"
            android:layout_marginBottom="35dp"
            android:layout_marginEnd="68dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:layout_marginStart="68dp"
            android:ems="10"
            android:hint="@string/username"
            android:inputType="textPersonName"
            app:layout_constraintBottom_toTopOf="@+id/editText2"
            app:layout_constraintHorizontal_bias="0.516"
            app:layout_constraintLeft_toLeftOf="@+id/editText2"
            app:layout_constraintRight_toRightOf="@+id/editText2"
            tools:layout_constraintLeft_creator="1"
            tools:layout_constraintRight_creator="1"
            tools:layout_editor_absoluteX="-15dp"
            tools:layout_editor_absoluteY="152dp" />
    
        <EditText
            android:id="@+id/editText2"
            android:layout_width="240dp"
            android:layout_height="45dp"
            android:layout_marginEnd="69dp"
            android:layout_marginLeft="0dp"
            android:layout_marginRight="0dp"
            android:layout_marginStart="69dp"
            android:ems="10"
            android:hint="@string/password"
            android:inputType="textPassword"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="@+id/button"
            app:layout_constraintRight_toRightOf="@+id/button2"
            app:layout_constraintTop_toTopOf="parent"
            tools:layout_constraintBottom_creator="1"
            tools:layout_constraintLeft_creator="1"
            tools:layout_constraintRight_creator="1"
            tools:layout_constraintTop_creator="1" />
    
        <TextView
            android:id="@+id/textView2"
            android:layout_width="250dp"
            android:layout_height="65dp"
            android:layout_marginBottom="50dp"
            android:layout_marginLeft="8dp"
            android:layout_marginRight="8dp"
            android:autoText="false"
            android:text="Welcome"
            android:textAlignment="center"
            android:textSize="50sp"
            android:textStyle="bold"
            app:layout_constraintBottom_toTopOf="@+id/editText"
            app:layout_constraintHorizontal_bias="0.509"
            app:layout_constraintLeft_toLeftOf="@+id/editText"
            app:layout_constraintRight_toRightOf="@+id/editText" />
    
    </android.support.constraint.ConstraintLayout>
    

    login.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:weightSum="1">
    
        <TextView
            android:id="@+id/textView3"
            android:layout_width="0dp"
            android:layout_height="118dp"
            android:layout_marginTop="200dp"
            android:layout_weight="1"
            android:text="@string/great_you_ve_login"
            android:textAlignment="center"
            android:textSize="24sp"
            android:textStyle="bold" />
    </LinearLayout>
    

    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">
    
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center_vertical|center_horizontal"
            android:orientation="vertical">
    
            <EditText
                android:id="@+id/editText5"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Username"
                android:inputType="textPersonName" />
    
            <EditText
                android:id="@+id/editText6"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Email"
                android:inputType="textPersonName" />
    
            <EditText
                android:id="@+id/editText7"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Password"
                android:inputType="textPassword" />
    
            <EditText
                android:id="@+id/editText8"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:ems="10"
                android:hint="Confirm password"
                android:inputType="textPassword" />
    
            <Button
                android:id="@+id/button3"
                android:layout_width="270dp"
                android:layout_height="wrap_content"
                android:text="Submit" />
        </LinearLayout>
    </LinearLayout>
    

    strings.xml

    <resources>
        <string name="app_name">LayoutLearn</string>
        <string name="login">Login</string>
        <string name="register">Register</string>
        <string name="username">Username</string>
        <string name="password">Password</string>
        <string name="great_you_ve_login">Great, you\'ve logged in!</string>
    </resources>
    

    build.gradle

    apply plugin: 'com.android.application'
    
    android {
        compileSdkVersion 25
        buildToolsVersion "25.0.3"
        defaultConfig {
            applicationId "online.geekgalaxy.layoutlearn"
            minSdkVersion 19
            targetSdkVersion 25
            versionCode 1
            versionName "1.0"
            testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
            exclude group: 'com.android.support', module: 'support-annotations'
        })
        compile 'com.android.support:appcompat-v7:25.3.1'
        compile 'com.android.support.constraint:constraint-layout:1.0.2'
        testCompile 'junit:junit:4.12'
    }
    







    展开全文
  • 今天用QQ的时候想到了,不如用android studio 做一个类似于这样的登录软件。当然QQ的实现的功能特别复杂,UI界面也很多,不是单纯的一时新奇就可以做出来的。就是简单的实现了一些功能,做了三个界面;1.登录界面。2...

    小项目框架

    今天用QQ的时候想到了,不如用android studio 做一个类似于这样的登录软件。当然QQ的实现的功能特别复杂,UI界面也很多,不是单纯的一时新奇就可以做出来的。就是简单的实现了一些功能,做了三个界面;1.登录界面。2.注册界面。3.登陆后的界面。

    功能描述

    登录按钮------按钮实现跳转到下一个界面,并且判断输入的账号、密码是否符合规则(不为空),提示,登陆成功或失败
    注册按钮------按钮实现跳转到注册界面

    登录界面
    在这里插入图片描述
    main_activity.xml

     <LinearLayout
            android:id="@+id/number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/iv"
            android:layout_centerVertical="true"
            android:layout_marginBottom="5dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="15dp"
            android:background="#ffffff">
            <TextView
                android:id="@+id/tv_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:text="账号"
                android:textColor="#000"
                android:textSize="20dp" />
            <EditText
                android:id="@+id/et_username"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:background="@null"
                android:padding="10dp" />
        </LinearLayout>
        <LinearLayout
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/number"
            android:layout_centerVertical="true"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="#ffffff">
            <TextView
                android:id="@+id/tv_password"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="10dp"
                android:text="密码"
                android:textSize="20dp"
                android:textColor="#000" />
            <EditText
                android:id="@+id/et_password"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:layout_toRightOf="@id/tv_password"
                android:background="@null"
                android:inputType="textPassword"
                android:padding="10dp" />
        </LinearLayout>
        <Button
            android:id="@+id/button_login"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/password"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="60dp"
            android:background="#3c8dc4"
            android:text="登录"
            android:textColor="#ffffff"
            android:textSize="20dp" />
        <Button
            android:id="@+id/button_register"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/button_login"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="30dp"
            android:background="#b7585556"
            android:text="注册"
            android:textColor="#ffffff"
            android:textSize="20dp" />
    
        <CheckBox
            android:checked="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="记住密码"
            android:id="@+id/checkBox"
            android:layout_below="@+id/password"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="5dp"/>
    

    注册界面
    确定注册------按钮实现注册,判断以上四个注册信息是否符合规则,判断两次输入密码是否一样,并且不为空。并且显示提示信息
    返回登录------按钮实现跳转到刚才的登录界面
    在这里插入图片描述
    main_activity.java

    
    public class MainActivity extends AppCompatActivity {
        private EditText et_username;
        private EditText et_password;
        private EditText et_password2;
        private EditText et_mail;
        private Button btn_login;
        private Button btn_register;
        private CheckBox checkbox;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Map<String, String> userInfo = SaveInfo.getSaveInformation(this);
            if (userInfo != null) {
                et_username.setText(userInfo.get("username"));
                et_password.setText(userInfo.get("password"));
            }
            et_username =(EditText) findViewById(R.id.et_username);
            et_password =(EditText) findViewById(R.id.et_password);
            et_password2 =(EditText) findViewById(R.id.reg_password2);
            et_mail = (EditText) findViewById(R.id.reg_mail);
            checkbox = (CheckBox) findViewById(R.id.checkBox);
            btn_login =(Button) findViewById(R.id.button_login);
            btn_register =(Button) findViewById(R.id.button_register);
            btn_login.setOnClickListener(new MyButton());
            btn_register.setOnClickListener(new MyButton());
                        }
        public  class MyButton implements View.OnClickListener{
            @Override
            public void onClick(View view){
                String username =et_username.getText().toString().trim();
                String password =et_password.getText().toString().trim();
                switch (view.getId()) {
                    //当点击登录按钮时
                    case R.id.button_login:
                        if(TextUtils.isEmpty(username) || TextUtils.isEmpty(password)){
                            Toast.makeText(MainActivity.this,"密码或账号不能为空",Toast.LENGTH_SHORT).show();
                        } else {
                            if(checkbox.isChecked()){
                                //保存密码的操作
                            }
                            Toast.makeText(MainActivity.this,"登录成功",Toast.LENGTH_SHORT).show();
                                Intent intent = new Intent(MainActivity.this, LoginActivity.class);
                                startActivity(intent);
                            }
                        break;
                    //当点击注册按钮事件时
                    case R.id.button_register:
                        Intent intent = new Intent(MainActivity.this,RegisterActivity.class);
                        startActivity(intent);
                        break;
    
                }
            }
        }
                    }
    

    register_activity

        <TextView
            android:layout_marginTop="60dp"
            android:id="@+id/reg_number1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="账号:"
            android:textColor="#000"
            android:textSize="20dp" />
        <EditText
            android:layout_alignBottom="@+id/reg_number1"
            android:layout_toRightOf="@+id/reg_number1"
            android:id="@+id/reg_username"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp" />
        <TextView
            android:id="@+id/reg_number2"
            android:layout_marginTop="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/reg_number1"
            android:padding="10dp"
            android:text="密码:"
            android:textColor="#000"
            android:textSize="20dp" />
        <EditText
            android:layout_alignBottom="@id/reg_number2"
            android:layout_toRightOf="@+id/reg_number2"
            android:id="@+id/reg_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp" />
        <TextView
            android:id="@+id/reg_number3"
            android:layout_marginTop="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/reg_number2"
            android:padding="10dp"
            android:text="密码:"
            android:textColor="#000"
            android:textSize="20dp" />
        <EditText
            android:layout_alignBottom="@id/reg_number3"
            android:layout_toRightOf="@+id/reg_number3"
            android:id="@+id/reg_password2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp" />
        <TextView
            android:id="@+id/reg_number4"
            android:layout_marginTop="5dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/reg_number3"
            android:padding="10dp"
            android:text="邮箱:"
            android:textColor="#000"
            android:textSize="20dp" />
        <EditText
            android:layout_alignBottom="@id/reg_number4"
            android:layout_toRightOf="@+id/reg_number4"
            android:id="@+id/reg_mail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="10dp" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定注册"
            android:background="#74e674"
            android:id="@+id/reg_btn_sure"
            android:layout_marginTop="38dp"
            android:layout_below="@+id/reg_mail"
            android:layout_marginLeft="50dp" />
    
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="返回登录"
            android:background="#f27758"
            android:id="@+id/reg_btn_login"
            android:layout_alignBottom="@id/reg_btn_sure"
            android:layout_toRightOf="@id/reg_btn_sure"
            android:layout_marginLeft="60dp"
            />
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="账号注册"
            android:textSize="30dp"
            android:layout_marginTop="5dp"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true" />
    </RelativeLayout>
    

    registeractivity.java

    public class RegisterActivity extends AppCompatActivity {
        private EditText reg_username;
        private EditText reg_password;
        private EditText reg_password2;
        private EditText reg_mail;
        private Button reg_btn_sure;
        private Button reg_btn_login;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_register);
            reg_username = (EditText) findViewById(R.id.reg_username);
            reg_password = (EditText) findViewById(R.id.reg_password);
            reg_password2 = (EditText) findViewById(R.id.reg_password2);
            reg_mail = (EditText) findViewById(R.id.reg_mail);
            reg_btn_sure = (Button) findViewById(R.id.reg_btn_sure);
            reg_btn_login = (Button) findViewById(R.id.reg_btn_login);
            reg_btn_sure.setOnClickListener(new RegisterButton());
            reg_btn_login.setOnClickListener(new RegisterButton());
        }
    
        public class RegisterButton implements View.OnClickListener {
            @Override
            public void onClick(View v) {
                String username = reg_username.getText().toString().trim();
                String password = reg_password.getText().toString().trim();
                String password2 = reg_password2.getText().toString().trim();
                String mail = reg_mail.getText().toString().trim();
                switch (v.getId()) {
                    //注册开始,判断注册条件
                    case R.id.reg_btn_sure:
                        if (TextUtils.isEmpty(username) || TextUtils.isEmpty(password) || TextUtils.isEmpty(password2) || TextUtils.isEmpty(mail)) {
                            Toast.makeText(RegisterActivity.this, "各项均不能为空", Toast.LENGTH_SHORT).show();
                        } else {
                            if (TextUtils.equals(password, password2)) {
                                //执行注册操作
                                SaveInfo.SaveInformation(RegisterActivity.this,username,password,password2,mail);
                                Toast.makeText(RegisterActivity.this,"注册成功,请返回登录",Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(RegisterActivity.this, "两次输入的密码不一样", Toast.LENGTH_SHORT).show();
                            }
                        }
                            break;
                            case R.id.reg_btn_login:
                                Intent intent = new Intent(RegisterActivity.this, MainActivity.class);
                                startActivity(intent);
                                break;
    
                        }
                }
            }
        }
    

    登录成功界面创建一个布局文件就可以了,写上你想要的东西,我自己就是创建了一个布局,什么都没有,所以就在这里不写了
    在这里因为要做一个保存操作,所以创建了一个java工具类,其中定义了两个方法,一个保存登录名和密码,一个负责调用保存的登录名和密码
    saveinfo

    public class SaveInfo {
        public static boolean SaveInformation(Context context, String username, String password, String password2, String mail) {
            try {
                FileOutputStream fos = context.openFileOutput("data.txt", Context.MODE_APPEND);
                fos.write(("用户名:" + username + " 密码:" + password + "邮箱:" + mail).getBytes());
                fos.close();
                return true;
            } catch (Exception e) {
                e.printStackTrace();
                return false;
            }
        }
    
        public static Map<String, String> getSaveInformation(Context context) {
            try {
                FileInputStream fis = context.openFileInput("data.txt");
                BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                String str = br.readLine();
                String[] infos = str.split("用户名:"+"密码:"+"邮箱:");
                Map<String, String> map = new HashMap<String, String>();
                map.put("username", infos[0]);
                map.put("password", infos[1]);
                fis.close();
                return map;
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
        }
    }
    

    示例图片
    注册账号
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    【评论需要解决的问题或者文章中的不恰当的地方,接受改正】

    展开全文
  • (1)“HomeWork”窗口,是注册的信息填写窗口,负责接收注册必须的用户信息。 (2)“接收信息”窗口,接收用户的注册手机号和用于身份验证的验证码。 (3)“提示窗口”窗口,在确认用户身份并正确填写完整信息...

    Android的一个登录小实例

             刚刚接触Android,小小试了一把,做了一个登录界面。先来看看界面,接下来,分享一下其中的一些小实现。

    ——草草的原型图

    功能的简单介绍:

    (1)“HomeWork”窗口,是注册的信息填写窗口,负责接收注册必须的用户信息。

    (2)“接收信息”窗口,接收用户的注册手机号和用于身份验证的验证码。

    (3)“提示窗口”窗口,在确认用户身份并正确填写完整信息后,成功注册的信息提示窗口。

    ——草草的需求分析

    基本逻辑:

    (1)“HomeWork”窗口

    a. “手机号”文本框,仅接收数字输入(加入正则表达式,能实现手机号的位数验证,暂未加入);当焦点落在此时,自动展出数字小键盘;对错误的输入,支持整体删除,只需点右边的叉叉小图标。

    b. “获取验证码”按钮,随机生成6个1到9的数字(简单的验证码一般是4位或6位数字和字母随机组成);并将输入的手机号和验证码发送到“接收信息”窗口(一般情况是直接发送信息到输入的手机号对应的手机端,为了方便示例,选择用另一个窗口来展示),信息展示在“接收信息”窗口。

    c. 在“接收信息”窗口查看了验证码后,执行“返回”操作。将获得的验证码无误地输入,“验证码”输入框;

    d. 在“请设置密码”和“再次输入密码”两个文本框中输入一致的密码,都是以密文*显示;输入后,若想以明文的方式查看密码,长按后面的鱼眼小图标,可短时显视密码。

    e. 信息的任何不准确或不完整,点击“注册”按钮,本窗口中下方会弹出相应的提示信息(一会儿会自动消失)。

    f. 信息准确、完整,点击注册,便来到了“提示信息”窗口,表明注册成功。

    ——草草的详细设计

    后续是……编码实现……

    展开全文
  • 《【Android】实现登录注册、数据库操作(极复杂)》 本篇源码地址(进去找JustLoginRegister): (2019-12-05更新:我已经把Gradle更新到3.5最新版了,dependencies也已经都迁移到androidx了,特此说明) ...

    终于,尽管走下去,不必逗留着......

             我终于录视频了:《【Android】登录注册(简洁版)》

             —— 赞美无风险,吐槽别谨慎。


    我最近又写了一篇文,是这篇文章的升级版,借此文引流一下:

    《【Android】实现登录、注册、数据库操作(极复杂)》


    本篇源码地址(进去找JustLoginRegister):

    (2019-12-05更新:我已经把Gradle更新到3.5最新版了,dependencies也已经都迁移到androidx了,特此说明)

    https://github.com/littlecurl/AppProjects

    源代码里面有详细注释,切记要改一下gradle的版本号为本地gradle版本号,否则AndroidStduio会自行下载,浪费时间。


    忙着敲代码,忙着忙着就忘了吃中午饭了,两点半了才想起来,下不为例!

    这一篇我写的是用Android实现登录、注册、数据库操作的相关内容。

    先放最终效果图:

     

     

     

    先声明一下我的AndroidStudio的版本是:

              是时候写正文了!

              首先,当我们用AndroidStudio运行写好的Android程序的时候,也就是说,当按下那个绿色的小三角,启动小手机的时候,整个AndroidStudio会发生什么事情?这件事重要到,不搞清楚就学不会Android编程的地步。

                                                                     

      

            没错,就是你看到的这两个图标,折磨你到半死不活的两个玩意。

            当你熬到深夜两点,拖着疲惫的身躯敲完最后一行代码,颤颤巍巍的右手握着鼠标,眯瞪着双眼瞄准绿色的小三角,用尽平生最后一丝力气狠狠地单击一下鼠标左键 ,然后整个人葛优瘫在键盘上等待着它的运行,它到底发生了什么事情?这一切的背后,是人性的扭曲还是道德的沦丧?啊呸,重来。这一切的背后,是怎样的逻辑结构和运行原理?

            我尽我最大的努力来阐释一下我对此过程的拙见。

            首先看一下我这个Android程序的三级目录

     

            我已经标注好顺序了 0 → 1 → 2 → 3 → 4 总共5步

    步骤 0

    编译,具体Gradle是个啥,我也不清楚,我只知道Android是用Gradle进行编译的,编译的过程它会

    一、检查Gradle自身程序是否可用或版本是否最新

    二、启动各种我们桌面上看不见的程序,如果我没猜错的话,Gradle和Java、Python都差不多,大概就是一些java.exe、javac.exe之类的

    三、匹配各种依赖项,存在的检查完整性,不存在的去指定网站下载

    步骤 1

    解析注册XML,AndroidManifest.xml在Android中的作用和Windows中的注册表类似,每个Activity.java都需要去注册,而且里面有MAIN和LAUNCH设置,MAIN是:主要、入口的意思;LAUNCH是:启动、加载的意思。也就是说,AndroidManifest.xml是个导游,告诉AndroidStudio从哪开始运行,都有什么大致内容。

     步骤 2

    运行Activity,所谓Activity 翻译为 :活动、界面  一个Activity就是一个运行界面,AndroidStudio会启动在AndroidManifest.xml中被设置为 MAIN和LAUNCH 的Activity。首页启动之后,就是各个Activity之间的跳转通信了。

    步骤 3

    解析布局XML,在每个Activity创建(onCreate)时都会加载自己的xml布局文件,这些xml布局文件定义了对应Activity长什么样子。

    步骤 4

    解析完布局XML后,每个Activity的模样就确定了,然后就会返回Activity中执行类似响应点击、滑动之类的操作的代码

     

    源码下载地址:https://gitee.com/littlecurl/AppProjects/raw/master/JustLoginRegisterTest.zip

     

     

    大家加油!!!


     .


    看完如果觉得不错,留个赞再走。


    .

     

     

     

    展开全文
  • 本demo实现了安卓客户端请求服务器进行注册登录的功能
  • 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 studio通过 jdbc方式连接MySQL,然后如何验证登录,纠结了一天了跪求各位大神帮帮忙,一名初学者![图片说明](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/001/face/1.gif)![图片说明]...
  • 本程序只是一个简单的使用了TextView ,EditView, Button实现的登录小案例; 首先我们需要建立布局 Ancivity_main.xml文件 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=...
  • Android实现注册登录头像上传等功能常规开发(Android端,服务器端开发实例) 标签: 注册登录Android开发servlet 2017-04-18 20:34 454人阅读 评论(1) 收藏 举报  分类: Android(18) Java...
  • 前言大家好,我是 Vic,今天给大家带来AndroidStudio制作登录注册功能的实现,界面的布局介绍的概述,希望你们喜欢每日一句:Success is connecting with the world and making people feel. - 《名扬四海》每日...
  • 最近一个android小程序需要登录功能,我简单实现了一下。这是整个工程源码,注释嘛,还算详细吧
  • Android开发实例之miniTwitter登录界面的实现:http://www.jizhuomi.com/android/example/134.html 小KING教你做android项目(二)---实现登陆页面并跳转和简单的注册页面:...
  • 前言 实现效果如下 ... apk下载体验地址(2019年7月之后服务器到期就不能体验了):…明天我把它放服务器再...【Android】实现登录注册、数据库操作(极简洁) 现在这篇文章是原先那篇的升级版,实现了前后端...
  • 声明:AS版本为:3.4;JDK版本为:1.8 1、先看一下项目目录: 2、新建一个AS项目,创建如上图所示的目录结构,然后添加内容: (1)修改添加布局文件: ...android.support.constraint.ConstraintLayout xm...
  • android连接数据库实例

    2020-07-30 23:32:42
    android连接数据库的实例,包括webservice端的代码和数据库的格式和代码,希望对需要的人有帮助
  • android之socket编程实例

    2017-05-27 09:36:34
    注意点:注册访问的网络权限;android中UI线程不能有访问网络的操作,否则会报android.os.NetworkOnMainThreadException的异常 android:name="android.permission.INTERNET"/> 客户端 package ...
  • 实现了注册账号时将数据写入本地SQLite,登录账号时从本地SQLite匹配数据,并有记住密码功能,以及通过改密口令(类似于密保问题)修改密码的功能 思路很简单,登录账号的时候,先去数据库匹配账号,如果匹配到了... ...
  • 接下来几天我们会用android来写一个简单的记事本例子。记事本的基本功能包括:登录注册,最新记事,所有记事,添加记事,管理记事等。 几天我们先来介绍记事本的第一个模块--登录注册界面。 第一,我们新建一个工程...
  • Android开发过程之实例讲解前言 回过头来审视之前做过的Android项目,发觉自己重新开发时忽然间不知所措了,间隔了太长时间没有开发导致自己的Android技能知识急剧下降。温故而知新。 废话少说,进入正题~ 下面...
  • 我在结尾也说过实际开发中一般是Android端访问web后台,由后台程序接受参数去访问数据库,并返回访问结果给Android端,本文我们来实现HTTP方式的登录小案例。 在项目中实现注册登录有很多种方式,一般对于初学者来...
1 2 3 4 5 ... 20
收藏数 66,551
精华内容 26,620
关键字:

登录注册实例android