package com.juns.wechat.net; import java.io.File; import android.app.ActivityManager; import android.content.Context; import android.graphics.Bitmap; import android.widget.ImageView; import com.juns.health.net.loopj.android.http.AsyncHttpClient; import com.juns.health.net.loopj.android.http.JsonHttpResponseHandler; import com.juns.health.net.loopj.android.http.RequestParams; import com.juns.wechat.App; import com.juns.wechat.Constants; import com.juns.wechat.R; import com.juns.wechat.common.NetUtil; import com.juns.wechat.common.Utils; import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache; import com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache; import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; import com.nostra13.universalimageloader.core.assist.ImageLoadingListener; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.assist.QueueProcessingType; import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer; import com.nostra13.universalimageloader.core.display.SimpleBitmapDisplayer; public class NetClient { private static Context context; // http 请求 private AsyncHttpClient client; // 超时时间 private int TIMEOUT = 20000; // 图片加载类 private static ImageLoader mImageLoader; private static DisplayImageOptions binner_options; private static DisplayImageOptions icon_options; private static DisplayImageOptions user_icon_options; private static DisplayImageOptions girl_options; // Imageload缓存目录 private static File cacheDir = new File(App.getHJYCacheDir() + "/Imageload"); public NetClient(Context context) { NetClient.context = context; client = new AsyncHttpClient(); client.setTimeout(TIMEOUT); } static { ActivityManager am = (ActivityManager) App.getInstance() .getSystemService(Context.ACTIVITY_SERVICE); int memClass = am.getMemoryClass(); int cacheSize = 1024 * 1024 * memClass / 4; // 硬引用缓存容量,为系统可用内存的1/4 binner_options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.large_logo_default_4) // resource // or .showImageForEmptyUri(R.drawable.large_logo_default_4) // resource .showImageOnFail(R.drawable.large_logo_default_4) // resource or .cacheInMemory(false) // default .cacheOnDisc(true) // default .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default .bitmapConfig(Bitmap.Config.ARGB_8888) // default .displayer(new SimpleBitmapDisplayer()) // default .build(); icon_options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.head) // resource // or .showImageForEmptyUri(R.drawable.head) // resource .showImageOnFail(R.drawable.head) // resource or .cacheInMemory(true) // default .cacheOnDisc(true) // default .imageScaleType(ImageScaleType.IN_SAMPLE_POWER_OF_2) // default .bitmapConfig(Bitmap.Config.ARGB_8888) // default .displayer(new RoundedBitmapDisplayer(50)) // default .build(); user_icon_options = new DisplayImageOptions.Builder() .showImageOnLoading(R.drawable.head) // resource .showImageForEmptyUri(R.drawable.head) // resource .showImageOnFail(R.drawable.head) // resource .cacheInMemory(true) // default .cacheOnDisc(true) // default .imageScaleType(ImageScaleType.NONE) // default .bitmapConfig(Bitmap.Config.ARGB_8888) // default .displayer(new SimpleBitmapDisplayer()) // default .build(); ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder( App.getInstance()).threadPoolSize(10) .threadPriority(Thread.NORM_PRIORITY + 1) .tasksProcessingOrder(QueueProcessingType.FIFO) .denyCacheImageMultipleSizesInMemory() .memoryCache(new LruMemoryCache(cacheSize)) .memoryCacheSize(cacheSize) .discCache(new UnlimitedDiscCache(cacheDir)) .discCacheSize(30 * 1024 * 1024).discCacheFileCount(500) .writeDebugLogs().build(); mImageLoader = ImageLoader.getInstance(); mImageLoader.init(config); } /** * 根据url获取小图片 并自动设置到imageview中 获取的图片保存到内存(切勿加载大图) * * @param img * @param url */ public static void getIconBitmap(ImageView view, String url) { mImageLoader.displayImage(url, view, icon_options); } /** * 根据url获取大图片 并自动设置到imageview中 获取的图片不保存到内存 * * @param img * @param url */ public static void getBinnerBitmap(ImageView imageView, String url) { mImageLoader.displayImage(url, imageView, binner_options); } public static void getGirlBitmap(ImageView imageView, String url) { mImageLoader.displayImage(url, imageView, girl_options); } public static void getBinnerBitmap(String url, ImageLoadingListener listener) { mImageLoader.loadImage(url, listener); } /** * 根据url获取大图片 并自动设置到imageview中 获取的图片不保存到内存 * * @param img * @param url */ public static void getHalfHeightBitmap(ImageView imageView, String uri, ImageLoadingListener lister) { mImageLoader.displayImage(uri, imageView, binner_options, lister); } /** * get方式请求调用方法 返回格式均为json对象 返回为json * * @param url * 请求URL * @param params * 请求参数 可以为空 * @param res * 必须实现此类 处理成功失败等 回调 */ public void get(String url, RequestParams params, final JsonHttpResponseHandler res) { if (!NetUtil.checkNetWork(context)) { Utils.showLongToast(context, Constants.NET_ERROR); return; } try { if (params != null) // 带请求参数 获取json对象 client.get(url, params, res); else // 不请求参数 获取json对象 client.get(url, res); } catch (Exception e) { // TODO e.printStackTrace(); } } /** * json post方式请求调用方法 返回为json * * @param url * 请求地址 * @param params * 请求参数 可以为空 * @param res * 必须实现此类 处理成功失败等 回调 */ public void post(String url, RequestParams params, final JsonHttpResponseHandler res) { System.out.println("请求URL:" + url); if (!NetUtil.checkNetWork(context)) { Utils.showLongToast(context, Constants.NET_ERROR); return; } try { if (params != null) { client.post(url, params, res); } else { client.post(url, res); } } catch (Exception e) { // TODO e.printStackTrace(); } } }