图片加载框架四大之一Picasso 加载 Https 图片的那些套路
2017-04-22 20:21
387 查看
Picasso
废话少说直接上代码
compile ‘com.squareup.picasso:picasso:2.5.2’compile ‘com.squareup.okhttp3:okhttp:3.7.0’
package com.example.qundui.learndemo;
import android.content.Context;
import android.net.Uri;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
import java.io.File;
import android.content.Context;
import android.net.Uri;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
import java.io.File;
/**
* Created by qundui on 2017/4/22.
*/
public class PicassoUtils {
public static void loadImageByurl(String url, Context ctx, ImageView imageView) { Picasso.with(ctx).load(url).into(imageView); } public static void loadImageByRes(int res, Context ctx, ImageView imageView) { Picasso.with(ctx).load(res).into(imageView); } public static void loadImageByFile(Context ctx, ImageView iv, File file) { Picasso .with(ctx) .load(file) .into(iv); } public static void loadImageByURI(Context ctx, ImageView iv, int res) { Uri uri = resourceIdToUri(ctx, res); Picasso .with(ctx) .load(uri) .into(iv); } public static final String ANDROID_RESOURCE = "android.resource://"; public static final String FOREWARD_SLASH = "/"; private static Uri resourceIdToUri(Context context, int resourceId) { return Uri.parse(ANDROID_RESOURCE + context.getPackageName() + FOREWARD_SLASH + resourceId); }
}
package com.example.qundui.learndemo;
import android.net.Uri;
import com.squareup.picasso.Downloader;
import com.squareup.picasso.NetworkPolicy;
import java.io.IOException;
import okhttp3.Cache;
import okhttp3.CacheControl;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.ResponseBody;
/**
* Created by qundui on 2017/4/22.
*/
public class ImageDownLoader implements Downloader {
OkHttpClient client = null;
public ImageDownLoader(OkHttpClient client) {
this.client = client;
}
@Override
public Response load(Uri uri, int networkPolicy) throws IOException {
CacheControl cacheControl = null; if (networkPolicy != 0) { if (NetworkPolicy.isOfflineOnly(networkPolicy)) { cacheControl = CacheControl.FORCE_CACHE; } else { CacheControl.Builder builder = new CacheControl.Builder(); if (!NetworkPolicy.shouldReadFromDiskCache(networkPolicy)) { builder.noCache(); } if (!NetworkPolicy.shouldWriteToDiskCache(networkPolicy)) { builder.noStore(); } cacheControl = builder.build(); } } Request.Builder builder = new Request.Builder().url(uri.toString()); if (cacheControl != null) { builder.cacheControl(cacheControl); } okhttp3.Response response = client.newCall(builder.build()).execute(); int responseCode = response.code(); if (responseCode >= 300) { response.body().close(); throw new ResponseException(responseCode + " " + response.message(), networkPolicy, responseCode); } boolean fromCache = response.cacheResponse() != null; ResponseBody responseBody = response.body(); return new Response(responseBody.byteStream(), fromCache, responseBody.contentLength()); } @Override public void shutdown() { Cache cache = client.cache(); if (cache != null) { try { cache.close(); } catch (IOException ignored) { } } }
}
package com.example.qundui.learndemo;
import android.app.Application;
import android.net.wifi.WifiConfiguration;
import com.squareup.picasso.Picasso;
import java.util.Collections;
import okhttp3.OkHttpClient;
import okhttp3.Protocol;
/**
* Created by qundui on 2017/4/22.
*/
public class Myapp extends Application {
@Override
public void onCreate() {
super.onCreate();
OkHttpClient client = new OkHttpClient.Builder()
.protocols(Collections.singletonList(Protocol.HTTP_1_1))
.build();
Picasso.setSingletonInstance(new Picasso.Builder(this).
downloader(new ImageDownLoader(client)).loggingEnabled(true)
.build());
}
}
package com.example.qundui.learndemo;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import com.squareup.picasso.Picasso;
/**
* Created by qundui on 2017/4/22.
*/
public class Pictest extends Activity {
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pic_test);
iv= (ImageView) findViewById(R.id.iv);
}
public void getPic(View view){
String url=”https://bmc.huochexia.com/qundui-manager/userfiles/9a29fe156da64c66adf862f912f0eeaf/images/banner/2016/12/QQ图片20161219175344.png”;
// Picasso.with(this).setLoggingEnabled(true);
// Picasso.with(this).load(url).into(iv);
PicassoUtils.loadImageByurl(url,this,iv);
}
}
相关文章推荐
- 四大图片加载框架之最 old ImageLoader , 但是有些老项目还在用的!加载 https
- 图片加载框架——Picasso
- 图片加载框架Picasso解析
- 主流图片加载框架ImageLoader、Glide、Picasso、Fresco性能分析---图片加载速度比较
- Picasso图片框架加载图片 使用及缓存问题
- Android图片加载框架Picasso
- Android四大图片缓存框架之-Picasso和Glide
- Android框架 加载图片 库 Picasso 的使用简介
- 主流图片加载框架ImageLoader、Glide、Picasso、Fresco性能分析---内存占用比较
- Android开源框架——图片加载与缓存库 Picasso
- Android开发之图片加载缓存框架Picasso的领教
- Android图片加载框架:ImageLoader,Volley,Picasso,Glide,Fresco
- Android图片加载框架Picasso最全使用教程 一
- 网络图片加载框架Universal-ImageLoader和Picasso优缺点对比
- 图片加载框架Picasso的使用
- 图片加载框架之Picasso
- Android图片加载框架Picasso最全使用教程 二
- Android图片加载框架Picasso最全使用教程 三
- 图片加载框架-Picasso
- Picasso 框架的简单使用 图片缓存 重用 和加载 裁剪