package com.liang.netpicture;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
public class MainActivity extends ActionBarActivity {
ImageView iv_main;
private final int SUCCESS=0;
private final int ERROR=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iv_main = (ImageView) findViewById(R.id.iv_main);
//handler接受消息
final Handler handler=new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what==SUCCESS){
iv_main.setImageBitmap((Bitmap) msg.obj);
}else{
Toast.makeText(MainActivity.this,"抓取失败",Toast.LENGTH_SHORT).show();
}
}
};
//耗时操作都需要在子线程中完成,并且不能在子线程中更改UI线程的组件状态,需使用Handler进行线程通信
new Thread(new Runnable() {
@Override
public void run() {
Bitmap bitmap = getNetPicture();
Message msg=new Message();
if(bitmap!=null){
msg.what=SUCCESS;
msg.obj=bitmap;
}else{
msg.what=ERROR;
}
handler.sendMessage(msg);
}
}).start();
}
private Bitmap getNetPicture() {
Bitmap bitmap=null;
int responseCode = 0;
InputStream is = null;
try {
URL url = new URL("http://f.hiphotos.baidu.com/image/pic/item/3801213fb80e7beca9bfb6e02d2eb9389b506b4e.jpg");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(10 * 1000);
conn.setReadTimeout(5 * 1000);
conn.connect();
responseCode = conn.getResponseCode();
if (responseCode == 200) {
is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
}
} catch (IOException e) {
Log.i("test", "访问失败:" + responseCode);
e.printStackTrace();
} finally {
if (is != null)
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return bitmap;
}
}
需要在清单文件中加入
<!-- 访问网络的权限 -->
<uses-permission android:name="android.permission.INTERNET"/>