ImageView显示网络图片

        findViewById(R.id.btnLoad).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
new Thread() {
@Override
public void run() {
super.run();
try (InputStream inputStream = new URL(URL_NETWORK_PIC).openStream()) {
final Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
runOnUiThread(new Runnable() {
@Override
public void run() {
ivNetworkPic.setImageBitmap(bitmap);
}
});
} catch (IOException ex) {
Log.e(TAG, null, ex);
}
}
}.start();
}
});

保存图片到本地并更新图库

        ivNetworkPic.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AndPermission.with(MainActivity.this).runtime().permission(Permission.WRITE_EXTERNAL_STORAGE)
.onGranted(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
new Thread() {
@Override
public void run() {
super.run();
File directory = new File(Environment.getExternalStorageDirectory(), getString(R.string.app_name));
if (!directory.exists()) {
directory.mkdir();
}
String filename = System.currentTimeMillis() + ".png";
File file = new File(directory, filename);
try (FileOutputStream fileOutputStream = new FileOutputStream(file); InputStream inputStream = new URL(URL_NETWORK_PIC).openStream()) {
byte[] buffer = new byte[10240];
int byteCount;
while ((byteCount = inputStream.read(buffer)) != -1) {
fileOutputStream.write(buffer, 0, byteCount);
}
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file)));
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "图片已保存", Toast.LENGTH_SHORT).show();
}
});
} catch (final IOException ex) {
Log.e(TAG, null, ex);
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this, "图片保存失败:" + ex, Toast.LENGTH_SHORT).show();
}
});
}
}
}.start();
}
})
.onDenied(new Action<List<String>>() {
@Override
public void onAction(List<String> data) {
new AlertDialog.Builder(MainActivity.this).setMessage("没有写入外部存储的权限");
}
}).start();
}
});

其中sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(file))),用于更新图库

Android笔记之使用ImageView加载网络图片以及保存图片到本地并更新图库的更多相关文章

  1. Android笔记之使用Glide加载网络图片、下载图片

    Glide简介 不想说太多,真的很方便:P)可以节省我不少时间 GitHub地址:https://github.com/bumptech/glide 加载网络图片到ImageView Glide.wi ...

  2. Android三种基本的加载网络图片方式(转)

    Android三种基本的加载网络图片方式,包括普通加载网络方式.用ImageLoader加载图片.用Volley加载图片. 1. [代码]普通加载网络方式 ? 1 2 3 4 5 6 7 8 9 10 ...

  3. Android中用双缓存技术,加载网络图片

    最近在学校参加一个比赛,写的一个Android应用,里面要加载大量的网络图片,可是用传统的方法图片一多就会造成程序出现内存溢出而崩溃.因为自己也在学习中,所以看了很多博客和视频,然后参照这些大神的写源 ...

  4. [android]完美的解决方案ListView加载网络图片反弹问题

    为什么 先说为什么有照片反弹. 使用convertView对ListView的每一个item优化,item的复用能够有效减少内存的占用.使ListView滑动更为流畅. 但会带来一个问题,当最顶部的i ...

  5. Gilde加载网络图片(一)

    前两天 一个朋友要在本地加载几M的大图 用于用户滚动查看.按照思路 是压缩后加载显示但是这样会不清晰, 其实gilde用来加载图片 很牛掰 于是了解一下 下面贴上两个工具类: package com. ...

  6. 【转载】一行代码加载网络图片到ImageView——Android Picasso

    原文链接:一句代码加载网络图片到ImageView——Android Picasso  注意:此处使用下面代码需要先配置一下gradle,下载所需包. 具体操作如下图: compile 'com.sq ...

  7. Android Volley入门到精通:使用Volley加载网络图片

    在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法.本篇文章中我们即将学习关于Volley更加高级的用法,如何你还没有看过我的上一篇文章的话,建议先去阅读Android Volley完 ...

  8. wemall app商城源码Android之ListView异步加载网络图片(优化缓存机制)

    wemall-mobile是基于WeMall的android app商城,只需要在原商城目录下上传接口文件即可完成服务端的配置,客户端可定制修改.本文分享wemall app商城源码Android之L ...

  9. Android Volley完全解析(二),使用Volley加载网络图片

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/17482165 在上一篇文章中,我们了解了Volley到底是什么,以及它的基本用法. ...

随机推荐

  1. centos7安装hadoop2.6.1,详细教程

    1.我搭建的是三台centos7的环境 首先准备三个centos7(文中出现的所有的链接都是我自己的) centos7下载地址(也可以上官网自行下载):https://pan.baidu.com/s/ ...

  2. maxwell简单部署使用

    详细资料可以参考maxwell官网  (mysql + maxwell + kafka + elasticsearch) 说明:本文主要是关于配置maxwell监听mysql的数据修改并实时将修改内容 ...

  3. An error occurred uploading to the iTunes Store - Please upgrade Java

    Yesterday there were an update to Jave (1.6.0_31) in the "Software update", but now when I ...

  4. JAVAWEB开发之JSP、EL、及会话技术(Cookie和Session)的使用详解

    Servlet的缺点 开发人员要十分熟悉JAVA 不利于页面调试和维护(修改,重新编译) 很难利用网页设计工具进行页面设计(HTML内容导入到servlet中,用PrintWriter的对象进行输出) ...

  5. OSG(OpenSceneGraphic) 渲染引擎架构--整体认识 [转]

    原文:http://blog.csdn.net/zangle260/article/details/41123067?utm_source=tuicool 本文参考<<osg最长一帧> ...

  6. git错误解决 -- 小结

    1.今天 当我  执行  Git add  somefile 的时候,出现 如下 错误: If no other git process is currently running, this prob ...

  7. 黑苹果+win10双系统折腾笔记

    寒假趁机在家折腾一下黑苹果 笔记本配置:神船K610D I7 4600 ,其他配置思路一样,驱动要自己找 镜像和工具:OS X Yosemite 10.10.3 镜像 WIN10 TLSB 2016 ...

  8. 手机APP脚本录制(LoadRunner 12)

    最近因项目需要,研究了下手机APP脚本录制方法,有需要的童鞋可参考使用! 方法1: 在手机网络中设置网络代理,使用LR12选择Mobile Application – HTTP/HTML协议中代理录制 ...

  9. Mockito图书馆

    转载:https://static.javadoc.io/org.mockito/mockito-core/2.12.0/org/mockito/Mockito.html#42 org.mockito ...

  10. MySQL binlog-do-db选项是危险的[转]

    很多人通过 binlog-do-db, binlog-ignore-db, replicate-do-db 和   replicate-ignore-db 来过滤复制(某些数据库), 尽管有些使用, ...