目录
- 项目简介
- 功能模块
- 模块部分功能
- 实现思路
- 更多内容
项目简介
该项目是一个图片分享软件——SharePictures,它以Android Studio为开发工具,使用GitHub作为项目管理,以阿里云数据库作为数据源,它以列表的形式,展示图片和想说的话,也可以查看到用户头像与昵称等信息,还可以完成点赞与分享功能;它几乎可以满足你的所有应用需求:账户注册、登录,查看图片动态,点赞功能,分享功能,下载功能,发布你自己的图片信息,用户管理等许多强大的功能。
你可以用它来分享你的生活动态,向其他人展示你的精彩生活瞬间;也可以欣赏到你的朋友或是其他陌生用户分享的图片动态,如果你喜欢,你可以对它点赞,也可以把它分享到你的社交软件;你可以查看图片点赞数和放大图,在个人信息你也可以查看你喜欢和你分享的图片卡片,如果你喜欢,你还可以创建多个账户来使用控制该APP。
功能模块
为了方便实现功能,代码分为七个模块,部分代码如下所示:
- 登录模块 ;
public class LoginActivity extends AppCompatActivity implements View.OnClickListener{
private Boolean bPwdSwitch = false;//判断密码是否可见,这里一开始默认密码不可见
private EditText etPwd;//输入密码
private EditText etAccount;//输入用户的账户名
private CheckBox cbRememberPwd;//是否记住密码
private static String currentUserId;// 静态变量用于存储当前登录用户的ID
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.loginactivity);//设置当前界面的布局
// 初始化各种控件
final ImageView ivPwdSwitch = findViewById(R.id.iv_pwd_switch);//是否切换明文状态的格式
etPwd = findViewById(R.id.et_pwd);//密码的形式
etAccount = findViewById(R.id.et_account);//用户的账户名
cbRememberPwd = findViewById(R.id.cb_remember_pwd);//记住密码的形式
Button btLogin = findViewById(R.id.bt_login);//登陆按钮的形式
TextView btSignup= findViewById(R.id.bt_signup);//注册账户的形式
...
// 切换密码可见状态图标的点击事件 添加一个监听事件
ivPwdSwitch.setOnClickListener(new View.OnClickListener() {
//ivPwdSwitch对象调用方法,括号里面是new一个接口当参数传入
@Override
public void onClick(View view) {
bPwdSwitch = !bPwdSwitch;
if (bPwdSwitch) {
ivPwdSwitch.setImageResource(
R.drawable.ic_baseline_visibility_24);
etPwd.setInputType(
InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//输入一个对用户可见的密码
} else {
ivPwdSwitch.setImageResource(
R.drawable.ic_baseline_visibility_off_24);
etPwd.setInputType(
InputType.TYPE_TEXT_VARIATION_PASSWORD |
InputType.TYPE_CLASS_TEXT);//输入一个密码或者是一个普通文本
etPwd.setTypeface(Typeface.DEFAULT);
}
}
});
}
//作为接口的实现类,不能直接省略
@Override
public void onClick(View view) {
}
// 静态方法用于获取当前登录用户的ID
public static String getCurrentUserId() {
return currentUserId;
}
}
- 注册模块 ;
public class SignupActivity extends AppCompatActivity {
private Boolean bPwdSwitch1 = false;//判断第一个输入密码是否可见,这里默认密码不可见
private Boolean bPwdSwitch2 = false;//判断第二个确认密码是否可见,这里默认密码不可见
private EditText etPwd1;//输入密码
private EditText etPwd2;//输入确认密码
private EditText etAccount;//输入用户的账户名
private Button btSignup;// 注册按钮
private ImageButton chooseImage;//创建一个用户头像
private byte[] image;//头像的数组
private Bitmap bm;//选择头像的照片
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.signupactivity);//设置当前界面的样式
// 初始化各个UI元素
final ImageView ivPwdSwitch1 = findViewById(R.id.imageView1);//是否切换明文状态的格式
final ImageView ivPwdSwitch2 = findViewById(R.id.imageView2);//是否切换明文状态的格式
etAccount = findViewById(R.id.NumberSignup);//用户名输入框
etPwd1=findViewById(R.id.Password1); // 第一个密码输入框
etPwd2=findViewById(R.id.Password2); // 第二个确认密码输入框
btSignup=findViewById(R.id.signupbutton);//注册账户的形式
chooseImage =findViewById(R.id.chooseimage);//选择头像的形式
...
//检验用户名是否已存在
public boolean CheckIsDataAlreadyInDBorNot(String username) {
try {
int result = Connect.queryUser(username);
return result == 1; // 返回 true 如果查询结果为1,表示用户名已存在
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
...
//显示头像
private void showImage(String imagePath) {
bm = BitmapFactory.decodeFile(imagePath);
image = compressImage(bm); // 压缩图片
chooseImage.setImageBitmap(bm);// 将图片显示在选择头像的按钮上
}
...
}
- 底部导航栏模块;
public class BottomNavigationActivity extends AppCompatActivity {
...
private void continueWithNavigation() {
// 绑定布局文件
ActivityBottomNavigationBinding binding = ActivityBottomNavigationBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
// 配置 AppBar 的导航项集合
AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_home, R.id.navigation_upload, R.id.navigation_personal)
.build();
// 获取导航控制器
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_bottom_navigation);
// 将 ActionBar 与导航控制器关联
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
// 将底部导航视图与导航控制器关联
NavigationUI.setupWithNavController(binding.navView, navController);//主页
}
...
}
- 图片动态模块;
- 上传图片模块;
- 个人信息模块;
- 数据库模块;
模块部分功能
名称 | 具体功能 |
---|---|
登录 | 账号输入、密码输入、密码的隐藏和显示、记住密码(若密码输入错误,则无法登录,若账号不存在,则可以点击“新用户?点击注册”跳转到注册页面进行注册账号。清空账号输入框时。密码框同步自动清空)等 |
注册 | 头像选择、账号输入、密码输入、密码确认、密码的隐藏和显示等 |
底部导航栏 | 点击导航栏的不同内容(图片动态、上传图片、个人信息)可以切换到对应的界面等 |
图片动态 | 列表布局显示所有的图片卡片(包含图片、主题、作者、点赞数),点击图片卡片可查看图片详情(图片、主题、作者、描述及删除、点赞、下载、分享)等 |
上传图片 | 输入主题和图片描述即可发布图片,点击删除图标,可清除图片详情等 |
个人信息 | 显示当前登录用户的头像、名字和多功能列表等 |
数据库 | 获取数据库连接,实现对云端数据库的修改等 |
实现思路
更多内容
更多内容请移步: https://github.com/DrinkwangzaidiTaurus/Image-Sharing-Android