网络图片查看器

网络图片查看器

 1 public class MainActivity extends Activity implements OnClickListener {  2  3 private static final String TAG = "MainActivity";  4 protected static final int ERROR = 1;  5 private EditText etUrl;  6 private ImageView ivIcon;  7 private final int SUCCESS = 0;  8  9 private Handler handler = new Handler() {  10  11 /**  12  * 接收消息  13 */  14  @Override  15 public void handleMessage(Message msg) {  16 super.handleMessage(msg);  17  18 Log.i(TAG, "what = " + msg.what);  19 if(msg.what == SUCCESS) { // 当前是访问网络, 去显示图片  20 ivIcon.setImageBitmap((Bitmap) msg.obj); // 设置imageView显示的图片  21 } else if(msg.what == ERROR) {  22 Toast.makeText(MainActivity.this, "抓取失败", 0).show();  23  }  24  }  25  };  26  27  @Override  28 protected void onCreate(Bundle savedInstanceState) {  29 super.onCreate(savedInstanceState);  30  setContentView(R.layout.activity_main);  31  32 ivIcon = (ImageView) findViewById(R.id.iv_icon);  33 etUrl = (EditText) findViewById(R.id.et_url);  34  35 findViewById(R.id.btn_submit).setOnClickListener(this);  36  }  37  38  @Override  39 public void onClick(View v) {  40 final String url = etUrl.getText().toString();  41  42 new Thread(new Runnable() {  43  44  @Override  45 public void run() {  46 Bitmap bitmap = getImageFromNet(url);  47  48 // ivIcon.setImageBitmap(bitmap); // 设置imageView显示的图片  49 if(bitmap != null) {  50 Message msg = new Message();  51 msg.what = SUCCESS;  52 msg.obj = bitmap;  53  handler.sendMessage(msg);  54 } else {  55 Message msg = new Message();  56 msg.what = ERROR;  57  handler.sendMessage(msg);  58  }  59  }}).start();  60  61  }  62  63 /**  64  * 根据url连接取网络抓去图片返回  65  * @param url  66  * @return url对应的图片  67 */  68 private Bitmap getImageFromNet(String url) {  69 HttpURLConnection conn = null;  70 try {  71 URL mURL = new URL(url); // 创建一个url对象  72  73 // 得到http的连接对象  74 conn = (HttpURLConnection) mURL.openConnection();  75  76 conn.setRequestMethod("GET"); // 设置请求方法为Get  77 conn.setConnectTimeout(10000); // 设置连接服务器的超时时间, 如果超过10秒钟, 没有连接成功, 会抛异常  78 conn.setReadTimeout(5000); // 设置读取数据时超时时间, 如果超过5秒, 抛异常  79  80 conn.connect(); // 开始链接  81  82 int responseCode = conn.getResponseCode(); // 得到服务器的响应码  83 if(responseCode == 200) {  84 // 访问成功  85 InputStream is = conn.getInputStream(); // 获得服务器返回的流数据  86  87 Bitmap bitmap = BitmapFactory.decodeStream(is); // 根据 流数据 创建一个bitmap位图对象  88  89 return bitmap;  90 } else {  91 Log.i(TAG, "访问失败: responseCode = " + responseCode);  92  }  93 } catch (Exception e) {  94  e.printStackTrace();  95 } finally {  96 if(conn != null) {  97 conn.disconnect(); // 断开连接  98  }  99  } 100 return null; 101  } 102 }

 

转载于:https://www.cnblogs.com/xiaoying1245970347/p/4452844.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/109476.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • flume与kafka应用场景解析「建议收藏」

    flume与kafka应用场景解析「建议收藏」今天也要努力学习flume与kafka是同级的一个消息传输通道:但是有各自的定位1:kafka定位消息队列,它可以有许多的生产者和消费者,并可以共享一个主题topic队列。而flume是定位数据传输,相比下,flume是一个专用工具被设计为旨在往HDFS,HBASE发送数据。它对H…

    2022年10月14日
  • 啥是SBC_sbc是什么意思的缩写

    啥是SBC_sbc是什么意思的缩写SBC简介SBC应用SBC功能★SBC简介会话边界控制器SessionBorderController,即会话边界控制器SBC已经逐渐成为NGN和IMS网络的标准配置产品(如同Lanswitch和路由器)。也被广泛称为BAC(边界接入控制器),定位在IMS网络的ABG(accessbordergateway),解决NGN业务部署中遇到的NAT/FW穿越

  • sendfile函数–零拷贝

    sendfile函数–零拷贝零拷贝:零拷贝技术可以减少数据拷贝和共享总线操作的次数,消除通信数据在存储器之间不必要的中间拷贝过程,有效地提高通信效率,是设计高速接口通道、实现高速服务器和路由器的关键技术之一。sendfile#includessize_tsendfile(intout_fd,intin_fd,off_t*offset,size_tcount);参数特别注意

  • 将ASP.Net 2.0下的GridView导出为Excel.(转)

    将ASP.Net 2.0下的GridView导出为Excel.(转)

  • C++ this指针

    C++ this指针this指针引言:首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。注意:this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针的类型取决于…

  • 玩转c语言——c语言小游戏 迷宫小游戏(附源码)

    玩转c语言——c语言小游戏 迷宫小游戏(附源码)第一步要制作迷宫小游戏,我们要利用二维数组搭建场景,制作一个简易的迷宫#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<conio.h>//小游戏所需的所有头文件intmain(){chara[100][100]={“######”, “#o#”, “####”, “###”, “##…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号