基于Android的多功能图片分享软件

目录

  • 项目简介
    • 功能模块
    • 模块部分功能
    • 实现思路
    • 更多内容

项目简介

该项目是一个图片分享软件——SharePictures,它以Android Studio为开发工具,使用GitHub作为项目管理,以阿里云数据库作为数据源,它以列表的形式,展示图片和想说的话,也可以查看到用户头像与昵称等信息,还可以完成点赞与分享功能;它几乎可以满足你的所有应用需求:账户注册、登录,查看图片动态,点赞功能,分享功能,下载功能,发布你自己的图片信息,用户管理等许多强大的功能。

你可以用它来分享你的生活动态,向其他人展示你的精彩生活瞬间;也可以欣赏到你的朋友或是其他陌生用户分享的图片动态,如果你喜欢,你可以对它点赞,也可以把它分享到你的社交软件;你可以查看图片点赞数和放大图,在个人信息你也可以查看你喜欢和你分享的图片卡片,如果你喜欢,你还可以创建多个账户来使用控制该APP。

功能模块

为了方便实现功能,代码分为七个模块,部分代码如下所示:

  1. 登录模块 ;
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;
    }

}
  1. 注册模块 ;
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);// 将图片显示在选择头像的按钮上
    }


	...

}
  1. 底部导航栏模块;
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);//主页


    }
	...

}
  1. 图片动态模块;
  2. 上传图片模块;
  3. 个人信息模块;
  4. 数据库模块;

模块部分功能

名称具体功能
登录账号输入、密码输入、密码的隐藏和显示、记住密码(若密码输入错误,则无法登录,若账号不存在,则可以点击“新用户?点击注册”跳转到注册页面进行注册账号。清空账号输入框时。密码框同步自动清空)等
注册头像选择、账号输入、密码输入、密码确认、密码的隐藏和显示等
底部导航栏点击导航栏的不同内容(图片动态、上传图片、个人信息)可以切换到对应的界面等
图片动态列表布局显示所有的图片卡片(包含图片、主题、作者、点赞数),点击图片卡片可查看图片详情(图片、主题、作者、描述及删除、点赞、下载、分享)等
上传图片输入主题和图片描述即可发布图片,点击删除图标,可清除图片详情等
个人信息显示当前登录用户的头像、名字和多功能列表等
数据库获取数据库连接,实现对云端数据库的修改等

实现思路

实现思路

更多内容

更多内容请移步: https://github.com/DrinkwangzaidiTaurus/Image-Sharing-Android

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值