博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android网络图片显示在ImageView 上面
阅读量:6424 次
发布时间:2019-06-23

本文共 2061 字,大约阅读时间需要 6 分钟。

在写这篇博文的时候,我參与了一个项目的开发,里面涉及了非常多网络调用相关的问题,我记得我在刚刚開始做android项目的时候,以前就遇到这个问题,当时在网上搜索了一下,发现了一篇博文,如今与大家分享一下,http://www.open-open.com/lib/view/open1376128628881.html

事实上这篇文章的思想是有问题的,由于网络是需要不断的轮询訪问的,所以必需要放在线程中,而不应该直接放在onCreate方法中,我对这段程序进行了一定的改动,将它们放在线程中更新就能够了。

这个事MainActivity.java的代码:

package com.test.picture;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.widget.ImageView;public class MainActivity extends Activity {	private ImageView imageView;	private String picturePath = "http://content.52pk.com/files/100623/2230_102437_1_lit.jpg";	@Override	protected void onCreate(Bundle savedInstanceState) {		// TODO Auto-generated method stub		super.onCreate(savedInstanceState);		setContentView(R.layout.activity_main);		initView();		new Thread(new Runnable() {			@Override			public void run() {				// TODO Auto-generated method stub				final Bitmap bitmap = returnBitMap(picturePath);				imageView.post(new Runnable() {					@Override					public void run() {						// TODO Auto-generated method stub						imageView.setImageBitmap(bitmap);					}				});			}		}).start();	}	private Bitmap returnBitMap(String url) {		URL myFileUrl = null;		Bitmap bitmap = null;		try {			myFileUrl = new URL(url);		} catch (MalformedURLException e) {			e.printStackTrace();		}		try {			HttpURLConnection conn = (HttpURLConnection) myFileUrl					.openConnection();			conn.setDoInput(true);			conn.connect();			InputStream is = conn.getInputStream();			bitmap = BitmapFactory.decodeStream(is);			is.close();		} catch (IOException e) {			e.printStackTrace();		}		return bitmap;	}	private void initView() {		imageView = (ImageView) findViewById(R.id.picture);	}}
这是布局文件的代码:

当然我们也要在AndroidManifest.xml中加入�对应的网络权限。

我们在MainActivity.java中的onCreate方法中创建了一个新的线程,可是我们也明确不能够在非UI线程中操作用户界面,那么我们不能够直接在新的线程中操作UI,所以我们还要将改变post到UI线程中去。

上面的方法执行时没有问题的,谢谢大家。

转载地址:http://iirra.baihongyu.com/

你可能感兴趣的文章
oVirt JBAS server start failed, ajp proxy cann't server correct. ovirt-engine URL cann't open
查看>>
CDP WebConsole上线公告
查看>>
ubuntu下安装摄像头应用程序xawtv
查看>>
PostgreSQL 如何比较两个表的定义是否一致
查看>>
Ambari安装Hadoop集群
查看>>
WCF学习之旅—基于ServiceDebug的异常处理(十七)
查看>>
CLREX
查看>>
再也不用担心this指向的问题了
查看>>
PHP那些事儿
查看>>
使用putty远程连接linux
查看>>
【comparator, comparable】小总结
查看>>
Node 版本管理
查看>>
34、重分布配置实验之分发列表distribute-list
查看>>
命令模式-对象行为型
查看>>
VS2017配置、提高生产力、代码辨识度 (工欲善其事必先利其器)新手必备!
查看>>
[Phoenix] 七、如何使用自增ID
查看>>
路由基本配置(上)
查看>>
windows上传文件到linux乱码解决
查看>>
fpm打包zabbix-agent
查看>>
Windows Server 2016 DNS Policy Split-Brain 3
查看>>