图片分享软件

简要功能介绍:用户可将图片分享至平台以供其他用户浏览,用户可对喜欢的图片进行点赞保存分享等操作。

思路如下:

  1. 界面设计:登录界面与注册界面,还有登录成功后的首页,发布页和主页,可以通过底部导航栏跳转到对应的界面。
  2. 对应功能的一一实现。数据可以保存在数据库中,采用到的技术是SQLite(本程序是保存到手机本地的数据库中,云端的可以自己摸索)。分享操作这里使用的是android自带的分享。
  3. 需要为该软件进行授权。主要授权文件的读写权限。

界面展示

登录界面

登录

注册界面

注册

用户注册并且登录成功的个人信息主页

(这里可以自行添加需要的功能)
个人信息

发布图片详细信息

发布图片

首页界面

首页

图片详细信息以及对该图片的操作

图片详细信息

软件的封面

封面

关键代码

AndroidManifest.xml中添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

<!--  获取创建、删除文件  -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
    tools:ignore="ProtectedPermissions" />
用户数据暂时保存在SharePreferences
//当登陆成功了,强制保存到SharePreferences里面
                    String spFileName = getResources()//获取当前活动的文件名
                            .getString(R.string.shared_preferences_file_name);
                    String accountKey = getResources()//用户的账号
                            .getString(R.string.login_account_name);
                    String passwordKey =  getResources()//登陆密码
                            .getString(R.string.login_password);
                    SharedPreferences spFile = getSharedPreferences(
                            spFileName,
                            Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor = spFile.edit();
                    //将账户名和密码为一对,写入安卓自带的SharedPreferences文件里面
                    editor.putString(accountKey, userName);
                    editor.putString(passwordKey, passWord);
                    editor.apply();
向数据库中插入用户信息
 SQLiteDatabase db= userdb.getWritableDatabase();
            //contenvalues只能存储基本类型的数据,像string,int之类的
            ContentValues values=new ContentValues();
            values.put("id",username);
            values.put("password",password1);
            values.put("touxiang",image);
            db.insert("users",null,values);
            db.close();
            return true;
获取系统图片信息
 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        //requestCode是用来标识请求的来源(这里是图片点击事件,标识为1), resultCode是用来标识返回的数据来自哪一个activity
        super.onActivityResult(requestCode, resultCode, data);
        //获取图片路径
        if (requestCode == 1 && resultCode == Activity.RESULT_OK && data != null) {
            Uri selectedImage = data.getData();//选择照片
            String[] filePathColumns = {MediaStore.Images.Media.DATA};//获取图片路径

            Cursor c = getContentResolver().query(selectedImage, filePathColumns, null, null, null);
            c.moveToFirst();//正确指向第一个位置
            int columnIndex = c.getColumnIndex(filePathColumns[0]);
            String imagePath = c.getString(columnIndex);
            showImage(imagePath);
            c.close();
        }

    }

    private void showImage(String imagePath) {

        bm = BitmapFactory.decodeFile(imagePath);//通过BitmapFactory.decodeFile(imagePath)方法来加载图片
        ByteArrayOutputStream baos = new ByteArrayOutputStream();//字符串输出流
        //三个参数分别是压缩后的图像的格式(png),图像显示的质量(0—100),100表示最高质量,图像处理的输出流(baos)。
        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
        image = baos.toByteArray();//接收读取到的字符,即图片的路径
        chooseImage.setImageBitmap(bm);//设置头像

    }

源码地址:

https://github.com/nonthen/SharePictures

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