码迷,mamicode.com
首页 > Web开发 > 详细

通过URL来取得图片,并且显示在ImageView上

时间:2015-10-27 20:17:15      阅读:337      评论:0      收藏:0      [点我收藏+]

标签:

界面:技术分享 

代码xml:

技术分享
 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="com.zzw.watctImage.MainActivity" >
 7 
 8     <ImageView
 9         android:id="@+id/image_view"
10         android:layout_width="match_parent"
11         android:src="@drawable/t01a7b264978bb316f1"
12         android:layout_height="wrap_content"
13         android:layout_weight="1" />
14 
15     <LinearLayout
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:orientation="horizontal" >
19 
20         <EditText
21             android:id="@+id/url_edit"
22             android:layout_width="wrap_content"
23             android:layout_height="match_parent"
24             android:layout_weight="1"
25             android:singleLine="true"
26             android:text="http://p1.so.qhimg.com/t017cf2863df563308b.jpg" />
27 
28         <Button
29             android:id="@+id/get"
30             android:layout_width="wrap_content"
31             android:layout_height="match_parent"
32             android:text="获得图片"
33             android:textColor="@android:color/holo_blue_light" />
34     </LinearLayout>
35 
36 </LinearLayout>
XML

 

java代码中通过点击获得图片按钮得到编辑好的URL的图片技术分享

 

java代码:

技术分享
  1 package com.zzw.watctImage;
  2 
  3 import java.io.IOException;
  4 import java.io.InputStream;
  5 import java.net.HttpURLConnection;
  6 import java.net.MalformedURLException;
  7 import java.net.URL;
  8 import java.net.URLConnection;
  9 
 10 import android.app.Activity;
 11 import android.graphics.Bitmap;
 12 import android.graphics.BitmapFactory;
 13 import android.os.Bundle;
 14 import android.os.Handler;
 15 import android.os.Message;
 16 import android.view.Menu;
 17 import android.view.MenuItem;
 18 import android.view.View;
 19 import android.view.View.OnClickListener;
 20 import android.widget.Button;
 21 import android.widget.EditText;
 22 import android.widget.ImageView;
 23 
 24 public class MainActivity extends Activity implements OnClickListener {
 25     ImageView image_view = null;
 26     EditText image_uri = null;
 27     Handler handler = new Handler() {
 28         @Override
 29         public void handleMessage(Message msg) {
 30             // TODO Auto-generated method stub
 31             super.handleMessage(msg);
 32             if (msg.what == 0) {
 33                 Bitmap bitmap = (Bitmap) msg.obj;
 34                 image_view.setImageBitmap(bitmap);
 35             }
 36 
 37         }
 38 
 39     };
 40     /**
 41      * 1.访问网络不能直接放在主方法里面(android.os.NetworkOnMainThreadException), 应该放在一个线程里面
 42      * 2.android.view.ViewRootImpl$CalledFromWrongThreadException:
 43      * 只能在主线程或者UI线程里面修改视图,应该用通信来解决
 44      */
 45     @Override
 46     protected void onCreate(Bundle savedInstanceState) {
 47         super.onCreate(savedInstanceState);
 48         setContentView(R.layout.activity_main);
 49         init();
 50     }
 51 
 52     // 初始化
 53     public void init() {
 54         image_view = (ImageView) findViewById(R.id.image_view);
 55         image_uri = (EditText) findViewById(R.id.url_edit);
 56         findViewById(R.id.get).setOnClickListener(this);
 57     }
 58 
 59     @Override
 60     public void onClick(View v) {
 61         final String uri = image_uri.getText().toString();
 62         new Thread(new Runnable() {
 63             @Override
 64             public void run() {
 65                 // TODO Auto-generated method stub
 66                 Bitmap bitmap = getBitmap(uri);
 67                 if (bitmap != null) {
 68                     Message msg = new Message();
 69                     msg.what = 0;// 说明你是谁
 70                     msg.obj = bitmap;
 71                     handler.sendMessage(msg);
 72                 }
 73 
 74             }
 75         }).start();
 76         ;
 77     }
 78 
 79     // bitmap------>位图
 80     public Bitmap getBitmap(String uri) {
 81         HttpURLConnection conn = null;
 82         try {
 83             // 1、获得图片的url
 84             URL url = new URL(uri);
 85 
 86             // 2、获得网络连接
 87             conn = (HttpURLConnection) url.openConnection();
 88 
 89             // 3、设置请求的一些常用参数
 90             conn.setReadTimeout(3000);// 设置连接去读取数据的最长时间
 91             conn.setConnectTimeout(3000);// 设置超时
 92             conn.setDoInput(true);// 设置请求可以让服务器写入数据
 93 
 94             // 4、真正的请求图片,然后把从服务器上请求的二进制流保存到inputStream里面
 95             conn.connect();
 96             InputStream in = conn.getInputStream();
 97             Bitmap bitmap = BitmapFactory.decodeStream(in);
 98             return bitmap;
 99         } catch (MalformedURLException e) {
100             // TODO Auto-generated catch block
101             e.printStackTrace();
102         } catch (IOException e) {
103             // TODO Auto-generated catch block
104             e.printStackTrace();
105         }
106         // 5、关闭网络连接
107         finally {
108             if (conn != null) {
109                 conn.disconnect();
110             }
111         }
112         return null;
113     }
114 }
JAVA

 

通过URL来取得图片,并且显示在ImageView上

标签:

原文地址:http://www.cnblogs.com/zzw1994/p/4915246.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!