// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/config/PicassoConfigFactory.java
// public class PicassoConfigFactory {
//     private static Picasso sPicasso;
// 
//     public static Picasso getPicasso(Context context) {
//         if (sPicasso == null) {
//             sPicasso = new Picasso.Builder(context)
//                     //硬盘缓存池大小
//                     .downloader(new OkHttpDownloader(context, ConfigConstants.MAX_CACHE_DISK_SIZE))
//                     //内存缓存池大小
//                     .memoryCache(new LruCache(ConfigConstants.MAX_CACHE_MEMORY_SIZE))
// //                    .defaultBitmapConfig(Bitmap.Config.ARGB_4444)
//                     .build();
//         }
//         return sPicasso;
//     }
// }
// 
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/holders/PicassoHolder.java
// public class PicassoHolder extends BaseHolder {
//     private final Picasso mPicasso;
// 
//     public PicassoHolder(ImageView imageView, WatchListener watchListener, View parentView, Context context, Picasso picasso) {
//         super(imageView, watchListener, parentView, context);
//         mPicasso = picasso;
//     }
// 
//     @Override
//     protected void onBind(String url) {
//         mPicasso.load(url)
//                 .placeholder(Drawables.sPlaceholderDrawable)
//                 .error(Drawables.sErrorDrawable)
// //                .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)//不使用内存缓存
// //                .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)//不使用磁盘缓存
// //                .fit()
// 
//                 .into(mImageView);
//     }
// }
// 
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/watcher/WatchImageView.java
// public class WatchImageView extends ImageView implements WatchInterface {
//     private final WatchImpl mWatcher;
// 
//     public WatchImageView(Context context) {
//         super(context);
//         //设置图片填充样式为按比例填满控件
//         setScaleType(ScaleType.CENTER_CROP);
//         mWatcher = new WatchImpl(this);
//     }
// 
// 
//     @Override
//     protected void onDraw(Canvas canvas) {
//         super.onDraw(canvas);
//         //绘制结果会用到，通过mWatcher转发
//         mWatcher.onDraw(canvas);
//     }
// 
// //    禁用这个方法，防止框架使用它显示图片，影响我们测试显示
//     @Override
//     public void setImageURI(Uri uri) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public void initWatcher(String tag, WatchListener watchListener) {
//         mWatcher.init(tag, watchListener);
//         mWatcher.onStart(); //初始化
//     }
// 
//     @Override
//     public void setImageDrawable(Drawable drawable) {
// 
//         Preconditions.checkNotNull(drawable);
//         if (drawable == Drawables.sPlaceholderDrawable) {
//             //不再这里调用，在初始化加载器，Glide.build()实现调用更好
//         } else if (drawable == Drawables.sErrorDrawable) {
//             mWatcher.onFailure();//加载失败
//         } else {
//             mWatcher.onSuccess();//加载成功
//         }
//         super.setImageDrawable(drawable);
//     }
// }
// 
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/watcher/WatchListener.java
// public class WatchListener {
//     private long mRequestTotalTime;
//     private long mStartRequests;
//     private long mSuccessedRequests;
//     private long mFailedRequests;
//     private long mCancelledRequests;
// 
//     public void reportSuccess(long requestTime) {
//         mRequestTotalTime += requestTime;
//         mSuccessedRequests++;
//     }
// 
//     public void initData() {
//         mRequestTotalTime = 0;
//         mStartRequests = 0;
//         mSuccessedRequests = 0;
//         mFailedRequests = 0;
//         mCancelledRequests = 0;
//     }
// 
//     public void reportStart() {
//         mStartRequests++;
//     }
// 
//     public void reportCancelltion(long requestTime) {
//         mCancelledRequests++;
//         mRequestTotalTime += requestTime;
//     }
// 
//     public void reportFailure(long requestTime) {
//         mFailedRequests++;
//         mRequestTotalTime += requestTime;
//     }
// 
// 
//     public long getAverageRequestTime() {
//         final long completedRequests = getCompletedRequests();
//         return completedRequests > 0 ? mRequestTotalTime / completedRequests : 0;
//     }
// 
//     public long getCancelledRequests() {
//         return mCancelledRequests;
//     }
// 
//     public long getCompletedRequests() {
//         return mSuccessedRequests + mCancelledRequests + mFailedRequests;
//     }
// 
//     public long getTotalRequests() {
//         return mStartRequests;
//     }
// }


import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import com.example.imageloadpk.adapter.config.PicassoConfigFactory;
import com.example.imageloadpk.adapter.holders.PicassoHolder;
import com.example.imageloadpk.adapter.watcher.WatchImageView;
import com.example.imageloadpk.adapter.watcher.WatchListener;
import com.squareup.picasso.Picasso;
package com.example.imageloadpk.adapter.adapters;



/**
 * Created by Administrator on 2016/7/4.
 */
public class PicassoAdapter extends ImageListAdapter {
    private Picasso mPicasso;

