仿网易云音乐图片保存

原创 2017年08月02日 13:57:04

网易云音乐,听见好声音~~~
大家好

首先说保存按钮比较丑陋,后面再更改(妹子图来自干货)

上效果图这里写图片描述

这里写图片描述

图片的保存,可以将Bitmap对象进行压缩后以流的形式写入文件,对于Bitmap的获取

Glide应该也可以拿到,在这里我们使用okhttp获取输入流的方式来获得,具体如代码

public static void getBitmapUrl(Context context, String imageUrl) {
    try {
        //提取bitmap,听说好像glide也可以获得bitmap的
        OkHttpClient okHttpClient = new OkHttpClient();
        Request request = new Request.Builder().url(imageUrl).build();
        Response response = okHttpClient.newCall(request).execute();
        if (response.isSuccessful()) {
            InputStream inputStream = response.body().byteStream();
            Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
            //将图片保存到本地
            // 首先保存图片
            //检测是否存在该文件
            int start = imageUrl.lastIndexOf("/");
            String fileName = imageUrl.substring(start+1);
            //godness  为女神
            File appDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "godness");
            if (!appDir.exists()) {
                appDir.mkdir();
            }

            File[] files = appDir.listFiles();
            for (int i = 0; i < files.length; i++) {
                if (files[i].getName().equals(fileName)){
                //判断文件是否相同,我们这里只比较名字,同在一个文件夹下,名字也是根据url取得,决定//它的唯一
                    Looper.prepare();
                    Toast.makeText(context, "文件已经存在", Toast.LENGTH_SHORT).show();
                    Looper.loop();
                    return;
                }
            }
            File file = new File(appDir,fileName);
            try {
                FileOutputStream fos = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                fos.flush();
                fos.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }

            // 其次把文件插入到系统图库
            try {
                MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }
            // 通知图库扫描文件
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
            //一下toast的提示,在加了loop消息队列后会发生阻塞,因为loop()方法本身就是个死循环
            //网易云音乐把路径显示出来了,我们这里没有弹出路径,大家随意
            Looper.prepare();
            Toast.makeText(context, "存入相册成功,请在相册中查看", Toast.LENGTH_SHORT).show();
            Looper.loop();
        } else {
            throw new IOException("Unexpected code " + response);
        }


    } catch (IOException e) {
        e.printStackTrace();
    }
}

在activity中我是这么写的:

@Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.save:
            //
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                    //在线程中吐司这种方式最直接方便了
                        handler.post(new Runnable() {
                            @Override
                            public void run() {
                                Toast.makeText(WebActivity.this, "正在保存...", Toast.LENGTH_SHORT).show();
                            }
                        });
                        SavePicByUrlUtils.getBitmapUrl(WebActivity.this,url);
                    }
                }).start();

                break;
            default:
                break;
        }
    }

在相册中瞅瞅

这里写图片描述

没毛病

版权声明:本文为博主在学习工作中所遇到问题解决的点滴记录,不能说全是原创,如有错误之处,欢迎批评指正

相关文章推荐

仿网易云音乐 专辑图片折叠轮播(新)

在原来的基础上做了改进没有线程 用一个Handler实现 github项目连接地址package com.wyc.foldimageview;import java.util.ArrayList; ...

《快播》仿网易云音乐UI,在线视频,在线图片的开源项目

QVOD一款基于Material Desgin风格,仿网易云音乐UI的多媒体类开源项目。整体采用RxJava+Retrofit+MVP的架构。github地址:QVODDownload跳转下载Scre...

仿网易云音乐 专辑图片折叠轮播

防网易云音乐 专辑图片折叠轮播先不多说现上一张效果图首先简述一下实现原理1.首先让我们的imageview**动起来** 其实是不断的.invalidate();函数 让他不断的调用ondarw函...

高仿网易云音乐app

  • 2017-06-04 17:50
  • 17.91MB
  • 下载

自定义插件实现网易云音乐首页图片轮播

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和...
  • wahwhh
  • wahwhh
  • 2016-12-05 14:45
  • 1403

仿网易云音乐客户端滑动

  • 2016-05-28 21:44
  • 8.62MB
  • 下载

开源项目【LikeCloudMusic 云音】仿网易云音乐

LikeCloudMusic 云音仿网易云音乐v3.7.5,Material Design风格,基于MVP,使用RxBus作为事件总线通信库效果图目前功能扫描本地歌曲 存储歌曲及歌单 后台播放歌曲...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)