Android学习笔记02——OKHttp网络框架01
来源:互联网 发布:淘宝天天特价规则 编辑:程序博客网 时间:2024/06/05 04:22
使用OKhttp框架实现图片下载的功能
(1) 首先在AndroidMainfest.xml文件添加网络授权:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
(2) 在布局文件中添加一个Button和ImageView。
(3) 在MainActivity.java中用findViewById的方法获取Button和ImageView的id。
(4) 从网上找到一个图片的网址,并用String字符串保存
private String image_path = "http://avatar.csdn.net/C/7/B/1_xin93.jpg";(5)将Handler的初步结构实现。
Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); } };
(5) 在Build.gradle文件下的dependencies{ }下添加
compile 'com.squareup.okhttp3:okhttp:3.+'compile 'com.squareup.picasso:picasso:2.5.2'
(6) 使用get请求方法获取图片信息
Request request = new Request.Builder().url(image_path).build();(7) 在Button的监听函数onClick函数中。将request传入client,加入队列,将Message发送到Handler
(8) 在Handler处理接收到的message。
MainActivity.java文件如下:
import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.Image;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.telecom.Call;import android.view.View;import android.widget.Button;import android.widget.ImageView;import java.io.IOException;import java.security.acl.AclEntry;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class MainActivity extends AppCompatActivity { private Button button; private ImageView imageView; private final static int SUCCESS_STATUS = 1; private final static int FAIL_STATUS = 0; private String image_path = "http://avatar.csdn.net/C/7/B/1_xin93.jpg"; OkHttpClient client; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case SUCCESS_STATUS: byte[] result = (byte[])msg.obj; Bitmap bitmap = BitmapFactory.decodeByteArray(result,0,result.length); imageView.setImageBitmap(bitmap); break; case FAIL_STATUS: break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button)findViewById(R.id.button); imageView = (ImageView)findViewById(R.id.imageView); client = new OkHttpClient(); //使用get请求方法 final Request request = new Request.Builder().url(image_path).build(); button.setOnClickListener(new View.OnClickListener(){ @Override public void onClick(View view) { client.newCall(request).enqueue(new Callback() { @Override public void onFailure(okhttp3.Call call, IOException e) { e.printStackTrace(); } @Override public void onResponse(okhttp3.Call call, Response response) throws IOException { Message message = new Message(); if(response.isSuccessful()){ message.what = SUCCESS_STATUS; message.obj = response.body().bytes(); handler.sendMessage(message); } else{ handler.sendEmptyMessage(FAIL_STATUS); } } }); } }); }}
运行结果:
0 0
- Android学习笔记02——OKHttp网络框架01
- Android框架学习笔记01Okhttp框架
- okhttp,Android网络框架学习之OKHttp
- Android 网络框架OKHttp学习
- okhttp学习笔记--网络框架封装
- Android 网络框架学习之OKHttp
- android 网络框架学习(okhttp,retrofit,rxjava)
- Android网络框架学习之OkHttp
- Android ——网络请求框架OkHttp使用
- Android网络请求框架—OKHttp 源码解析
- Android 开发框架之okhttp 网络框架的学习
- Android OkHttp 框架学习
- android 网络框架解析--OKHttp
- Android网络框架-OkHttp使用
- Android网络框架-OkHttp使用
- Android网络框架OKHttp初解
- Android 的OkHttp 网络请求框架的学习封装
- android网络请求框架的学习之路——浅谈对Volley,OkHttp,Retrofit的了解与对比
- 欢迎使用CSDN-markdown编辑器
- RPC框架-Thrift的使用
- sublime 插件
- Hdu 5316 Magician (线段树区间合并)
- mac terminal终端打开指定文件夹 当前文件夹打开terminal
- Android学习笔记02——OKHttp网络框架01
- 欢迎使用CSDN-markdown编辑器
- PAT乙级练习题B1038. 统计同成绩学生
- ATOM基础教程一ATOM代码片段snippets(7)
- yii 框架用swiftmailer 发送邮件
- 约瑟夫环问题
- ccnuacm
- 在linux编程中,以下哪个TCP的套接字选项与nagle算法的开启和关闭有关?----腾讯2016研发工程师在线模拟笔试题
- 指定多个泛型类型