当前位置: 移动技术网 > 移动技术>移动开发>Android > Andriod 读取网络图片实例代码解析

Andriod 读取网络图片实例代码解析

2019年07月24日  | 移动技术网移动技术  | 我要评论

android手机上,我们常用imageview显示图片,我们本章获取网络图片并显示在imageview中。

一、设计界面

  1、布局文件

  打开res/layout/activity_main.xml文件。

  输入以下代码:

<?xml version="." encoding="utf-"?> 
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="match_parent" 
android:layout_height="match_parent" > 
<imageview 
android:id="@+id/imagephoto" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 
</linearlayout> 

二、程序文件

  打开“src/com.genwoxue.networkphoto/mainactivity.java”文件。

  然后输入以下代码:

package com.genwoxue.networkphoto; 
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.asynctask; 
import android.os.bundle; 
import android.widget.imageview; 
public class mainactivity extends activity { 
private imageview imview; 
@override 
public void oncreate(bundle savedinstancestate) { 
super.oncreate(savedinstancestate); 
setcontentview(r.layout.activity_main); 
imview = (imageview) findviewbyid(r.id.imagephoto); 
string imageurl = "http://img.baidu.com/img/image/ilogob.gif"; 
new networkphoto().execute(imageurl); 
} 
/* 四个步骤: 
* ()onpreexecute(),执行预处理,它运行于ui线程, 
* 可以为后台任务做一些准备工作,比如绘制一个进度条控件。 
* ()doinbackground(params...),后台进程执行的具体计算在这里实现, 
* doinbackground(params...)是asynctask的关键,此方法必须重载。 
* 在这个方法内可以使用 publishprogress(progress...)改变当前的进度值。 
* ()onprogressupdate(progress...),运行于ui线程。如果 
* 在doinbackground(params...) 中使用了publishprogress(progress...),就会 
* 触发这个方法。在这里可以对进度条控件根据进度值做出具体的响应。 
* ()onpostexecute(result),运行于ui线程,可以对后台任务的结果做出处理,结果 
* 就是doinbackground(params...)的返回值。此方法也要经常重载,如果result为 
* null表明后台任务没有完成(被取消或者出现异常)。 * 
*/ 
//本案例我们仅使用了()和() 
class networkphoto extends asynctask<string, integer, bitmap> { 
public networkphoto() { 
} 
//doinbackground(params...),后台进程执行的具体计算在这里实现,是asynctask的关键,此方法必须重载。 
@override 
protected bitmap doinbackground(string... urls) { 
url url = null; 
bitmap bitmap = null; 
httpurlconnection conn=null; 
inputstream is=null; 
try { 
url = new url(urls[]); 
} catch (malformedurlexception e) { 
e.printstacktrace(); 
} 
try { 
conn = (httpurlconnection) url.openconnection(); 
conn.setdoinput(true); 
conn.connect(); 
is = conn.getinputstream(); 
bitmap = bitmapfactory.decodestream(is); 
is.close(); 
} catch (ioexception e) { 
e.printstacktrace(); 
} finally { 
if(conn!=null){ 
conn.disconnect(); 
conn=null; 
} 
if(is!=null) { 
try { 
is.close(); 
} catch (ioexception e) { 
e.printstacktrace(); 
} 
is=null; 
} 
} 
return bitmap; 
} 
//onpostexecute(result),运行于ui线程,可以对后台任务的结果做出处理,结果 
//就是doinbackground(params...)的返回值。 
@override 
protected void onpostexecute(bitmap bitmap) { 
// 返回结果bitmap显示在imageview控件 
imview.setimagebitmap(bitmap); 
} 
} 
}

三、配置文件

  打开“androidmanifest.xml”文件。

  然后输入以下代码:

<?xml version="." encoding="utf-"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.genwoxue.networkphoto" 
android:versioncode="" 
android:versionname="." > 
<uses-sdk 
android:minsdkversion="" 
android:targetsdkversion="" /> 
<uses-permission android:name="android.permission.internet" /> 
<application 
android:allowbackup="true" 
android:icon="@drawable/ic_launcher" 
android:label="@string/app_name" 
android:theme="@style/apptheme" > 
<activity 
android:name="com.genwoxue.networkphoto.mainactivity" 
android:label="@string/app_name" > 
<intent-filter> 
<action android:name="android.intent.action.main" /> 
<category android:name="android.intent.category.launcher" /> 
</intent-filter> 
</activity> 
</application> 
</manifest> 

注意:需要在androidmanifest.xml文件中添加权限:

 <uses-permission android:name="android.permission.internet" />

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网