网络图片查看器

网络图片查看器

  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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]

    Pytest(16)随机执行测试用例pytest-random-order[通俗易懂]前言通常我们认为每个测试用例都是相互独立的,因此需要保证测试结果不依赖于测试顺序,以不同的顺序运行测试用例,可以得到相同的结果。pytest默认运行用例的顺序是按模块和用例命名的ASCII编码

    2022年7月29日
    3
  • 访问ftp服务器的方法_ftp服务器如何设置访问用户

    访问ftp服务器的方法_ftp服务器如何设置访问用户ftp://127.0.0.1”或“ftp://192.168.0.2”1、DOS下的登录格式。如“ftpftp.bbc.com”。2、浏览器中的登录格式。如“ftp://ftp.bbc.com”。3、FTP客户端应用软件的设置。比如在CuteFTP中 如果使用IE直接登陆FTP,则直接用IE浏览器访问“ftp://主机名@IP地址”,然后在弹出的窗口输入

    2022年9月3日
    3
  • linux通配符的用法_linux中rmdir命令

    linux通配符的用法_linux中rmdir命令注意:linux通配符和三剑客(grep,awk,sed)正则表达式是不一样的,因此,代表的意义也是有较大区别的。通配符一般用户命令行bash环境,而linux正则表达式用于grep,sed,awk场景。*:通配符,代表所有(0到多个)字符?:通配符,代表任意1个字符;:连续不同命令的分隔符#:配置文件注释|:管道~:当前用户的家目录-:上一次所在的路径$:变量前需要加的符号/:路径分隔符号,也是…

    2022年9月19日
    1
  • 一系列令人敬畏的.NET核心库,工具,框架和软件[通俗易懂]

    一系列令人敬畏的.NET核心库,工具,框架和软件[通俗易懂]内容一般框架,库和工具API应用框架应用模板身份验证和授权Blockchain博特构建自动化捆绑和缩小高速缓存CMS代码分析和指标压缩编译器,管道工和语言加密数据库数据库驱动数据库工具和实用程序日期和时间分布式计算电子商务和支付例外功能编程图像GUIIDE国际化国际奥林匹克委…

    2022年7月16日
    10
  • 万能激活成功教程器修改器_激活成功教程软件

    万能激活成功教程器修改器_激活成功教程软件神呐原谅我吧为了省$35啊删掉注册表[HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-821C3-21C5-CE21-34A484D54444}\4FF78130]该项下的所有内容

    2022年8月21日
    2
  • python 0o_python中0o1010是多少

    python 0o_python中0o1010是多少python0o1010是多少?它以0开头,满足八进制的要求,是个八进制的数,下面来了解一下整数的四种表现形式:对于整数:有四种表现形式二进制:0,1满2进1八进制:0-7满8进1,用0开头表示十进制:0-9满10进1十六进制:0-9,A-F满16进1,用0x表示位(bit):存储信息的最小单位,表示一个二进制数字。字节(Byte):一个字节由8位二进制数字组成(1Byte=8bit)…

    2022年6月24日
    39

发表回复

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

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