本项目主要做的练习界面的布局,排版以及界面的跳转功能,由于是才学Android一个月所做的练习项目,故没有对于网络的链接还不是很会,故界面中的数据全是设置为固定的,在后期将会对界面美化及功能进行相应的完善。若要看代码可以到http://download.csdn.net/detail/q394895302/9104343去下载(编码方式UTF-8),若有错可以指出下,共同学习。
该项目由于没有对资源进行有效的查找,故直接用的是美团的资源文件进行包装和界面的显示,其效果如下图所示:
此项目主要母的是:熟悉Android 常用UI控件及布局的使用、界面的排版;自定义ProgressBar实现人物的动态加载;此练习中使用的TabActivity切换界面,由于TabActivity已经被废弃掉,故后期用RadioButton和RadioGroup组合来代替TabActivity实现界面的切换功能;还用到了引导界面ViewPager,Activity之间的跳转,自定义适配器等功能的使用,弹窗控件PopupWindow的使用,列表ListView的使用。
在注册和登录的时候使用到了数据库SQLite的相关知识对注册和登录信息与数据库中的数据进行比较,注册时若用户名已存在将注册不了;登录时输入的信息不正确将不能进行登录。以及返回键的重新定义,使其按2次返回键退出程序。
经过此项目的练习,使得对Activity的布局,UI控件的使用,界面的跳转,数据库的相关操作。其部分代码如下:
下面为注册部分代码:
<span style="font-size:18px;">DataHelper dbHelper = DataHelper.getInstanceDatabaseHelper(this); db = dbHelper.getReadableDatabase(); // 注册确定按钮事件处理 mConfirmbtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (!mUserName.getText().toString().equals("") && !mPassword1.getText().toString().equals("")) { addAccount(); } else { Toast.makeText(ReisterActivity.this, "注册信息不能为空!", Toast.LENGTH_SHORT).show(); } } }); // 检测用户名是否存在 mTestNameBtn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Cursor cursor = db.rawQuery( "select * from student where username = ?", new String[] { mUserName.getText().toString()}); boolean flag = false; if (cursor.moveToFirst()) { flag = true; Toast.makeText(ReisterActivity.this, "您输入的用户名已存在,请重新输入!", Toast.LENGTH_SHORT).show(); mUserName.setText(""); return; } if (!flag) { Toast.makeText(ReisterActivity.this, "此用户名可以使用!", Toast.LENGTH_SHORT).show(); } } }); // 返回登录窗口 mLinearLayout.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ReisterActivity.this, LoginActivity.class); startActivity(intent); finish(); } }); } // 将账号信息添加到数据库 public void addAccount() { DataHelper dbHelper = DataHelper.getInstanceDatabaseHelper(this); db = dbHelper.getReadableDatabase(); ContentValues contentValues = new ContentValues(); if (mPassword1.getText().toString() .equals(mPassword2.getText().toString())) { contentValues.put("username", mUserName.getText().toString()); contentValues.put("password", mPassword1.getText().toString()); db.insert("student", null, contentValues); Toast.makeText(ReisterActivity.this, "注册成功!", Toast.LENGTH_SHORT) .show(); Intent intent = new Intent(); intent.setClass(ReisterActivity.this, LoginActivity.class); startActivity(intent); finish(); } else { Toast.makeText(ReisterActivity.this, "两次密码不一致,请重新输入!", Toast.LENGTH_SHORT).show(); mPassword1.setText(""); mPassword2.setText(""); } }</span>
<span style="font-size:18px;"> // 登录按钮点击事件处理 @Override public void onClick(View v) { switch (v.getId()) { case R.id.login_btn: String userName = mUserNameEdit.getText().toString(); String passWord = mPassWordEdit.getText().toString(); if (userName.equals("") || passWord.equals("")) { Toast.makeText(this, "用户名、密码不为空!", Toast.LENGTH_SHORT).show(); return; } DataHelper dbHelper = DataHelper.getInstanceDatabaseHelper(this); db = dbHelper.getReadableDatabase();// 如果数据库存在就打开此数据库,否则就创建数据库 boolean sucessFlag = false; Cursor cursor = db.query("student", null, null, null, null, null, null, null); while (cursor.moveToNext()) { String name = cursor.getString(cursor .getColumnIndex("username")); String word = cursor.getString(cursor .getColumnIndex("password")); if (userName.equals(name) && passWord.equals(word)) { sucessFlag = true; if (mAutomaticLogin.isChecked()) { mPreference .edit() .putBoolean("isrmb", true) .putBoolean("islgs", true) .putString("username", mUserNameEdit.getText().toString()) .putString("password", mPassWordEdit.getText().toString()) .commit(); } else { if (mRememberPassWord.isChecked()) { mPreference .edit() .putBoolean("isrmb", true) .putBoolean("islgs", false) .putString("username", mUserNameEdit.getText().toString()) .putString("password", mPassWordEdit.getText().toString()) .commit(); } else { mPreference .edit() .putBoolean("isrmb", false) .putBoolean("islgs", false) .putString("username", mUserNameEdit.getText().toString()) .putString("password", mPassWordEdit.getText().toString()) .commit(); } } Intent intent = new Intent(LoginActivity.this, LoginLoadingActivity.class); startActivity(intent); finish(); } } if (!sucessFlag) { Toast.makeText(this, "用户名或密码错误,请重新登录!", Toast.LENGTH_SHORT) .show(); mUserNameEdit.setText(""); mPassWordEdit.setText(""); } }</span>