采用发消息的形式查看网络图片

1、视图

 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:orientation="vertical"
 6     tools:context=".MainActivity" >
 7
 8     <ImageView
 9         android:layout_weight="1000"
10         android:id="@+id/iv"
11         android:layout_width="fill_parent"
12         android:layout_height="fill_parent"
13         />
14     <!--  不能用localhost, 否则会用android本事的localhost,我曾经在此错误过-->
15     <EditText
16         android:text="http://img1.mm131.com/pic/1055/1.jpg"
17         android:id="@+id/et_path"
18         android:layout_width="fill_parent"
19         android:layout_height="wrap_content"
20         android:hint="请输入图片地址"
21         />
22     <Button
23         android:onClick="lookImage"
24         android:layout_width="fill_parent"
25         android:layout_height="wrap_content"
26         android:text="浏览"
27         />
28
29 </LinearLayout>

2、权限

<uses-permission android:name="android.permission.INTERNET"/>

3、MainActivity代码

 1 package com.example.lookimage;
 2
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.MalformedURLException;
 6 import java.net.URL;
 7
 8 import android.os.Bundle;
 9 import android.os.Handler;
10 import android.os.Message;
11 import android.app.Activity;
12 import android.graphics.Bitmap;
13 import android.graphics.BitmapFactory;
14 import android.text.TextUtils;
15 import android.view.Menu;
16 import android.view.View;
17 import android.widget.EditText;
18 import android.widget.ImageView;
19 import android.widget.Toast;
20
21 public class MainActivity extends Activity {
22     protected static final int CHANGE_UI=1;
23     private static final int ERROR = 2;
24     private ImageView iv;
25     private EditText et_path;
26     private Handler handler = new Handler(){
27         public void handleMessage(android.os.Message msg){
28             if(msg.what == CHANGE_UI){
29                 Bitmap bitmap = (Bitmap) msg.obj;
30                 iv.setImageBitmap(bitmap);
31             }else if(msg.what == ERROR){
32                 Toast.makeText(MainActivity.this, "显示图片失败", 0).show();
33             }
34         }
35     };
36
37     @Override
38     protected void onCreate(Bundle savedInstanceState) {
39         super.onCreate(savedInstanceState);
40         setContentView(R.layout.activity_main);
41
42         iv = (ImageView)findViewById(R.id.iv);
43         et_path = (EditText)findViewById(R.id.et_path);
44     }
45
46
47     public void lookImage(View view){
48         final String path = et_path.getText().toString().trim();
49         if(TextUtils.isEmpty(path)){
50             Toast.makeText(this, "地址不能为空", 0).show();
51         }else{
52             new Thread(){
53                 public void run(){
54                     try {
55                         URL url = new URL(path);
56                         HttpURLConnection conn = (HttpURLConnection) url.openConnection();
57                         conn.setRequestMethod("GET");
58                         conn.setConnectTimeout(5000);
59                         conn.setRequestProperty("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)");
60                         int code = conn.getResponseCode();
61                         if(code == 200){
62                             InputStream is = conn.getInputStream();
63                             Bitmap bitmap = BitmapFactory.decodeStream(is);
64                             //iv.setImageBitmap(bitmap);
65                             Message msg = new Message();
66                             msg.what = CHANGE_UI;
67                             msg.obj = bitmap;
68                             handler.sendMessage(msg);
69                         }else{
70                             Message msg = new Message();
71                             msg.what = ERROR;
72                             handler.sendMessage(msg);
73                         }
74                     } catch (Exception e) {
75                         // TODO Auto-generated catch block
76                         e.printStackTrace();
77                         Message msg = new Message();
78                         msg.what = ERROR;
79                         handler.sendMessage(msg);
80                     }
81                 }
82             }.start();
83         }
84     }
85
86 }
时间: 2024-10-12 13:20:12

采用发消息的形式查看网络图片的相关文章

handler发消息的形式