    public PicassoAdapter(Context context, WatchListener watchListener) {
        super(context, watchListener);
        if (mPicasso == null) {
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/config/PicassoConfigFactory.java
// public class PicassoConfigFactory {
//     private static Picasso sPicasso;
// 
//     public static Picasso getPicasso(Context context) {
//         if (sPicasso == null) {
//             sPicasso = new Picasso.Builder(context)
//                     //硬盘缓存池大小
//                     .downloader(new OkHttpDownloader(context, ConfigConstants.MAX_CACHE_DISK_SIZE))
//                     //内存缓存池大小
//                     .memoryCache(new LruCache(ConfigConstants.MAX_CACHE_MEMORY_SIZE))
// //                    .defaultBitmapConfig(Bitmap.Config.ARGB_4444)
//                     .build();
//         }
//         return sPicasso;
//     }
// }
// 
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/holders/PicassoHolder.java
// public class PicassoHolder extends BaseHolder {
//     private final Picasso mPicasso;
// 
//     public PicassoHolder(ImageView imageView, WatchListener watchListener, View parentView, Context context, Picasso picasso) {
//         super(imageView, watchListener, parentView, context);
//         mPicasso = picasso;
//     }
// 
//     @Override
//     protected void onBind(String url) {
//         mPicasso.load(url)
//                 .placeholder(Drawables.sPlaceholderDrawable)
//                 .error(Drawables.sErrorDrawable)
// //                .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)//不使用内存缓存
// //                .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)//不使用磁盘缓存
// //                .fit()
// 
//                 .into(mImageView);
//     }
// }
// 
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/watcher/WatchImageView.java
// public class WatchImageView extends ImageView implements WatchInterface {
//     private final WatchImpl mWatcher;
// 
//     public WatchImageView(Context context) {
//         super(context);
//         //设置图片填充样式为按比例填满控件
//         setScaleType(ScaleType.CENTER_CROP);
//         mWatcher = new WatchImpl(this);
//     }
// 
// 
//     @Override
//     protected void onDraw(Canvas canvas) {
//         super.onDraw(canvas);
//         //绘制结果会用到，通过mWatcher转发
//         mWatcher.onDraw(canvas);
//     }
// 
// //    禁用这个方法，防止框架使用它显示图片，影响我们测试显示
//     @Override
//     public void setImageURI(Uri uri) {
//         throw new UnsupportedOperationException();
//     }
// 
//     @Override
//     public void initWatcher(String tag, WatchListener watchListener) {
//         mWatcher.init(tag, watchListener);
//         mWatcher.onStart(); //初始化
//     }
// 
//     @Override
//     public void setImageDrawable(Drawable drawable) {
// 
//         Preconditions.checkNotNull(drawable);
//         if (drawable == Drawables.sPlaceholderDrawable) {
//             //不再这里调用，在初始化加载器，Glide.build()实现调用更好
//         } else if (drawable == Drawables.sErrorDrawable) {
//             mWatcher.onFailure();//加载失败
//         } else {
//             mWatcher.onSuccess();//加载成功
//         }
//         super.setImageDrawable(drawable);
//     }
// }
// 
// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/watcher/WatchListener.java
// public class WatchListener {
//     private long mRequestTotalTime;
//     private long mStartRequests;
//     private long mSuccessedRequests;
//     private long mFailedRequests;
//     private long mCancelledRequests;
// 
//     public void reportSuccess(long requestTime) {
//         mRequestTotalTime += requestTime;
//         mSuccessedRequests++;
//     }
// 
//     public void initData() {
//         mRequestTotalTime = 0;
//         mStartRequests = 0;
//         mSuccessedRequests = 0;
//         mFailedRequests = 0;
//         mCancelledRequests = 0;
//     }
// 
//     public void reportStart() {
//         mStartRequests++;
//     }
// 
//     public void reportCancelltion(long requestTime) {
//         mCancelledRequests++;
//         mRequestTotalTime += requestTime;
//     }
// 
//     public void reportFailure(long requestTime) {
//         mFailedRequests++;
//         mRequestTotalTime += requestTime;
//     }
// 
// 
//     public long getAverageRequestTime() {
//         final long completedRequests = getCompletedRequests();
//         return completedRequests > 0 ? mRequestTotalTime / completedRequests : 0;
//     }
// 
//     public long getCancelledRequests() {
//         return mCancelledRequests;
//     }
// 
//     public long getCompletedRequests() {
//         return mSuccessedRequests + mCancelledRequests + mFailedRequests;
//     }
// 
//     public long getTotalRequests() {
//         return mStartRequests;
//     }
// }


// Path: imageloadpk/src/main/java/com/example/imageloadpk/adapter/adapters/PicassoAdapter.java
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.ViewGroup;
import com.example.imageloadpk.adapter.config.PicassoConfigFactory;
import com.example.imageloadpk.adapter.holders.PicassoHolder;
import com.example.imageloadpk.adapter.watcher.WatchImageView;
import com.example.imageloadpk.adapter.watcher.WatchListener;
import com.squareup.picasso.Picasso;

package com.example.imageloadpk.adapter.adapters;



/**
 * Created by Administrator on 2016/7/4.
 */
public class PicassoAdapter extends ImageListAdapter {
    private Picasso mPicasso;

    public PicassoAdapter(Context context, WatchListener watchListener) {
        super(context, watchListener);
        if (mPicasso == null) {
            mPicasso = PicassoConfigFactory.getPicasso(context);