从网络下载图片资源在各种APP中很常见,比如很多APP都有广告轮番功能,这些广告图片通常是从服务器获取的,这里就需要从服务器上下载图片资源并显示。

一、获取网络图片并下载到本地:

代码:MainActivity.java:

package com.example.androidt11;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;public class MainActivity extends Activity {private EditText editText;private Button button;private ImageView imageView;private Bitmap bitmap;//手柄更新的作用Handler handler=new Handler(){public void handleMessage(Message msg) {if(msg.what==111){imageView.setImageBitmap(bitmap);}};};protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);//初始化组件editText=(EditText) findViewById(R.id.imagepath);button=(Button) findViewById(R.id.upload);imageView=(ImageView) findViewById(R.id.imageView);//给下载按钮添加一个监听button.setOnClickListener(new OnClickListener() {public void onClick(View arg0) {new Thread(t).start();}});}//为了下载图片资源,开辟一个新的子线程Thread t=new Thread(){public void run() {//下载图片的路径String iPath=editText.getText().toString();try {//对资源链接URL url=new URL(iPath);//打开输入流InputStream inputStream=url.openStream();//对网上资源进行下载转换位图图片bitmap=BitmapFactory.decodeStream(inputStream);handler.sendEmptyMessage(111);inputStream.close();//再一次打开inputStream=url.openStream();File file=new File(Environment.getExternalStorageDirectory()+"/haha.gif");FileOutputStream fileOutputStream=new FileOutputStream(file);int hasRead=0;while((hasRead=inputStream.read())!=-1){fileOutputStream.write(hasRead);}fileOutputStream.close();inputStream.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}};};}

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><EditText android:id="@+id/imagepath"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="https://ss0.bdstatic.com/5aV1bjqh_Q23odCf/static/superman/img/logo/bd_logo1_31bdc765.png"/><Button android:id="@+id/upload"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="下载"/><ImageView android:id="@+id/imageView"android:layout_width="match_parent"android:layout_height="wrap_content"/></LinearLayout>

这时查看SD卡根目录,会看到一个haha.gif的图片

效果图:

二、下载图片后显示在ListVIew中(更接近实际应用):

MainActivity.java:

package com.example.demo1;import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;public class MainActivity extends Activity {private ListView listView;   //界面组件private Bitmap[] bitmaps;    //定义一个位图数组,用来存放从网络下载下来的位图private ImageView[] images;  //定义一个ImageView数组,用来存放位图数组中的位图图片//网络图片资源private String[] urls = {"https://ss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2720761512,1992761174&fm=26&gp=0.jpg","https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=401967138,750679164&fm=26&gp=0.jpg","https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1059486618,1562064036&fm=26&gp=0.jpg" };//使用handler更新UIHandler handler=new Handler(){public void handleMessage(Message msg) {if(msg.what==111){listView.setAdapter(new MyAdapter());}};};//继承BaseAdapterprivate class MyAdapter extends BaseAdapter{@Overridepublic int getCount() {return urls.length;}@Overridepublic Object getItem(int arg0) {return arg0;}@Overridepublic long getItemId(int arg0) {// TODO Auto-generated method stubreturn arg0;}@Overridepublic View getView(int arg0, View arg1, ViewGroup arg2) {LayoutParams layoutParams = new LayoutParams(LayoutParams.MATCH_PARENT, 100);images[arg0].setLayoutParams(layoutParams);return images[arg0];}}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);bitmaps = new Bitmap[urls.length];images = new ImageView[urls.length];listView = (ListView) findViewById(R.id.listView);// 为了下载图片资源,开辟一个新的子线程new Thread(new Runnable() {@Overridepublic void run() {for (int i = 0; i < urls.length; i++) {// 下载图片的路径String iPath = urls[i];try {// 对资源链接URL url = new URL(iPath);// 打开输入流InputStream inputStream = url.openStream();// 对网上资源进行下载转换位图图片bitmaps[i] = BitmapFactory.decodeStream(inputStream);images[i] = new ImageView(MainActivity.this);images[i].setImageBitmap(bitmaps[i]);inputStream.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}handler.sendEmptyMessage(111);}}).start();}
}

xml文件里面仅一个ListView组件....

效果图:

Android下载网络图片资源相关推荐

  1. android 之使用多线程中的AsyncTask实现下载网络图片资源

    前台显示: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:androi ...

  2. android 下载网络pdf文件后并显示

    Demo下载地址:https://download.csdn.net/download/as425017946/10664926 1.基本思路: 打开网络pdf 思路整体还是来源与图片的加载. and ...

  3. android imageview 显示资源图片,ImageView显示网络图片资源

    Android ImageView如何加载网络图片资源有些事,可以看透,但不要看破;有些人,可以看穿,但不要戳穿;有些话,能不说就沉默,藏在心里更适合;有些伤,能不揭就不提起,无声忘记更明智. 用im ...

  4. Android实现网络下载一(单任务下载--支持断点续传)

    Android实现网络下载一(单任务下载–支持断点续传) 说起下载,在Android的一些类似游戏宝的项目中会频繁使用,比如说需求要下载一个apk文件,并且要支持暂停.继续等要求.当然在GitHib上 ...

  5. Android实现网络下载二(多任务下载--支持断点续传)

    Android实现网络下载二(多任务下载–支持断点续传) 上文中说了单任务的断点续传,这篇文章就说说多任务下载,不啰嗦了,直接进入正题. 附上demo源码,GitHub代码后续上传,这里的链接还是cs ...

  6. Android加载网络图片资源

    Android加载网络图片资源 获取图片资源 public static Bitmap getBitmap(String path) throws IOException {URL url = new ...

  7. Android中网络使用

    Android中判断网络连接是否可用 一.判断网络连接是否可用 public static boolean isNetworkAvailable(Context context) { Connecti ...

  8. Android下载文件(一)下载进度断点续传

    Android下载文件(一)下载进度&断点续传 索引 Android下载文件(一)下载进度&断点续传 Android下载文件(二)单任务多线程并发&断点续传(待续) Andro ...

  9. [工具库]JFileDownloader工具类——多线程下载网络文件,并保存在本地

    本人大四即将毕业的准程序员(JavaSE.JavaEE.android等)一枚,小项目也做过一点,于是乎一时兴起就写了一些工具. 我会在本博客中陆续发布一些平时可能会用到的工具. 代码质量可能不是很好 ...

最新文章

  1. JS_高程6.面向对象的程序设计(2)创建对象_1
  2. python 报错 UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd3 in position 解决方法
  3. 双向链表_如何通过Java单次查找链表的中间元素
  4. Java插件自动保存浏览器书签_多浏览器书签同步插件EverSync
  5. Teleport Pro使用教程
  6. php 迭代设计模式 -- BookList -- 分页
  7. XAMPP 使用教程
  8. 单行溢出隐藏没生效_至今没搞懂,为什么这个缸这么火?
  9. CSS content 属性 CSS counter-increment 属性 CSS counter-reset 属性
  10. python计算器外壳模板
  11. 黑苹果电池电量补丁_【黑苹果】用一次实战记录电池热补丁的编写方法
  12. dcm4che操作dcm文件
  13. 超好玩的css3-3d效果
  14. 为了寻找美,我决定对美女图片进行图像边缘化处理
  15. Webpack 5: The ‘compilation‘ argument must be an instance of Compilation
  16. java bigdecimal.round_down,java BigDecimal 的 setScale() 方法的 BigDecimal.ROUND_DOWN 舍入模式的BUG,坑...
  17. 关于gl_FragCoord的理解
  18. LCD高抗干扰液晶段码屏显示驱动芯片:VK2C21A/B/BA/C/D 大量应用于音箱/音响面板LCD显示驱动
  19. 和过去的自己写的告别信
  20. python课后感想_谈谈对Python的感想

热门文章

  1. 京东高管解读财报:明年会提升毛利及净利 改善现金流
  2. Java控制台各种打印三角形
  3. Linux系统的开机自启动
  4. html+css布局实例:CSS过渡-Transitions文字逐渐变大的效果
  5. 更新VantUI 组件
  6. 小猪佩奇代码话,我是社会程序员,分享一篇python画小猪佩奇代码!
  7. wps文档怎么给整段文字加框_WPS文字如何给段落添加双波浪边框
  8. cf 1205B Shortest Cycle(最小环)
  9. vue 导包、启动命令
  10. 【ICPC第46届上海站 D题 Strange_Fractions】数学