Android实现加载网络端图片

要获取网络上的图片,首先得有网络的访问权限,需要在AndroidManifest中添加相应权限,效果图:

布局文件如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${packageName}.${activityClass}" >

    <ImageView
        android:id="@+id/iv_img"
        android:layout_width="wrap_content"
        android:layout_height="300dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <EditText
        android:id="@+id/et_url"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="60dp"
        android:inputType="textUri"
        android:text="@string/et_url"/>

    <Button
        android:id="@+id/btn_img"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:onClick="sendGetImg"
        android:text="@string/btn_img" />

</RelativeLayout>

功能代码:

import org.apache.http.Header;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;

public class MainActivity extends Activity {

	private EditText et_url;
	private ImageView iv_img;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		et_url=(EditText) findViewById(R.id.et_url);
		iv_img=(ImageView) findViewById(R.id.iv_img);
	}

	public void sendGetImg(View v){
		int id=v.getId();
		switch(id){
		case R.id.btn_img:
			//获取网络路径
			String url=et_url.getText().toString();
			//创建客户端对象
			AsyncHttpClient client=new AsyncHttpClient();
			client.get(url, new AsyncHttpResponseHandler(){
				@Override
				public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
					if(statusCode==200){
						BitmapFactory factory=new BitmapFactory();
						Bitmap bitmap=factory.decodeByteArray(responseBody, 0, responseBody.length);
						iv_img.setImageBitmap(bitmap);
					}
				}

				@Override
				public void onFailure(int statusCode, Header[] headers,
						byte[] responseBody, Throwable error) {
					error.printStackTrace();
				}
			});
			break;
		default:
			break;
		}
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-09 06:33:16

Android实现加载网络端图片的相关文章

android客户端加载网络大图片如何避免内存溢出

在Android开发中加载sdcard上的大图片到内存时容易导致OOM异常,常见的解决办法是基于BitmapFactory.Options类提供的方法定义指定的解码方式,设置inJustDecodeBounds属性为true,避免分配内存,返回一个null的Bitmap对象(包含outWidth,outHeightandoutMimeType),然后读取图片的尺寸和类型.再根据屏幕的高和宽对图片进行缩放,最后将缩放的图片加载到内存,主要代码如下: 1 Options opts = new Opt

(android开源库android-gif-drawable)第二篇 加载网络gif图片

大家好,  今天给大家带来如何使用 android开源库android-gif-drawable来 加载网络gif图片 同样的DEMO下载地址在 最后 请大家去下载 . 如果gif图片地址无效 了.      请大家自行到网上去寻找一个 gif图片地址 复制过去就可以了.谢谢大家 不会在 eclipse下使用  (android开源库android-gif-drawable)     请看我的这篇博客   (android开源库android-gif-drawable)第一篇 eclipse使用

android加载网络gif图片

支持gif的imageview,使用github上的开源框架,项目地址https://github.com/koral--/android-gif-drawable 如果gif是网络图片,这个库不支持直接加载一个url,但是提供了一个GifDrawable 类,可以通过文件,输入流等方式创建GifDrawable, 所以可以先下载下来或者获得输入流,通过创建drawable加载.下面例举两种方法: 1.下载到sd卡,再加载 DownloadUtils.java public class Down

pre-network android预加载网络框架

网络优化是所有app开发中非常重要的一部分,如果将网络请求前置就是在点击跳转activity之前开始网络加载那么速度将会有质的提升.也就是网络预先加载框框架. 网络预加载框架,监听式网络前置加载框架-Network preload, network preload the framework.- pre-network 框架说明 pre-network:是基于观察者模式的网络预先前置加载框架,可以对大程度优化网络加载速度:每一个网络请求相当于被观察者,只要订阅了的观察者能够拿到被观察者的实例.

Android Bitmap 加载大尺寸图片(精华一)

压缩原因: 1.imageview大小如果是200*300那么加载个2000*3000的图片到内存中显然是浪费可耻滴行为;2.最重要的是图片过大时直接加载原图会造成OOM异常(out of memory内存溢出) 所以一般对于大图我们需要进行下压缩处理权威处理方法参考 安卓开发者中心的大图片处理教程http://developer.android.com/training/displaying-bitmaps/load-bitmap.html 看不懂英文的话木有关系,本篇会有介绍 主要处理思路是

iOS网络编程(三) 异步加载及缓存图片----&gt;SDWebImage

@SDWebImage提供一个UIImageView的类别以支持加载来自网络的远程图片.具有缓存管理.异步下载.同一个URL下载次数控制和优化等特征. @SDWebImage的导入1.https://github.com/rs/SDWebImage 下载SDWebImage开源包2.将类包拖入工程,再导入MapKit.framework.ImageIO.framework两个框架3.SDWebImage是支持ARC的,在MRC的工程中要注意,可参考MRC工程配置ARC4.注意:SDWebImag

加载网络未知尺寸图片,自动缩放并水平、垂直居中显示

个人随笔代码实现以下功能:1.加载网络未知尺寸的图片,用户可以随意输入显示区的大小,图片会自动适应宽高.2.水平.垂直居中未知尺寸的图片 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>水平并垂直居中未知大小的图片</title> 6 <style> 7 #imageBox

android开发步步为营之50:android关于加载大图片java.lang.OutOfMemoryError错误的解决

 http://developer.android.com/training/displaying-bitmaps/load-bitmap.html 官方有一篇文章是如下这么解决的,通过Resource加载后压缩图片大小 //方法一:通过Resource加载 mImageView.setImageBitmap(decodeSampledBitmapFromResource(getResources(), R.id.myimage, 100, 100)); public static Bitm

浅谈android中加载高清大图及图片压缩方式(二)

这一讲就是本系列的第二篇,一起来聊下关于android中加载高清大图的问题,我们都知道如果我们直接加载原图的话,一个是非常慢,需要等待一定时间,如果没有在一定的时间内给用户响应的话,将会极大影响用户的体验.另一个是如果你的手机内存小的话,可能会直接崩溃.这也就是直接加载高清原图问题.遇到这些问题很容易想到的一点就是图片压缩,本篇文章也就是讲述图片压缩方式来实现加载高清大图的效果.但是现在问题就来了,通过上篇博客我们知道,手机的分辨率有很多,如何保证我同一张图片在不同分辨率的手机上能适当的压缩比例