方案设计
如图
在用户点击进入APP后,自动进入启动页面。启动页持续3s后进入登陆界面。
登陆界面包含用户名、密码,以及登陆和注册功能。
在用户输入用户名密码后,判断其是否已经存在;若存在,则弹出Toast显示用户具体信息;若不存在,则弹出弹窗提示信息有误并返回登陆页面。
回到登陆界面,判断是否用户选择注册;若选择注册,则跳转到注册页面,用户填好信息后返回登陆界面;
在用户输入用户名密码后,判断其是否已经注册;若已注册,则弹出Toast显示用户具体信息。
实现思路
如图
先创建三个页面activity并完成其中不同组件的设计;
再将不同页面之间的跳转、信息传递写入组件中;
最后,对照总体设计检验实验成果。
实验结果
启动页
难点在于将默认页面入口改为此页面
在AndriodManifest.xml中修改代码
SplashActivity.java代码
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent mainIntent = new Intent(SplashActivity.this, LoignActivity.class);
startActivity(mainIntent);
finish();
}
}, 3000);
}
}
登陆页
在LoginActivity.java中写入按键的事件监听器,每按一次处理一次用户所输入的用户名和密码串;错误则按if输出信息有误,正确则按照else中输出toast输出正确信息
另:与注册页相关联,用于更新用户名与密码
LoignActivity.java
public class LoignActivity extends AppCompatActivity {
private EditText nameET,passwordET;
private Button loginBt,registerBt;
private String userName = "Admin";
private String pw_msg = "123456";
private String input_username, input_pwd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logint);
nameET = (EditText) findViewById(R.id.username);
passwordET = (EditText)findViewById(R.id.password);
loginBt = (Button) findViewById(R.id.loginBt);
registerBt = (Button) findViewById(R.id.registerBt);
loginBt.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
input_username = nameET.getText().toString();
input_pwd = passwordET.getText().toString();
if(input_username.length() == 0 || input_pwd.length() == 0 || !input_username.equals(userName) || !input_pwd.equals(pw_msg)) {
new AlertDialog.Builder(LoignActivity.this).setTitle("登录信息有误") .setMessage("请输入正确的用户名和密码") .setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialogInterface, int i) {
//finish();
} }).show();
nameET.setText("");
passwordET.setText("");
nameET.requestFocus();}
else { String msg = "欢迎进入DIY!! \n您输入的用户名是:"+ input_username + "\n密码是:"+ input_pwd;
Toast.makeText(LoignActivity.this,msg,Toast.LENGTH_LONG).show(); } } });
registerBt.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
Intent intent = new Intent(LoignActivity.this,RegisterActivity.class);
startActivityForResult(intent,1); } });
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) { //在一个活动中有可能调用startActivityForResult()方法去启动很多不同的活动
if (resultCode == RESULT_OK) {
userName = data.getStringExtra("regName");
pw_msg = data.getStringExtra("regPwd");
}
}
}
}
注册页
在RegisterActivity.java中注册一个新的监听器,点击后后将用户名和密码通过 Bundle,利用 setResult()方法返回给 LogiActivity 活动
RegisterActivity.java
public class RegisterActivity extends AppCompatActivity {
private EditText nameET,pwdET;
private Button regBt;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
nameET = (EditText)findViewById(R.id.reg_name);
pwdET = (EditText)findViewById(R.id.reg_pwd);
regBt =(Button)findViewById(R.id.reg_bt);
regBt.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
Intent intent3=new Intent(); //该“意图”仅仅只传递数据
intent3.putExtra("regName",nameET.getText().toString());
intent3.putExtra("regPwd",pwdET.getText().toString());
setResult(RESULT_OK, intent3);
finish();
}
});
}
}
AndroidManifest.xml
<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=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".LoignActivity" />
<activity android:name=".RegisterActivity" />
</application>
经回到登陆页面,检测新注册的用户名密码,显示正确,实验完成