Android 电子词典 个人信息设置功能详细设计
个人信息设置功能详细设计思路
该功能的设计基于Android系统,主要实现用户信息的更新功能,包括用户名、密码和头像的修改。
1. 初始化界面
在onCreate()方法中,通过findViewById()方法获取控件,然后通过LitePal框架查询数据库,将已有的用户名和密码显示在输入框中。如果已有头像,则通过Glide框架将头像显示在CircleImageView中。
public class UpdateInfoActivity extends BaseActivity {
// ...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_update_info);
init();
// ...
}
private void init() {
iv_header = findViewById(R.id.iv_header);
etusername = findViewById(R.id.et_username);
etpassword = findViewById(R.id.et_password);
btn_save = findViewById(R.id.btn_save);
List<User> userList = LitePal.where("userId = ?", ConfigData.getSinaNumLogged() + "").find(User.class);
etusername.setText(userList.get(0).getUserName());
etpassword.setText(userList.get(0).getPassword());
if(!TextUtils.isEmpty(userList.get(0).getUserProfile())){
headerUrl = userList.get(0).getUserProfile();
Glide.with(UpdateInfoActivity.this).load(headerUrl).into(iv_header);
}
}
// ...
}
2. 点击头像
在iv_header的点击事件中,调用takePicture()方法,进入相册选择或拍照。
iv_header.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
takePicture();
}
});
3. 拍照或选择照片
在takePicture()方法中,判断当前版本是否大于等于6.0,如果是则调用getPermissions()方法获取权限,否则调用takePicFromSystem()方法进入相册选择或拍照。如果选择了照片,则通过Matisse框架获取照片路径,并将路径传递给compress()方法进行压缩。
private void takePicture() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
getPermissions();
} else {
takePicFromSystem();
}
}
private void takePicFromSystem() {
Matisse.from(this)
// ...
.forResult(REQUEST_CODE_CHOOSE_PHOTO_ALBUM);
}
4. 压缩照片
在compress()方法中,通过Luban框架进行照片压缩,将压缩后的照片路径传递给upload()方法进行上传。
// ...
private void compress(List<String> _List) {
// 使用Luban框架压缩照片
// ...
}
5. 上传照片
在upload()方法中,通过OkHttp框架将照片上传到服务器,并将服务器返回的照片地址保存到headerUrl变量中。
// ...
private void upload(String imagePath) {
// 使用OkHttp框架上传照片
// ...
}
6. 点击保存
在btn_save的点击事件中,获取输入框中的用户名和密码,然后通过LitePal框架查询数据库,将用户表中对应的记录更新为新的用户名、密码和头像地址。如果更新成功,则提示保存成功并关闭当前界面,否则提示保存失败。
btn_save.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// ...
User user = LitePal.where("userId = ?", ConfigData.getSinaNumLogged()).findFirst(User.class);
user.setUserName(user_name);
user.setPassword(password);
user.setUserProfile(headerUrl);
boolean result = user.save();
if (result) {
Toast.makeText(UpdateInfoActivity.this, "保存成功", Toast.LENGTH_SHORT).show();
finish();
} else {
Toast.makeText(UpdateInfoActivity.this, "保存失败", Toast.LENGTH_SHORT).show();
}
}
});
7. 检查用户名是否重复
在checkUsername()方法中,通过LitePal框架查询数据库,判断当前用户名是否已存在。
private boolean checkUsername(String phone) {
User user = LitePal.where("userId = ?", phone).findFirst(User.class);
if (user != null) {
return false;
} else {
return true;
}
}
功能设计流程图
-
初始化界面 -> 获取控件 -> 查询数据库 -> 显示用户名和密码 -> 显示头像
-
点击头像 -> 进入相册选择或拍照
-
拍照或选择照片 -> 获取权限 -> 进入相册选择或拍照 -> 获取照片路径 -> 压缩照片
-
压缩照片 -> 使用Luban框架进行压缩 -> 上传照片
-
上传照片 -> 使用OkHttp框架上传照片 -> 获取服务器返回的照片地址 -> 保存照片地址
-
点击保存 -> 获取用户名和密码 -> 更新用户表记录 -> 提示保存成功或失败 -> 关闭当前界面
-
检查用户名是否重复 -> 查询数据库 -> 判断用户名是否已存在
文字内容
-
初始化界面: a. 通过
findViewById()方法获取控件。 b. 通过LitePal框架查询数据库,将已有的用户名和密码显示在输入框中。 c. 如果已有头像,则通过Glide框架将头像显示在CircleImageView中。 -
点击头像: a. 在
iv_header的点击事件中,调用takePicture()方法,进入相册选择或拍照。 -
拍照或选择照片: a. 在
takePicture()方法中,判断当前版本是否大于等于6.0,如果是则调用getPermissions()方法获取权限,否则调用takePicFromSystem()方法进入相册选择或拍照。 b. 如果选择了照片,则通过Matisse框架获取照片路径,并将路径传递给compress()方法进行压缩。 -
压缩照片: a. 在
compress()方法中,通过Luban框架进行照片压缩,将压缩后的照片路径传递给upload()方法进行上传。 -
上传照片: a. 在
upload()方法中,通过OkHttp框架将照片上传到服务器,并将服务器返回的照片地址保存到headerUrl变量中。 -
点击保存: a. 在
btn_save的点击事件中,获取输入框中的用户名和密码。 b. 通过LitePal框架查询数据库,将用户表中对应的记录更新为新的用户名、密码和头像地址。 c. 如果更新成功,则提示保存成功并关闭当前界面,否则提示保存失败。 -
检查用户名是否重复: a. 在
checkUsername()方法中,通过LitePal框架查询数据库,判断当前用户名是否已存在。
总结
该个人信息设置功能设计思路清晰,流程完整,代码示例充分展示了功能实现的具体方法。通过合理的框架选用和代码实现,可以有效提高开发效率,并保证功能的稳定性和可靠性。
原文地址: http://www.cveoy.top/t/topic/jTX2 著作权归作者所有。请勿转载和采集!