网络图片查看器

网络图片查看器

  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

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

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

(0)
上一篇 2021年9月6日 下午12:00
下一篇 2021年9月6日 下午12:00


相关推荐

  • JAVA中读写文件操作

    JAVA中读写文件操作java文件读取有两种类型,我这里的是字节流的读取操作packagetest1;importjava.io.BufferedReader;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importja…

    2022年7月14日
    21
  • Linux下c语言多线程编程

    Linux下c语言多线程编程创建线程函数pthread_create()和等待线程函数pthread_join()的用法。注意:在创建线程pthread_create()之前,要先定义线程标识符:pthread_t自定义线程名;例子1:创建线程以及等待线程执行完毕。#include<stdio.h>#include<stdlib.h>#include<pthread.h>//线程要运行的函数,除了函数名myfunc,其他全都是固定的。void*myfunc(){ p

    2022年10月21日
    5
  • 做java开发的前景何在

    做java开发的前景何在做了几年的it研发工程师,到现在还从事coding,尤其我本身是女生,工作也有5年多了,一直从事coding,用过很多的开发语言,但是好像没有精通。所以找工作不知道该用哪种语言找,于是乎瞎碰,没有目标的乱碰。呵呵。曲折的工作经历,中间休息了两年没有开发,搞了半年的需求分析,后来由于不喜欢新的工作环境离职,现在又走上了老路coding,本身我觉得没有什么,但是在现在的公司里越来越觉得做研发尤其是…

    2022年7月14日
    19
  • typedef关键字与结构体、结构体指针的定义

    typedef关键字与结构体、结构体指针的定义一使用 typedef 定义结构体二使用 typedef 定义结构体指针一 使用 typedef 定义结构体 typedef 用来定义新的数据类型 通常 typedef 与结构体的定义配合使用 使用 typedef 的目的使结构体的表达更加简练 所以说 typedef 语句并不是必须使用的 定义一个名字为 TreeNode 的结构体类型 现在并没有定义结构体变量 并不占用内存空间 structTreeNo

    2026年3月17日
    2
  • [Java Web – 3A] – Spring MVC开发注意事项

    [Java Web – 3A] – Spring MVC开发注意事项

    2021年9月15日
    56
  • java反射机制简单介绍

    java反射机制简单介绍

    2021年11月14日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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