010_01网络图片查看器

 1 package com.example.day10_01getpicture;
 2
 3 import java.io.InputStream;
 4 import java.net.HttpURLConnection;
 5 import java.net.URL;
 6
 7 import android.app.Activity;
 8 import android.graphics.Bitmap;
 9 import android.graphics.BitmapFactory;
10 import android.os.Bundle;
11 import android.os.Handler;
12 import android.os.Message;
13 import android.view.View;
14 import android.widget.ImageView;
15 import android.widget.Toast;
16
17 public class MainActivity extends Activity {
18
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_main);
23     }
24
25     final static int MSG_DOWNLOAD_OK =1;
26     final static int MSG_DOWNLOAD_ERROR =2;
27
28     /*  Handler主要用于异步消息的处理:当发出一个消息之后,首先进入一个消息队列,发送消息的函数即刻返回,
29      *而另外一个部分逐个的在消息队列中将消息取出,然后对消息进行出来,就是发送消息和接收消息不是同步的处理。
30      *这种机制通常用来处理相对耗时比较长的操作*/
31      Handler handler = new Handler(){
32         @Override
33         public void handleMessage(Message msg) {
34             super.handleMessage(msg);
35             //针对message进行处理
36             switch (msg.what) {
37             case MSG_DOWNLOAD_OK:
38                 ImageView iv= (ImageView) findViewById(R.id.iv_pic);
39                 iv.setImageBitmap((Bitmap)msg.obj);
40                 break;
41             case MSG_DOWNLOAD_ERROR:
42                 Toast.makeText(MainActivity.this, "下载失败", 1).show();
43                 break;
44             default:
45                 break;
46             }
47         }
48     };
49
50
51     public void getpicture(View v){
52         Thread tread = new Thread(){
53             public void run() {
54                 //启动tomcat服务器
55                 String path = "http://192.168.3.39/zy.jpg";
56                 try {
57                     URL url = new URL(path);
58                     HttpURLConnection  conn = (HttpURLConnection) url.openConnection();
59                     conn.setReadTimeout(5000);
60                     conn.setRequestMethod("GET");
61                     conn.setConnectTimeout(5000);
62                     // pending;
63                     conn.connect();
64
65                     if (conn.getResponseCode()==200) {
66                       InputStream is = conn.getInputStream();
67                       Bitmap bm = new BitmapFactory().decodeStream(is);
68
69                      /*子线程内无法操作UI,原因?
70                          ImageView iv= (ImageView) findViewById(R.id.iv_pic);
71                       iv.setImageBitmap(bm);
72                        让主线程去更新ui--》 通知主线程去做事情,顺便把数据bm给到主线程
73                        */
74                      // Message  msg = new Message();//ok
75                       Message msg = handler.obtainMessage();
76                       msg.what = MSG_DOWNLOAD_OK;
77                       msg.obj  = bm;
78                       handler.sendMessage(msg);
79                     }
80                     else {
81                      // Message  msg = new Message();//!ok
82                       Message msg = handler.obtainMessage();
83                       msg.what =MSG_DOWNLOAD_ERROR;
84                       handler.sendMessage(msg);
85                         //Toast.makeText(this, "下载失败", 1).show();
86                     }
87                 }catch (Exception e) {
88                     e.printStackTrace();
89                 }
90             };
91         };
92         tread.start();
93     }
94 }
 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     tools:context="${relativePackage}.${activityClass}"
 6     android:orientation="vertical" >
 7
 8     <TextView
 9         android:layout_width="wrap_content"
10         android:layout_height="wrap_content"
11         android:text="hello_world" />
12     <Button
13          android:layout_width="wrap_content"
14         android:layout_height="wrap_content"
15         android:text="获取图片"
16         android:onClick="getpicture"/>
17     <ImageView
18         android:id="@+id/iv_pic"
19          android:layout_width="wrap_content"
20         android:layout_height="wrap_content"
21          android:src="@drawable/ic_launcher"
22         ></ImageView>
23 </LinearLayout>
时间: 2024-10-12 03:59:29

010_01网络图片查看器的相关文章

android 网络_网络图片查看器

xml <?xml version="1.0"?> -<LinearLayout tools:context=".MainActivity" android:paddingTop="@dimen/activity_vertical_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingLeft="

无废话Android之内容观察者ContentObserver、获取和保存系统的联系人信息、网络图片查看器、网络html查看器、使用异步框架Android-Async-Http(4)

1.内容观察者ContentObserver 如果ContentProvider的访问者需要知道ContentProvider中的数据发生了变化,可以在ContentProvider 发生数据变化时调用getContentResolver().notifyChange(uri, null)来通知注册在此URI上的访问者,例子如下: private static final Uri URI = Uri.parse("content://person.db"); public class

(十二)网络图片查看器(注释更全面)

(一)android:layout_weight 在不同情况下的意义. 当 android:layout_width  和 android:layout_height都不为0的时候,android:layout_weight代表的是控件渲染的优先级,值越大,渲染的优先级越低.默认android:layout_weight=0. 当 android:layout_width  或 android:layout_height为0的时候,android:layout_weight才代表权重,值越大,权

【黑马Android】(05)短信/查询和添加/内容观察者使用/子线程网络图片查看器和Handler消息处理器/html查看器/使用HttpURLConnection采用Post方式请求数据/开源项目

备份短信和添加短信 操作系统短信的uri: content://sms/ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.backupsms" android:versionCode="1

android---利用android-async-http开源项目实现网络图片查看器

1.   导包:导入android-async-http开源项目的最新版本的包 2.简单的搭建一个网络图片查看器的界面 相关的界面搭建代码: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent

网络图片查看器

如何使用安卓程序实现图片的异步图片加载,网络上传,网络查看.本届需要涉及到官员桌处理机制的问题,请参考 http://www.cnblogs.com/xuyinghui/p/4589701.html 1:下面是该程序的效果图: 在文本框中输入图片的路径,点击浏览按钮的同时,将会在上方的ImageView中显示出来该图片. 想要实现上面的程序,需要在按钮的点击事件中,在MainActivity的初始代码: 1 public void viewImage(View view) 2 { 3 Strin

[android] 网络图片查看器

界面布局LinerLayout线性布局,ImageView控件,EditText控件 hint属性提示信息,Button控件. Android:layout_weight=””属性,权重,只有控件的宽度和高度为0的时候才代表权重,否则它代表渲染的优先级,值越大优先级越低,默认是0,先渲染其他控件 singleLine属性 单行 业务逻辑,获取EditText的值放到ImageView里,实质上是http的get请求 获取EditText对象,通过findViewById() 获取值,通过调用Ed

Android smartimageview网络图片查看器

调用代码: SmartImageView siv = (SmartImageView) findViewById(R.id.siv);siv.setImageUrl(et_path.getText().toString().trim(),R.drawable.iclaunch,R.drawable.iclaunch);//参数分别为图片URL地址,加载失败时显示的图片,加载过程中显示的图片 开源代码查找方法: 在百度搜索栏中输入:csdn github android 开源代码

android网络图片查看器

package com.itheima.netimageviewer; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; imp