文章目录
- 页面截图
- 一点点的思路介绍
- 主要代码:
先说明,这只是一个期末的作业,做的急,功能简单,具体的功能,我直接上截图好了
页面截图
++主要的页面是这样++
有几个需要提醒的:
1. 代码中因为提交的时候太赶,有一个页面的设计被搞错了,
不过是一个版本信息的静态页面,gitee上代码也是错的,
因为已经给老师演示并解释了,我嫌麻烦就没有把代码再改回来,
也就是将错就错了
2. 有一个bug,也是后来才发现的,就是新建便签没有字符也会
新建一个,这里需要在代码加一个判断,不过我太懒了,想着都
打完分就不管了,这里给有需要的人提个醒
一点点的思路介绍
在写这个app的时候有很多细节并没有做好,比如忘了加注释,后面的人看代码可能有些地方并不那么容易,sorry。。。
主要是几个简单页面,分别是
- 登录页
- 注册页
- 主页
- 编辑页
- 版本信息页
主要的功能分别是(只是做了简单的增删改查处理):
- 添加
- 长按删除
- 修改保存
- 分享
我是先设计页面再写功能的人,先把自己想的页面实现出来,因为很多逻辑代码会用到layout里面的代码id,然后再去编写实现功能的逻辑,这里采用的是安装自身的轻量级数据库SQLite。
主要代码:
//登录
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private DBOpenHelper mDBOpenHelper;
private Button button2;
private RelativeLayout mRlLoginactivityTop;
private EditText mEtLoginactivityUsername;
private EditText mEtLoginactivityPassword;
private LinearLayout mLlLoginactivityTwo;
private Button mBtLoginactivityLogin;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
initView();
mDBOpenHelper = new DBOpenHelper(this);
}
private void initView() {
// 初始化控件
mBtLoginactivityLogin = findViewById(R.id.bt_loginactivity_login);
button2 = findViewById(R.id.button2);
mRlLoginactivityTop = findViewById(R.id.rl_loginactivity_top);
mEtLoginactivityUsername = findViewById(R.id.et_loginactivity_username);
mEtLoginactivityPassword = findViewById(R.id.et_loginactivity_password);
mLlLoginactivityTwo = findViewById(R.id.ll_loginactivity_two);
// 设置点击事件监听器
mBtLoginactivityLogin.setOnClickListener(this);
button2.setOnClickListener(this);
}
public void onClick(View view) {
switch (view.getId()) {
// 跳转到注册界面
case R.id.button2:
startActivity(new Intent(this, SignUpActivity.class));
finish();
break;
case R.id.bt_loginactivity_login://登录
String name = mEtLoginactivityUsername.getText().toString().trim();
String password = mEtLoginactivityPassword.getText().toString().trim();
if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(password)) {
ArrayList<User> data = mDBOpenHelper.getAllData();
boolean match = false;
for (int i = 0; i < data.size(); i++) {
User user = data.get(i);
if (name.equals(user.getName()) && password.equals(user.getPassword())) {
match = true;
break;
} else {
match = false;
}
}
if (match) {
Toast.makeText(this, "登录成功", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(this, main_app.class);
startActivity(intent);
finish();//销毁此Activity
} else {
Toast.makeText(this, "用户名或密码不正确,请重新输入", Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(this, "请输入你的用户名或密码", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
//注册
public class SignUpActivity extends AppCompatActivity implements View.OnClickListener {
private String realCode;
private DBOpenHelper mDBOpenHelper;
private Button mBtRegisteractivityRegister;
private LinearLayout mLlRegisteractivityBody;
private EditText mEtRegisteractivityUsername;
private EditText mEtRegisteractivityPassword1;
private EditText mEtRegisteractivityPassword2;
private EditText mEtRegisteractivityPhonecodes;
private ImageView mIvRegisteractivityShowcode;
private Button iv_registeractivity_back;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
initView();
mDBOpenHelper = new DBOpenHelper(this);
//将验证码用图片的形式显示出来
mIvRegisteractivityShowcode.setImageBitmap(Code.getInstance().createBitmap());
realCode = Code.getInstance().getCode().toLowerCase();
}
private void initView(){
mBtRegisteractivityRegister = findViewById(R.id.bt_registeractivity_register);//注册按钮
mLlRegisteractivityBody = findViewById(R.id.ll_registeractivity_body);
mEtRegisteractivityUsername = findViewById(R.id.et_registeractivity_username);
mEtRegisteractivityPassword1 = findViewById(R.id.et_registeractivity_password1);
mEtRegisteractivityPassword2 = findViewById(R.id.et_registeractivity_password2);
mEtRegisteractivityPhonecodes = findViewById(R.id.et_registeractivity_phoneCodes);
mIvRegisteractivityShowcode = findViewById(R.id.iv_registeractivity_showCode);
iv_registeractivity_back = findViewById(R.id.iv_registeractivity_back);
iv_registeractivity_back.setOnClickListener(this);
mIvRegisteractivityShowcode.setOnClickListener(this);
mBtRegisteractivityRegister.setOnClickListener(this);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_registeractivity_back: //返回登录页面
Intent intent1 = new Intent(this, MainActivity.class);
startActivity(intent1);
finish();
break;
case R.id.iv_registeractivity_showCode: //改变随机验证码的生成
mIvRegisteractivityShowcode.setImageBitmap(Code.getInstance().createBitmap());
realCode = Code.getInstance().getCode().toLowerCase();
break;
case R.id.bt_registeractivity_register: //注册按钮
//获取用户输入的用户名、密码、验证码
String username = mEtRegisteractivityUsername.getText().toString().trim();
String password = mEtRegisteractivityPassword2.getText().toString().trim();
String phoneCode = mEtRegisteractivityPhonecodes.getText().toString().toLowerCase();
//注册验证
if (!TextUtils.isEmpty(username) && !TextUtils.isEmpty(password) && !TextUtils.isEmpty(phoneCode) ) {
if (phoneCode.equals(realCode)) {
//将用户名和密码加入到数据库中
mDBOpenHelper.add(username, password);
Intent intent2 = new Intent(this, MainActivity.class);
startActivity(intent2);
finish();
Toast.makeText(this, "验证通过,注册成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "验证码错误,注册失败", Toast.LENGTH_SHORT).show();
}
}else {
Toast.makeText(this, "未完善信息,注册失败", Toast.LENGTH_SHORT).show();
}
break;
}
}
}
//主界面
public class main_app extends AppCompatActivity {
ListView listView;
FloatingActionButton floatingActionButton;
LayoutInflater layoutInflater;
ArrayList<Data> arrayList;
MyDatabase myDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取Intent对象
Intent intent = getIntent();
listView = (ListView) findViewById(R.id.layout_listview);
floatingActionButton = (FloatingActionButton) findViewById(R.id.floatingActionButton);
layoutInflater = getLayoutInflater();
myDatabase = new MyDatabase(this);
arrayList = myDatabase.getarray();
MyAdapter adapter = new MyAdapter(layoutInflater, arrayList);
listView.setAdapter(adapter);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { //点击一下跳转到编辑页面(编辑页面与新建页面共用一个布局)
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent3 = new Intent(getApplicationContext(), EditActivity.class);
intent3.putExtra("ids", arrayList.get(position).getIds());
startActivity(intent3);
main_app.this.finish();
}
});
listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { //长按删除
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
new AlertDialog.Builder(main_app.this)
.setMessage("确定要删除此便签?")
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
myDatabase.toDelete(arrayList.get(position).getIds());
arrayList = myDatabase.getarray();
MyAdapter myAdapter = new MyAdapter(layoutInflater, arrayList);
listView.setAdapter(myAdapter);
Toast.makeText(getBaseContext(), "已删除", Toast.LENGTH_SHORT).show();
}
})
.create()
.show();
return true;
}
});
floatingActionButton.setOnClickListener(new View.OnClickListener() { //点击悬浮按钮时,跳转到新建页面
@Override
public void onClick(View v) {
Intent intent4 = new Intent(getApplicationContext(), EditActivity.class);
startActivity(intent4);
main_app.this.finish();
}
});
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.about:
Intent intent2 = new Intent(getApplicationContext(), AboutActivity.class);
startActivity(intent2);
break;
default:
break;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main_meun, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
arrayList = myDatabase.getarray();
MyAdapter adapter = new MyAdapter(layoutInflater, arrayList);
listView.setAdapter(adapter);
}
}
//编辑页
public class EditActivity extends AppCompatActivity {
private TextView et2;
private TextView et3;
private MyDatabase myDatabase;
private Data data;
int ids;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.edit);
//标题
et2=(TextView) findViewById(R.id.editText2);
//内容
et3=(TextView) findViewById(R.id.editText3);
//数据库
myDatabase = new MyDatabase(this);
Intent intent = this.getIntent();
ids = intent.getIntExtra("ids",0);
if (ids != 0){
//数据库
data = myDatabase.getTiandCon(ids);
//调用时间
et2.setText(data.getTitle());
et3.setText(data.getContent());
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.right:
isSave();
break;
case R.id.share:
Intent intent=new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_TEXT,
"标题:"+et2.getText().toString()+" " +
"内容:"+et3.getText().toString());
startActivity(intent);
break;
default:
break;
}
return true;
}
@Override
public void onBackPressed() {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date = new Date(System.currentTimeMillis());
String time = simpleDateFormat.format(date);
String title = et2.getText().toString();
String content = et3.getText().toString();
//更新便签
if(ids!=0){
data=new Data(title,ids, content, time);
myDatabase.toUpdate(data);
Intent intent=new Intent(EditActivity.this,main_app.class);
startActivity(intent);
EditActivity.this.finish();
}
//新建便签
else{
data=new Data(title,content,time);
myDatabase.toInsert(data);
Intent intent=new Intent(EditActivity.this,main_app.class);
startActivity(intent);
EditActivity.this.finish();
}
}
private void isSave(){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm");
Date date = new Date(System.currentTimeMillis());
String time = simpleDateFormat.format(date);
Log.d("new_note", "isSave: "+time);
String title = et2.getText().toString();
String content = et3.getText().toString();
if(ids!=0){
data=new Data(title,ids, content, time);
myDatabase.toUpdate(data);
Intent intent=new Intent(EditActivity.this,main_app.class);
startActivity(intent);
EditActivity.this.finish();
}
//新建日记
else{
data=new Data(title,content,time);
myDatabase.toInsert(data);
Intent intent=new Intent(EditActivity.this,main_app.class);
startActivity(intent);
EditActivity.this.finish();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.edit_meun,menu);
return true;
}
}
有关.layout等代码,以上传gitee,有需要可自取
https://gitee.com/zhang23333/final_assignment
如果后面有小伙伴发现什么别的bug,欢迎告知!!!!