您的位置:首页 > 理论基础 > 计算机网络

访问网络图片

2015-07-02 11:06 519 查看
public class MainActivity extends Activity implements OnClickListener {
EditText imgsrc;
ImageView image;
private final int SUSSCE = 0;
private final int ERROR = 1;
private Handler han = new Handler() {
//定义消息handler
@Override
public void handleMessage(Message msg) {
if (msg.what == SUSSCE) {
image.setImageBitmap((Bitmap) msg.obj);
}
}

};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
image = (ImageView) findViewById(R.id.image);
imgsrc = (EditText) findViewById(R.id.imgsrc);
findViewById(R.id.butgo).setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
final String url = imgsrc.getText().toString();
new Thread(new Runnable() {

@Override
public void run() {
Bitmap bit = GetImageByNet(url);
// image.setImageBitmap(bit);
if (bit != null) {
Message msg = new Message();
msg.what = SUSSCE;// 标记 发送
msg.obj = bit;//主要是在子线程中无法操作ui线程中的东西 所以要把子线程要返回的值定义为message返回到主线程定义的handler中 在进行操作
han.sendMessage(msg);
} else {
Message msg = new Message();
msg.what = ERROR;//
han.sendMessage(msg);
}

}
}).start();

}

/**
* 根据url获取图片
*
* @param url
*            url
* @return url获取的图片
*/
private Bitmap GetImageByNet(String url) {
HttpURLConnection conn = null;
try {
URL myUrl = new URL(url);// 创建一个url对象
// 得到https的对象
conn = (HttpURLConnection) myUrl.openConnection();
conn.setRequestMethod("GET");// 设置请求方式
conn.setConnectTimeout(10000);// 设置连接服务器超时时间,如果大于十 就抛异常
conn.setReadTimeout(5000);// 设置读数据超时时间 大于5秒就报异常
int responseCode = conn.getResponseCode();// 得到响应码
if (responseCode == 200) {
// 访问成功
InputStream is = conn.getInputStream();
Bitmap bitmap = BitmapFactory.decodeStream(is);
return bitmap;
} else {
android.util.Log.i("coauzo", "访问失败响应码:" + responseCode);
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (conn != null) {
conn.disconnect();
}
}
return null;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: