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
主要实现: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
相关文章推荐
- CSDN第一天——简单的登录注册及针对不同用户显示不同界面
- JSP作业2 - 利用html实现简单的用户登录注册界面
- 简单Demo的用户登录JSP界面IE、Firefox(chrome) Enter 键提交表单
- 【Android】用户登录注册界面开发及用户信息管理案例代码详解
- 简单设计实现基于Forms认证的注册登录等用户基础服务
- 这是一个使用mvp模式实现模拟用户登录的简单Demo。
- 一个简单的用户登录界面和SQL连接了
- 用户注册和用户登录简单代码
- 【Android】用户登录注册界面开发及用户信息管理案例代码详解
- 简单的用户登录注册
- 用MVC模式实现简单用户登录注册功能
- C# 实现多态的的简单易学的例子-实现不同的用户登录到不同的界面(用抽象类,抽象方法实现的多态)加上泛型来实现
- ODBC + WIN32 API 访问MYSQL 数据库实现简单QQ用户注册和登录 的代码分析
- struts2+spring实现简单用户登录注册
- Python 实现简单的用户注册和登录
- 【Android】用户登录注册界面开发及用户信息管理案例代码详解
- 新手教你学Spring MVC4.0+MyBatis+MySQL5.0实现简单用户注册登录程序(三)
- 传智播客JavaWeb day07、day08-自定义标签(传统标签和简单标签)、mvc设计模式、用户注册登录注销
- Java Web 开发利用Struts2+Spring+mybatis写一个用户登录界面以及简单的数据交互
- Demo5:简单登录界面