android-- 利用消息机制来获取网络图片。在前面都写到用 AsyncTask 来获取网络中的图片。其实利用消息机制也能获取网络中的图片,而且本人感觉用消息机制还是挺简单的。
消息机制的图解:
下面就用看代码来理解上面的图片。
布局: activity_main.xml
MainActivity.java
- package cn.edu.huse.handle;
- 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.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.widget.ImageView;
- import android.widget.Toast;
- /** * @author Lenovo * */
- public class MainActivity extends Activity {
- protected static final int LOAD_SUCCESS = 0;
- private static final int LOAD_ERROR = 1;
- private ImageView iv_image;
- private Handler mHandler = new Handler() {
- public void handleMessage(Message msg) {
- switch (msg.what) {
- case LOAD_SUCCESS:
- //加载图片成功Bitmap bitmap = (Bitmap) msg.obj; //获取消息里面的数据iv_image.setImageBitmap(bitmap);break;case LOAD_ERROR: //加载失败Toast.makeText(MainActivity.this, "图片加载失败", 0).show();break;}};};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);iv_image = (ImageView) findViewById(R.id.iv_image);}public void getImage(View v){new Thread(new Runnable() {@Overridepublic void run() {String path = "http://pic.92to.com/2c/201704/05/t01666725c7200ad5ae.jpg";try {//1、获取URLURL url = new URL(path);//2、得到连接对象HttpURLConnection conn = (HttpURLConnection) url.openConnection();//设置连接时长conn.setConnectTimeout(5000);//设置请求方式conn.setRequestMethod("GET");//判断是否响应成功if(conn.getResponseCode() == 200){//3、获取输入流InputStream inputStream = conn.getInputStream();//4、获得图片资源BitmapBitmap bitmap = BitmapFactory.decodeStream(inputStream);//消息对象Message msg = new Message();msg.what = LOAD_SUCCESS; //唯一标识msg.obj = bitmap; //消失里面写在的数据mHandler.sendMessage(msg); //发送消失给Handle}else{alertUses();}} catch (Exception e) {e.printStackTrace();alertUses();}}}).start();}/** * 土司提醒用户,图片加载失败 */public void alertUses(){mHandler.sendEmptyMessage(LOAD_ERROR);}}
添加权限:
运行结果:
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/04-05/19962379.html