您的位置:首页 > 其它

StarStudio 第三周 简单用户注册登录界面Register Demo2

2017-11-05 20:37 411 查看
要求:基于上一个简单界面,登录页面添加 "记住密码" "自动登录"checkbox;点击注册跳转注册页面,注册页面点击"发送短信"按钮,跳转手机短信编辑页面

主要实现:Android 简单的UI 控件使用(TextView、EditText、Button、AutoCompleteTextView、Checkbox等)、使用intent实现跳转功能、利用AutoCompleteTextView实现邮箱后缀的自动补充

源码:

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"
tools:context="gwc.com.registerdemo2.MainActivity">

<TextView
android:id="@+id/Welcome"
android:layout_width="wrap_content"
android:layout_height="34dp"
android:text="Welcome To StarStudio!"
android:textColor="#1874CD"
android:textSize="27dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.115" />

<TextView
android:id="@+id/PageName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="SignIn Page"
android:textSize="22dp"
android:textColor="#000000"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.016" />

<TextView
android:id="@+id/Author"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="--Designed by gwc"
android:textColor="#551A8B"
android:textSize="22dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.957"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.197" />

<TextView
android:id="@+id/EmailAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="EmailAddress:"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.059"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.312" />

<AutoCompleteTextView
android:id="@+id/emailaddress"
android:layout_width="212dp"
android:layout_height="40dp"
android:completionThreshold="1"
android:textSize="18dp"
android:hint="Type your emailaddress"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.86"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.322"/>

<TextView
android:id="@+id/Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password:"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.13"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVert
d803
ical_bias="0.45" />

<EditText
android:id="@+id/password"
android:layout_width="212dp"
android:layout_height="40dp"
android:ems="10"
android:inputType="textPassword"
android:textSize="18dp"
android:hint="Type your password"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.86"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.447" />

<Button
android:id="@+id/SignIn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sign in"
android:textAllCaps="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.678" />

<TextView
android:id="@+id/RegisterGuide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="If you don't have an anccount, press Register"
android:textColor="#000000"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.517"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.788" />

<Button
android:id="@+id/Register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Register"
android:textAllCaps="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.92" />

<CheckBox
android:id="@+id/RememberThePassword"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="记住密码"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.212"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.567" />

<CheckBox
android:id="@+id/AutomaticallySignin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自动登录"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.797"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.567" />

</android.support.constraint.ConstraintLayout>


MainActivity.java的代码如下:
package gwc.com.registerdemo2;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

EditText Password;
AutoCompleteTextView EmailAddress;
String[] stringArray = {"@qq.com", "@163.com", "@126.com", "@gmail.com", "@sina.com", "@hotmail.com",
"@yahoo.cn", "@sohu.com", "@foxmail.com", "@139.com", "@yeah.net", "@vip.qq.com", "@vip.sina.com"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Password = (EditText) findViewById(R.id.password); //通过findViewById找到输入框控件对应的id并给它起一个名字
EmailAddress = (AutoCompleteTextView) findViewById(R.id.emailaddress);//通过findViewById找到输入框控件对应的id并给它起一个名字
Button SignIn = (Button) findViewById(R.id.SignIn);//通过findViewById找到按钮控件对应的id并给它起一个名字
Button Register = (Button) findViewById(R.id.Register);//通过findViewById找到按钮控件对应的id并给它起一个名字
SignIn.setOnClickListener(new View.OnClickListener()//监听有没有点击按钮控件 如果点击了就会执行onClick函数
{
public void onClick(View view) {
check(EmailAddress.getText().toString().trim(), Password.getText().toString().trim());
}
});
Register.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent register = new Intent(MainActivity.this, SecondActivity.class);
startActivity(register);
}
});
final MyAdatper adapter = new MyAdatper(this);
EmailAddress.setAdapter(adapter);
EmailAddress.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
adapter.mList.clear();
if (input.length() > 0) {
for (int i = 0; i < stringArray.length; ++i) {
adapter.mList.add(input + stringArray[i]);
}
}
adapter.notifyDataSetChanged();
EmailAddress.showDropDown();

}
});

// default=2
EmailAddress.setThreshold(1);
}

public void check(String emailaddress, String password) {
if (emailaddress.equals("") || password.equals(""))//判断输入的帐户密码是否为空
{
Toast.makeText(MainActivity.this, "Error!Empty EmailAddress or Password!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Success!Welcome", Toast.LENGTH_SHORT).show();
}
}

class MyAdatper extends BaseAdapter implements Filterable {

List<String> mList;
private Context mContext;
private MyFilter mFilter;

public MyAdatper(Context context) {
mContext = context;
mList = new ArrayList<String>();
}

@Override
public int getCount() {
return mList == null ? 0 : mList.size();
}

@Override
public Object getItem(int position) {
return mList == null ? null : mList.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
TextView tv = new TextView(mContext);
tv.setTextColor(Color.BLACK);
tv.setTextSize(20);
convertView = tv;
}
TextView txt = (TextView) convertView;
txt.setText(mList.get(position));
return txt;
}

@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new MyFilter();
}
return mFilter;
}

private class MyFilter extends Filter {

@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if (mList == null) {
mList = new ArrayList<String>();
}
results.values = mList;
results.count = mList.size();
return results;
}

@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}

}

}
}

新建的second_layout.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"
tools:context="gwc.com.registerdemo2.SecondActivity"
android:orientation="vertical">

<TextView
android:id="@+id/Introduce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="To register,please fill in the blanks below"
android:textColor="#000000"
android:textSize="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.057" />

<TextView
android:id="@+id/EmailAddress"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="EmailAddress:"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.059"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.15" />

<AutoCompleteTextView
android:id="@+id/emailaddress"
android:layout_width="212dp"
android:layout_height="40dp"
android:hint="Type your emailaddress"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.906"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.154" />

