Android请求网络图片

本文介绍了如何在Android应用中从网络获取图片并显示在ImageView上,包括XML布局中按钮和ImageView的设置,以及对应的Activity代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、xml布局,定义一个按钮(点击获取)和一个ImageView用来装图片

<LinearLayout 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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context=".MainActivity" >
    <ImageView 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/pic"        
        />
    
    <Button 
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/get_url"
        android:text="get_url"        
        />    
</LinearLayout>

二、activity代码

public class MainActivity extends Activity {

	ImageView PIC;
	Button 	  BTN_GET;
	Bitmap bmp;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		find_id();
		key_things();
	}

	private void key_things() {//这里主要是创建一个线程来去请求URL
		// TODO Auto-generated method stub
		BTN_GET.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Thread_geturl thread_geturl = new Thread_geturl();
				thread_geturl.start();//启动线程
			}
		});
	}
	
	public class Thread_geturl extends Thread{
		@Override
		public void run() {
			// TODO Auto-generated method stub
			String S_url = "http://image.biaobaiju.com/uploads/20180918/15/1537256494-ZnSKMzEoBI.jpeg"; //这是你要获取的网络图片
			try {
				URL myUrl = new URL(S_url);//实例化你要请求的URL
				URLConnection url_conn = myUrl.openConnection();//url建立连接
				
				InputStream in = url_conn.getInputStream();//
				
				BitmapFactory.Options option = new BitmapFactory.Options();
				option.inSampleSize = 1;//这里的意思是图片的宽和高是原来的1/1,也就是说这里的数字是分母,
				bmp = BitmapFactory.decodeStream(in,null, option);
			
				//解释一下decodeStream(解码流)的三个参数
				//第一个参数是将原始数据转化为位图的输入流
				//第二个参数不是很了解
				//第三个意思是图像是否应该被完全解码,或者只返回大小
				
				Message msg = new Message();
				msg.what = 0;//可以理解为表示码或者是身份
				handler.sendMessage(msg);//用handler发送结果到UI线程
				
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}

	Handler handler = new Handler(){//这里是接受消息,从其他线程传过来的消息
		@Override
		public void handleMessage(Message msg) {
			// TODO Auto-generated method stub
			switch (msg.what) {
			case 0:
				PIC.setImageBitmap(bmp);
				break;

			default:
				break;
			}
		}
	};
	
	private void find_id() {
		// TODO Auto-generated method stub
		PIC = (ImageView) findViewById(R.id.pic);
		BTN_GET = (Button) findViewById(R.id.get_url);
	}
}

结果: 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值