Android使用okHttp(get方式)下載圖片
一、首先下載Jar包
https://github.com/square/okhttp
如果使用android studio只需要加入依賴compile 'com.squareup.okhttp3:okhttp:3.2.0'
二、下載一張圖片并顯示
使用的是hanlder的方式
package com.liunan.okhttpdemo2;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import okhttp3.ResponseBody;
public class MainActivity extends AppCompatActivity {
private static final int ERROR = 1;
private static final int SUCCESS = 2 ;
private String url = "http://192.168.1.102:8080/img/a.jpg";
private ImageView mIv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
switch (msg.what){
case SUCCESS:
mIv.setImageBitmap((Bitmap) msg.obj);
break;
case ERROR:
Toast.makeText(MainActivity.this, "請(qǐng)求超時(shí)", Toast.LENGTH_SHORT).show();
break;
}
}
};
/**
* 初始化 組件
*/
private void initView() {
mIv = (ImageView) findViewById(R.id.main_iv);
}
/**
* 點(diǎn)擊獲取圖片
*/
public void getPic(View v){
new Thread(){
@Override
public void run() {
//獲取okHttp對(duì)象get請(qǐng)求,
try {
OkHttpClient client = new OkHttpClient();
//獲取請(qǐng)求對(duì)象
Request request = new Request.Builder().url(url).build();
//獲取響應(yīng)體
ResponseBody body = client.newCall(request).execute().body();
//獲取流
InputStream in = body.byteStream();
//轉(zhuǎn)化為bitmap
Bitmap bitmap = BitmapFactory.decodeStream(in);
//使用Hanlder發(fā)送消息
Message msg = Message.obtain();
msg.what = SUCCESS;
msg.obj = bitmap;
handler.sendMessage(msg);
} catch (IOException e) {
e.printStackTrace();
//失敗
Message msg = Message.obtain();
msg.what = ERROR;
handler.sendMessage(msg);
}
}
}.start();
}
}
也可以把網(wǎng)絡(luò)請(qǐng)求寫(xiě)為一個(gè)工具類,
package com.liunan.okhttpdemo2;
import java.io.IOException;
import java.io.InputStream;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
/**
* Created by 劉楠 on 2016-03-27.
*/
public class OkHttpUtils {
OkHttpClient client = new OkHttpClient();
/**
* 獲取流
* @param url 請(qǐng)求地址
* @return 輸入流
*/
public InputStream getInpuStream(String url) throws IOException {
//設(shè)置 請(qǐng)求
Request request = new Request.Builder()
.url(url).build();
//獲取行響應(yīng)
InputStream in = client.newCall(request).execute().body().byteStream();
return in;
}
/**
* 返回字符串
* @param url
* @return 返回字符串
* @throws IOException
*/
public String getString(String url) throws IOException {
//設(shè)置 請(qǐng)求
Request request = new Request.Builder()
.url(url).build();
//獲取行響應(yīng)
Response response = client.newCall(request).execute();
return response.body().string();
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 控件(button)對(duì)齊方法實(shí)現(xiàn)詳解
horizontal是讓所有的子元素按水平方向從左到右排列,vertical是讓所有的子元素按豎直方向從上到下排列,下面為大家介紹下控件(button)的對(duì)齊方法2013-06-06
詳解Android開(kāi)發(fā)中ContentObserver類的使用
這篇文章主要介紹了詳解Android開(kāi)發(fā)中ContentObserver類的使用,ContentObserver內(nèi)容觀察者主要用來(lái)監(jiān)聽(tīng)uri的改變請(qǐng)情況,需要的朋友可以參考下2016-04-04
Android開(kāi)發(fā)之ViewFlipper自動(dòng)播放圖片功能實(shí)現(xiàn)方法示例
這篇文章主要介紹了Android開(kāi)發(fā)之ViewFlipper自動(dòng)播放圖片功能實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Android使用ViewFlipper實(shí)現(xiàn)圖片播放的相關(guān)界面布局及功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-03-03
Android實(shí)現(xiàn)炫酷的CheckBox效果
大家是不是對(duì)系統(tǒng)自帶的CheckBox產(chǎn)生乏味感了呢?今天這篇文章給大家?guī)?lái)的是一款全新的CheckBox,下面來(lái)一起看看下面的CheckBox吧!有需要的朋友們可以參考借鑒。2016-10-10
Android使用WebView實(shí)現(xiàn)離線閱讀功能
這篇文章主要介紹了Android使用WebView實(shí)現(xiàn)離線閱讀功能,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
Android實(shí)現(xiàn)左右擺動(dòng)的球體動(dòng)畫(huà)效果
這篇文章主要介紹了Android實(shí)現(xiàn)左右擺動(dòng)的球體動(dòng)畫(huà)效果,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09
Android開(kāi)發(fā)仿掃一掃實(shí)現(xiàn)拍攝框內(nèi)的照片功能
無(wú)論是微信還是支付寶掃一掃功能很常用,那么它基于代碼是如何實(shí)現(xiàn)的呢?今天小編給大家分享android開(kāi)發(fā)之仿掃一掃實(shí)現(xiàn)拍攝框內(nèi)的照片功能,感興趣的朋友一起學(xué)習(xí)吧2016-09-09
Android實(shí)現(xiàn)聯(lián)動(dòng)下拉框 下拉列表spinner的實(shí)例代碼
這篇文章介紹了Android實(shí)現(xiàn)聯(lián)動(dòng)下拉框 下拉列表spinner的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10
Android中再按一次退出提醒實(shí)現(xiàn)的兩種方法
今天小編就為大家分享一篇關(guān)于Android中再按一次退出提醒實(shí)現(xiàn)的兩種方法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-04-04