1.onCreate()中写好handler的接受机制,准备接受并处理消息 2.thread中利用handler.post(Runnable r): protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.text);

C# Socket基础(四)之客户端向服务器发消息

private Socket socketClient;//客户端套接字,关于实例化请参考C# Socket基础(三)之客户端连接服务器和接收消息 客户端发送消息 1 /// <summary> 2 /// 发送数据到服务端 3 /// </summary> 4 private void Send() 5 { 6 if (socketClient == null) 7 { 8 9 ShowMsg("服务器未启动!"); 10 return; 11 } 12 by

Android学习之查看网络图片

在这里小编学习了查看网络图片的小案例,: 初始界面: 点击浏览后,效果如下: 需要注意的是 该案例需要获取联网权限,即: <uses-permission android:name="android.permission.INTERNET"/> 具体步骤如下: 1.定义并初始化控件: private EditText etImageUrl; private ImageView ivImage; /**控件初始化*/ private void init() { ivImage

Android之使用HttpURLConnection类查看网络图片以及网络源码

1.首先,来介绍一下HttpURLConnection类,HttpURLConnection类位于java.net包中,用于发送HTTP请求和获取HTTP响应.由于此类是抽象类,不能直接实例化对象,所以需要使用URL的openConnection()方法来获得. 例如,要创建一个http://www.baidu.com 网站对应的HttpURLConnection对象,可以使用下列代码: URL url=new URL("http://www.baidu.com"); HttpURLC

云非币 采用全部数据信息加密形式,从软件建设、交易订单和隐私管理等方面运用业内最先进稳定的技术,确保

AORIEX -- 云非(币),最懂你Aoriex 电子货币公司 (aoriex ) 公司致力于通过创新的密码学技术为隐私电子货币建立一套新的标准. 我们相信隐私增强了社会关系和社会机构,帮助社会抵御敌人,帮助社会变得更加和平和繁荣.在一个开放和可编程的金融系统中,隐私是保证互换性和保证密码学货币可以像交换媒介一样可互换的的唯一方法.为了进行商业活动,公司需要隐私,特使是在公有链情况下.另外,我们相信个人隐私对于像尊严.亲密和道德这些人类核心价值来说是至关重要的.aoriex 是一个科学驱动的

ActiveMQ发消息和收消息

来自:http://blog.163.com/chengwei_1104/blog/static/53645274201382315625329/ ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线.ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位. 下面详细的解释常用类的作用 ConnectionFactory 接口(连接工厂) 用

采用handle消息机制实现轮播效果

1 // 自动轮播条显示 2 if (mhandle == null) { 3 mhandle = new Handler() { 4 public void handleMessage(Message mes) { 5 6 int item = vp_topnews.getCurrentItem(); 7 if (item < topnews.size() - 1) { 8 item++; 9 } else { 10 item = 0; 11 } 12 vp_topnews.setCurren

C#给其他程序发消息

1.相关声明函数,SendMessage可定义两种格式. [DllImport("User32.DLL", CharSet = CharSet.Auto)]public static extern IntPtr FindWindowEx(IntPtr hwndParent, IntPtr hwndChildAfter, string lpszClass, string lpszWindow); [DllImport("User32.dll")]private sta

iPad版微信终于来临了 微信5.4版搜索更智能 转账就是发消息

等待甚久的iPad版微信终于来临了!昨日微信iOS版本更新至5.4.0.16,新增功能包括搜索公众号.识别图中二维码.面对面收钱,同时适配iPad. 1.先来揭开iPad版微信应用的面纱 微信已有iPhone和Mac版应用,但并没有独立的iPad版应用.此次更新后,微信推出了适配iPad的版本.用户除了输入手机号码登录iPad微信外,还可通过扫描二维码的方式来登录. iPad登录方式与网页版有相同之处,用户打开iPad版应用后,需用手机扫描iPad上出现的二维码,点击“登录iPad微信”确认,但