1 布局檔案,
<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:orientation="vertical"
tools:context=".mainactivity" >
<imageview
android:id="@+id/iv_icon"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1" />
<linearlayout
android:layout_height="wrap_content"
android:orientation="horizontal" >
<edittext
android:id="@+id/et_url"
android:layout_width="0dip"
android:text="http://img0.hao123.com/data/1_489a5f7dfbcbb624a231f372e4bdffce_310"
android:layout_height="wrap_content"
android:singleline="true"
android:layout_weight="1" />
<button
android:id="@+id/btn_submit"
android:layout_width="wrap_content"
android:text="go"
android:textsize="20sp" />
</linearlayout>
</linearlayout>
android代碼(handler的運用),httpurlconnection的應用,将url圖檔位址轉換成圖檔。
package com.itheim28.submitdata;
import java.io.inputstream;
import java.net.httpurlconnection;
import java.net.url;
import android.app.activity;
import android.graphics.bitmap;
import android.graphics.bitmapfactory;
import android.os.bundle;
import android.os.handler;
import android.os.message;
import android.util.log;
import android.view.view;
import android.view.view.onclicklistener;
import android.widget.edittext;
import android.widget.imageview;
import android.widget.toast;
public class mainactivity extends activity implements onclicklistener {
private static final string tag = "mainactivity";
protected static final int error = 1;
private edittext eturl;
private imageview ivicon;
private final int success = 0;
private handler handler = new handler() {
public void handlemessage(message msg) {
super.handlemessage(msg);
log.i(tag, "what = " + msg.what);
if (msg.what == success) {
ivicon.setimagebitmap((bitmap)msg.obj);
} else if (msg.what == error) {
toast.maketext(mainactivity.this, "抓起失敗", 0).show();
}
}
};
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
ivicon = (imageview) findviewbyid(r.id.iv_icon);
eturl = (edittext) findviewbyid(r.id.et_url);
findviewbyid(r.id.btn_submit).setonclicklistener(this);
}
public void onclick(view v) {
final string url = eturl.gettext().tostring();
new thread(new runnable() {
@override
public void run() {
bitmap bitmap = getimagefromnet(url);
// ivicon.setimagebitmap(bitmap); // 設定imageview顯示的圖檔
if(bitmap != null) {
message msg = new message();
msg.what = success;
msg.obj = bitmap;
handler.sendmessage(msg);
} else {
msg.what = error;
}
}}).start();
/**
* 根據url連接配接取網絡抓去圖檔傳回
* @param url
* @return url對應的圖檔
*/
private bitmap getimagefromnet(string url) {
httpurlconnection conn = null;
try {
url murl = new url(url); // 建立一個url對象
// 得到http的連接配接對象
conn = (httpurlconnection) murl.openconnection();
conn.setrequestmethod("get"); // 設定請求方法為get
conn.setconnecttimeout(10000); // 設定連接配接伺服器的逾時時間, 如果超過10秒鐘, 沒有連接配接成功, 會抛異常
conn.setreadtimeout(5000); // 設定讀取資料時逾時時間, 如果超過5秒, 抛異常
conn.connect(); // 開始連結
int responsecode = conn.getresponsecode(); // 得到伺服器的響應碼
if(responsecode == 200) {
// 通路成功
inputstream is = conn.getinputstream(); // 獲得伺服器傳回的流資料
bitmap bitmap = bitmapfactory.decodestream(is); // 根據 流資料 建立一個bitmap位圖對象
return bitmap;
} else {
log.i(tag, "通路失敗: responsecode = " + responsecode);
} catch (exception e) {
e.printstacktrace();
} finally {
if(conn != null) {
conn.disconnect(); // 斷開連接配接
return null;
}