Android 应用开发课程设计
学
期
课程名称
任课教师
班
学
姓
级
号
名
Android 应用开发课程设计
软件工程
****************
***
一) 课题需求分析
二) 概要设计
三) 具体实现
四) 运行截图
五) 心得体会
一)课题需求分析
1. 简单的引导页
2. 创建 App 自身本地数据库
3. 本地注册,向本地数据库插入行
4. 本地登录,验证用户账号密码
5. 注册登录操作给出提示
6. App 引导页实现沉浸模式
7. 简单的应用 style 样式
8. 根据艺术美感配色,增进亲和感
9. 记住最后一次登录的账号密码
二)概要设计
1.实现 splash 进入登录界面
2.登录按钮进入 Mainacivity
3.在 splash 后加入或打开 SQLite 数据库
4.添加注册功能,操作数据库
5.实现登录界面验证功能
三)具体实现
1. 创建项目
2. 首先实现 splash
(1)创建 splash 包,创建 SplashActivity 活动
(2)设置首选启动项
(3)设置 spalsh 图片
(4)新建 value/style 的 Splash 的线程实现沉浸
代码:
SplasActivity.java
package com.example.administrator.faster.splash;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.example.administrator.faster.R;
import com.example.administrator.faster.matching.LoginActivity;
public class SplashActivity extends AppCompatActivity {
private static final long Delay_time = 1800L;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//判断是否第一次进
入。注:除非清空应用数据或者卸载软件重新安装才能再次进入第一次
SharedPreferences shared=getSharedPreferences("is", MODE_PRIVATE);
boolean isfer=shared.getBoolean("isfer", true);
SharedPreferences.Editor editor=shared.edit();
if(isfer){
//第一次进入跳转
startActivity(new Intent(this, LoginActivity.class));
finish();
editor.putBoolean("isfer", false);
editor.commit();
//
//
//
Handler
通过
就可以延
}else{
setContentView(R.layout.activity_splash);
是Android系统为工作线程提供的一种可以与外界交互的接口
Handler提供的postDelaywd()方法
时进行Runnable()的操作
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
startActivity(new
Intent(SplashActivity.this,LoginActivity.class));
finish();
}
},Delay_time);
}
}
}
//添加了判断是否首次安装启动的判断,viewpager 的实现有待后续加入(原因:测试
viewpager 加入 10 次以上,加入了但是无法正常显示设置图片,所以暂时跳过)
activity_splash.Xml
Style.xml
设置首选启动项
AndroidManifest.xml
3. 实现登录注册
(1)创建 matching 包创建 LoginActivity 活动
(2)创建 OpenHelper 类,用于创建表
(3)创建 SqliteDB 类,用于创建数据库和添加行查询行方法
(4)创建类 User 类,应用泛型对查询到的数据进行下一步
(5)创建 GetAcivity 活动,注册用
代码:
LoginActivity.java
package com.example.administrator.faster.matching;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.example.administrator.faster.MainActivity;
import com.example.administrator.faster.R;
import java.util.ArrayList;
import java.util.List;
public class LoginActivity extends AppCompatActivity {
private Button reg1;
private Button login1;
private EditText count1;
private EditText pwd1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_matching);
reg1 = findViewById(R.id.log);
login1 = findViewById(R.id.login);
count1 = findViewById(R.id.editText1);
pwd1 = findViewById(R.id.editText2);
reg1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(LoginActivity.this, GetActivity.class));
}
});
login1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String name = count1.getText().toString().trim();
String pass = pwd1.getText().toString().trim();
if (name.length() == 0)
Toast.makeText(LoginActivity.this, "请输入用户名",
Toast.LENGTH_SHORT).show();
else {
if (pass.length() == 0)
Toast.makeText(LoginActivity.this, "请输入密码",
Toast.LENGTH_SHORT).show();
else {
SqliteDB.getInstance(getApplicationContext()).Quer(pass, name);
int result =
if (result == 1) {
Toast.makeText(LoginActivity.this, "登陆成功",
Toast.LENGTH_SHORT).show();
MainActivity.class));
startActivity(new Intent(LoginActivity.this,
finish();
} else if (result == 0) {
Toast.makeText(LoginActivity.this, "用户名不存在!",
Toast.LENGTH_SHORT).show();
} else if (result == -1) {
Toast.makeText(LoginActivity.this, "密码错误!",
Toast.LENGTH_SHORT).show();
}
}
}
}
});
}
}
Activity_matching.xml