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

界面:

代码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

时间: 2024-12-20 08:21:06

通过URL来取得图片,并且显示在ImageView上的相关文章

根据url路径获取图片并显示到ListView中

项目开发中我们需要从网络获取图片显示到控件中,很多开源框架如Picasso可以实现图片下载和缓存功能.这里介绍的是一种简易的网络图片获取方式并把它显示到ListView中. 本案例实现的效果如下: 项目结构: 根据部分开源代码,我修改并封装了一个网络图片加载的工具类GetImageByUrl,通过调用其中的setImage方法,传入待显示图片的ImageView控件和该图片的url路径这两个参数即可实现获取网络图片的功能. GetImageByUrl.java package com.leo.i

Android调用系统相册和相机选择图片并显示在imageview中

Android调用系统相册和相机选择图片并显示在imageview中,在系统调用相机拍摄中,直接返回的是经过压缩处理后的图像,当你直接把返还后的图片放在imageview中时 图片就会非常的模糊,所以要经过先存放在sd中,然后在处理并显示.当调用系统相册时,因为Android系统从4.4版本以后系统不再返回真实的uri路径,而是封装过后的uri路径,所以当你写代码时必须注意,4.4是一个分水岭,4.4以上的版本必须就通过解析和相应的处理才能获取到真实的uri路径. 先上程序运行的结果. 这个是调

Android处理Bitmap使其能够不失真等比缩放裁剪后显示在ImageView上

Android开发过程中,我们有时需要动态得显示一些图片,并且这些图片的大小差距会十分大,如果需求并不是需要图片完整显示,但是需要不失真,并且要图片中间部分的情况下,我们需要做一系列处理,因为这个时候ImageView的各种scale type都不适用.具体步骤详见下面代码,大家也可以直接拷过去作为工具类使用 1 /** 2 * 获取正确缩放裁剪适应IamgeView的Bitmap 3 * @param imageView 4 * @param bitmap 5 * @return 6 */ 7

Android NDK使用libjpeg解析JPEG图片,并显示到SurfaceView上

SurfaceView大概是谷歌提供给开发者最吸引人的的组件了,原因是SurfaceView的界面刷新允许在非UI线程中更新,正因为此,很多频繁更新界面的应用,如视频播放器.游戏.动画效果总会基于SurfaceView及其子类进行开发. 而最近我正在研究的一个应用是关于处理图片并显示图片的应用,图片实在是内存杀手,而处理图片则运算量非常大,这些都是令人头疼的问题. 分析应用,并选择实现技术 1.处理图片运算量大,为了提高运算效率,选择使用C语言处理图片 2.需要的内存空间较大,为节约内存并提高效

在Android中如何获取视频的第一帧图片并显示在一个ImageView中

String path  = Environment.getExternalStorageDirectory().getPath(); MediaMetadataRetriever media = new MediaMetadataRetriever(); media.setDataSource(path+"/123.rmvb"); Bitmap bitmap = media.getFrameAtTime(); image = (ImageView)this.findViewById(

[Android] 拍照、截图、保存并显示在ImageView控件中

最近在做Android的项目,其中部分涉及到图像处理的内容.这里先讲述如何调用Camera应用程序进行拍照,并截图和保存显示在ImageView控件中以及遇到的困难和解决方法. PS:作者购买了本<Android第一行代码 著:郭霖>,参照里面的内容完成(推荐该书,前面的布局及应用非常不错).网上这类资料非常多,作者仅仅分享给初学者同时在线记录些内容,希望对大家有所帮助. 首先,设置activity_main.xml为LinearLayout布局且 android:orientation=&q

IE10 URL中多出一串字符,图片无法显示

登录成功之后,Redirect 到Default.aspx 结果地址显示为 http://localhost/AMTS4003/(F(FH6yZdYsOOTG-4-tw8lLQKiF83Zu2qzmI9Ktz9ENRvnANaGsSqYSWXNPvEcqjGx5Hj4VxssVXd3AWAXjno4hOYQY9mbEQCBRrskFWeZBNBw1))/default.aspx 正常地址应该是: http://localhost/AMTS4003/default.aspx 解决办法: 是DotN

img只显示图片一部分 或 css设置背景图片只显示图片指定区域

17:14 2016/3/22img只显示图片一部分 或 css设置背景图片只显示图片指定区域 background-position: 100% 56%; 设置背景图片显示图片的哪个坐标区域,图片左上角为0,0或0%,0%,右下角为高度和宽度,或100%,100%. clip:rect(300px 100px 300px 0px); 设置显示图片的某个区域,分别是上右下左的顺序设置 部分代码:<style type="text/css">img {position:abs

div嵌套div 背景图片 不显示的问题

这几天 在做一个小Demo的时候碰到了如上的问题,一个DIV嵌套多个DIV时,父容器DIV不显示背景图片.同时结合之前碰到类似的问题,我归纳了如下几个解决方法: 1.就是常见的 子div 背景把父div的背景给盖住了,例子: 该例子就是 我有一个父div 和它里面嵌套的一个子div,两个div的宽度和高度大小是一样的,其中父div的背景图片就是上面这张图片(箭头部分是透明的),子div的背景图片是那种渐变灰色图片,其实懂英语的人应该看出来了就是,我想实现一个那种类似于iphone滑动那种灯光从