<TextView
android:id="@+id/Password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password:"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.153"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.269" />

<EditText
android:id="@+id/password"
android:layout_width="212dp"
android:layout_height="40dp"
android:ems="10"
android:hint="Type your password"
android:inputType="textPassword"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.906"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.278" />

<TextView
android:id="@+id/Confirm"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Confirm:"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.199"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.399" />

<EditText
android:id="@+id/confirm"
android:layout_width="212dp"
android:layout_height="40dp"
android:ems="10"
android:hint="Type the same password"
android:inputType="textPassword"
android:textSize="18dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.906"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.411" />

<Button
android:id="@+id/Check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Check"
android:textAllCaps="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.55" />

<TextView
android:id="@+id/Introduce2"
android:layout_width="347dp"
android:layout_height="wrap_content"
android:text="Finally,please use your phone to send a text to confirm"
android:textColor="#000000"
android:textSize="20dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintHorizontal_bias="0.756"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.702" />

<Button
android:id="@+id/Send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send"
android:textAllCaps="false"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.861" />

</android.support.constraint.ConstraintLayout>


新建的SecondActivity.java中的代码如下:
package gwc.com.registerdemo2;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AutoCompleteTextView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Filter;
import android.widget.Filterable;
import android.widget.TextView;
import android.widget.Toast;

public class SecondActivity extends AppCompatActivity {

AutoCompleteTextView EmailAddress;
EditText Password;
EditText Confirm;
String[] stringArray = {"@qq.com", "@163.com", "@126.com", "@gmail.com", "@sina.com", "@hotmail.com",
"@yahoo.cn", "@sohu.com", "@foxmail.com", "@139.com", "@yeah.net", "@vip.qq.com", "@vip.sina.com"};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_layout);
Password = (EditText) findViewById(R.id.password); //通过findViewById找到输入框控件对应的id并给它起一个名字
EmailAddress = (AutoCompleteTextView) findViewById(R.id.emailaddress);//通过findViewById找到输入框控件对应的id并给它起一个名字
Confirm = (EditText) findViewById(R.id.confirm);//通过findViewById找到输入框控件对应的id并给它起一个名字
Button Check = (Button) findViewById(R.id.Check);
Button Send = (Button) findViewById(R.id.Send);
Check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
check(EmailAddress.getText().toString().trim(), Password.getText().toString().trim(), Confirm.getText().toString().trim());
}
});
Send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (Flag.flag == true)
sendSMS();
else {
Toast.makeText(SecondActivity.this, "Error!Please finish check button and make sure it is successful!", Toast.LENGTH_SHORT).show();
}
}
});
final MyAdatper adapter = new MyAdatper(this);
EmailAddress.setAdapter(adapter);
EmailAddress.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}

@Override
public void afterTextChanged(Editable s) {
String input = s.toString();
adapter.mList.clear();
if (input.length() > 0) {
for (int i = 0; i < stringArray.length; ++i) {
adapter.mList.add(input + stringArray[i]);
}
}
adapter.notifyDataSetChanged();
EmailAddress.showDropDown();

}
});

// default=2
EmailAddress.setThreshold(1);
}

public void check(String emailaddress, String password, String confirm) {
if (emailaddress.equals("") || password.equals(""))//判断输入的帐户密码是否为空
{
Toast.makeText(SecondActivity.this, "Error!Empty EmailAddress or Password!", Toast.LENGTH_SHORT).show();
} else if (!(password.equals(confirm))) {
Toast.makeText(SecondActivity.this, "Error!Please type the same password!", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(SecondActivity.this, "Success!You can use the account!", Toast.LENGTH_SHORT).show();
Flag.flag = true;
}
}

class MyAdatper extends BaseAdapter implements Filterable {

List<String> mList;
private Context mContext;
private MyFilter mFilter;

public MyAdatper(Context context) {
mContext = context;
mList = new ArrayList<String>();
}

@Override
public int getCount() {
return mList == null ? 0 : mList.size();
}

@Override
public Object getItem(int position) {
return mList == null ? null : mList.get(position);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
TextView tv = new TextView(mContext);
tv.setTextColor(Color.BLACK);
tv.setTextSize(20);
convertView = tv;
}
TextView txt = (TextView) convertView;
txt.setText(mList.get(position));
return txt;
}

@Override
public Filter getFilter() {
if (mFilter == null) {
mFilter = new MyFilter();
}
return mFilter;
}

private class MyFilter extends Filter {

@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults results = new FilterResults();
if (mList == null) {
mList = new ArrayList<String>();
}
results.values = mList;
results.count = mList.size();
return results;
}

@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results.count > 0) {
notifyDataSetChanged();
} else {
notifyDataSetInvalidated();
}
}

}

}

private void sendSMS() {
Uri smsToUri = Uri.parse("smsto:13590629980");
Intent intent = new Intent(Intent.ACTION_SENDTO, smsToUri);
intent.putExtra("sms_body", "Register");
startActivity(intent);
}
}

class Flag {
static boolean flag = false;
}

参考文章:

Android学习系列之控件 AutoCompleteTextView邮箱后缀自动补全 - CSDN博客  http://blog.csdn.net/ye_scofield/article/details/39252833

自动填充邮箱后缀 - CSDN博客  http://blog.csdn.net/leiming32/article/details/7818779

使用AutoCompleteTextView实现邮箱地址补全 - 风荷举  https://my.oschina.net/fengheju/blog/176656

Android自定义AutoCompleteTextView实现自动补全Email - CSDN博客  http://blog.csdn.net/jwzhangjie/article/details/15771953

Android跳转到系统联系人及拨号或短信界面_Android_脚本之家  http://www.jb51.net/article/99371.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: