博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URL对象中前而几个方法都非常容易理解,而该对象提供的openStream()可以读取该 URL资源...
阅读量:6955 次
发布时间:2019-06-27

本文共 5825 字,大约阅读时间需要 19 分钟。

hot3.png

 

1)只显示网络图片

    

b)MainActivity.java

package dujun.king.urlgetimage;import java.io.InputStream;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.Menu;import android.view.MenuItem;import android.widget.ImageView;public class MainActivity extends Activity {        Bitmap bitmap;    ImageView imageview;        Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what==0x9527) {                //显示从网上下载的图片                    imageview.setImageBitmap(bitmap);            }        }              };        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageview=(ImageView)findViewById(R.id.imageView1);             //创建并启动一个新线程用于从网络上下载图片        new Thread(){            @Override            public void run() {                try {                    //创建一个url对象                    URL url=new URL("http://www.baidu.com/img/bdlogo.png");                    //打开URL对应的资源输入流                    InputStream is= url.openStream();                    //从InputStream流中解析出图片                    bitmap = BitmapFactory.decodeStream(is);                //  imageview.setImageBitmap(bitmap);                     //发送消息,通知UI组件显示图片                    handler.sendEmptyMessage(0x9527);                    //关闭输入流                    is.close();                } catch (Exception e) {                    e.printStackTrace();                }            }                  }.start();        }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up Button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

c)AndroidMainifest.xml  

    
        
        
            
        
            
                
                
            
            

2)如果我们要显示并下载网络图片,只需要将MainActivity.java文件修改如下: 

package dujun.king.urlgetimage;import java.io.InputStream;import java.io.OutputStream;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.Menu;import android.view.MenuItem;import android.widget.ImageView;public class MainActivity extends Activity {        Bitmap bitmap;    ImageView imageview;        Handler handler=new Handler(){        @Override        public void handleMessage(Message msg) {            if (msg.what==0x9527) {                //显示从网上下载的图片                    imageview.setImageBitmap(bitmap);            }        }              };        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        imageview=(ImageView)findViewById(R.id.imageView1);             //创建并启动一个新线程用于从网络上下载图片        //这里必须新起一个线程,Android后面的版本中,不允许在主线程中联网        new Thread(){            @Override            public void run() {                try {                    //创建一个url对象                    URL url=new URL("http://www.baidu.com/img/bdlogo.png");                    //打开URL对应的资源输入流                    InputStream is= url.openStream();                    //从InputStream流中解析出图片                    bitmap = BitmapFactory.decodeStream(is);                //  imageview.setImageBitmap(bitmap);                     //发送消息,通知UI组件显示图片                    handler.sendEmptyMessage(0x9527);                    //关闭输入流                    is.close();                    //------------------------------                    //下载网络图片                    //再次打开资源流                    is = url.openStream();                    //打开手机对应的输出流                    //存放在手机中,并命名为baidulogo.png                    OutputStream os = openFileOutput("baidulogo.png", MODE_WORLD_READABLE);                    byte[] buff = new byte[1024];                    int len = 0;                    //因为网络下载一般不可能一次下载完毕,我们将每次下载好的有效数据写入                    while ((len = is.read(buff)) > 0)                    {                            os.write(buff,0,len);                    }                    //关闭流                    is.close();                    os.close();                } catch (Exception e) {                    e.printStackTrace();                }            }                  }.start();    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }}

转载于:https://my.oschina.net/ningbazheng/blog/600232

你可能感兴趣的文章
C# 多线程详解 Part.02(UI 线程和子线程的互动、ProgressBar 的异步调用)
查看>>
基于shiro授权过程
查看>>
JQuery对象和DOM对象的区别与转换
查看>>
使用 Toad 实现 SQL 优化
查看>>
.NET开发技巧——从Winform穿越到WPF
查看>>
2135亿背后的双11项目协作怎么玩?
查看>>
DRDS SQL 审计与分析——全面洞察 SQL 之利器
查看>>
微信小程序:模板消息推送实现
查看>>
CodePush自定义更新弹框及下载进度条
查看>>
自己总结的php开发中用到的工具
查看>>
小程序视频或音频自定义可拖拽进度条
查看>>
PHP导出超大的CSV格式的Excel表方案
查看>>
Mac 环境下如何生成Git shh key
查看>>
jenkins 使用磁盘检查插件 disk check plugin
查看>>
使用 Ruby 拓展 Vim
查看>>
centos7下安装LNMP(nginx+PHP7.1.9+mysql5.7)
查看>>
NodeAPI学习之Buffer
查看>>
深入java单例模式
查看>>
create-react-app
查看>>
20170812-XSS跨站脚本攻击
查看>>