效果图以下:
前提:在添加了网络权限及导入了okhttp,okio两个jar包后开始操做,老规矩,在最后有源码。
1.定义一个handler为全局变量,并将其实例化。
2.实例化一个0khttp,传入网址,实例化一个call的对象{其中有2个方法,在onResponse方法中声明一个传递信息的Message,而后再进行判断,并将数据传出去}。
3.回到第一步,将指令和消息放入,并加载图片。
必定要记得加网络权限java
<uses-permission android:name="android.permission.INTERNET" />**
最后代码以下:
布局代码:就一个图片控件android
<ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" />
java文件web
public class MainActivity extends Activity { private ImageView imageView; private Handler handler; private String URL="https://www.baidu.com/img/bd_logo1.png";//百度首页图片地址 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); handler=new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { switch (msg.what){ case 1://成功 byte[]result= (byte[]) msg.obj; Bitmap bitmap=BitmapFactory.decodeByteArray(result,0,result.length);//利用BitmapFactory将数据转换成bitmap类型 imageView.setImageBitmap(bitmap);//加载图片 } return false; } }); OkHttpClient client=new OkHttpClient();//实例化 final Request request = new Request.Builder().url(URL).build(); //传入图片网址,,URL为本身定义好的网址。 client.newCall(request).enqueue(new Callback() {//实例化一个call的对象 @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { Message message=handler.obtainMessage();//声明一个传递信息的Message if (response.isSuccessful()){//成功 Log.e("YF", "onResponse: "+"YES" );//一个log,能够不写 message.what=1; //设置成功的指令为1 message.obj=response.body().bytes();//带入图片的数据 handler.sendMessage(message);//将指令和数据传出去 }else{//失败 Log.e("YF", "onResponse: "+"NO" );//一个log,能够不写 handler.sendEmptyMessage(0);//设置其余指令为零,而后进入handler } } }); } private void initView() { imageView = (ImageView) findViewById(R.id.imageView); } }
本文同步分享在 博客“计蒙不吃鱼”(CSDN)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。网络