package me.xiaopan.sketchsample;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import me.xiaopan.sketch.Configuration;
import me.xiaopan.sketch.SLogType;
import me.xiaopan.sketch.SLog;
import me.xiaopan.sketch.Sketch;
import me.xiaopan.sketch.display.TransitionImageDisplayer;
import me.xiaopan.sketch.process.GaussianBlurImageProcessor;
import me.xiaopan.sketch.request.DisplayOptions;
import me.xiaopan.sketch.shaper.CircleImageShaper;
import me.xiaopan.sketch.shaper.RoundRectImageShaper;
import me.xiaopan.sketch.state.DrawableStateImage;
import me.xiaopan.sketch.state.OldStateImage;
import me.xiaopan.sketch.util.SketchUtils;
import me.xiaopan.sketchsample.util.MyImagePreprocessor;
import me.xiaopan.sketchsample.util.Settings;
public class SketchManager {
private Context context;
public SketchManager(Context context) {
this.context = context.getApplicationContext();
}
public void initConfig(Context context) {
SLog.setLogTracker(Settings.getBoolean(context, Settings.PREFERENCE_OUT_LOG_2_SDCARD) ? new SampleLogTracker(context) : null);
SLogType.BASE.setEnabled(Settings.getBoolean(context, Settings.PREFERENCE_LOG_BASE));
SLogType.TIME.setEnabled(Settings.getBoolean(context, Settings.PREFERENCE_LOG_TIME));
SLogType.REQUEST.setEnabled(Settings.getBoolean(context, Settings.PREFERENCE_LOG_REQUEST));
SLogType.CACHE.setEnabled(Settings.getBoolean(context, Settings.PREFERENCE_LOG_CACHE));
SLogType.ZOOM.setEnabled(Settings.getBoolean(context, Settings.PREFERENCE_LOG_ZOOM));
SLogType.LARGE.setEnabled(Settings.getBoolean(context, Settings.PREFERENCE_LOG_LARGE));
Configuration sketchConfiguration = Sketch.with(context).getConfiguration();
sketchConfiguration.setMobileNetworkGlobalPauseDownload(Settings.getBoolean(context, Settings.PREFERENCE_MOBILE_NETWORK_PAUSE_DOWNLOAD));
sketchConfiguration.setGlobalLowQualityImage(Settings.getBoolean(context, Settings.PREFERENCE_GLOBAL_LOW_QUALITY_IMAGE));
sketchConfiguration.setGlobalInPreferQualityOverSpeed(Settings.getBoolean(context, Settings.PREFERENCE_GLOBAL_IN_PREFER_QUALITY_OVER_SPEED));
sketchConfiguration.getDiskCache().setDisabled(Settings.getBoolean(context, Settings.PREFERENCE_GLOBAL_DISABLE_CACHE_IN_DISK));
sketchConfiguration.getBitmapPool().setDisabled(Settings.getBoolean(context, Settings.PREFERENCE_GLOBAL_DISABLE_BITMAP_POOL));
sketchConfiguration.getMemoryCache().setDisabled(Settings.getBoolean(context, Settings.PREFERENCE_GLOBAL_DISABLE_CACHE_IN_MEMORY));
sketchConfiguration.setImagePreprocessor(new MyImagePreprocessor());
sketchConfiguration.setMonitor(new SampleSketchMonitor(context));
}
public void initDisplayOptions() {
TransitionImageDisplayer transitionImageDisplayer = new TransitionImageDisplayer();
Sketch.putOptions(ImageOptions.RECT, new DisplayOptions()
.setLoadingImage(R.drawable.image_loading)
.setErrorImage(R.drawable.image_error)
.setPauseDownloadImage(R.drawable.image_pause_download)
.setImageDisplayer(transitionImageDisplayer)
.setShapeSizeByFixedSize(true));
Sketch.putOptions(ImageOptions.CIRCULAR_STROKE, new DisplayOptions()
.setLoadingImage(R.drawable.image_loading)
.setErrorImage(R.drawable.image_error)
.setPauseDownloadImage(R.drawable.image_pause_download)
.setImageDisplayer(transitionImageDisplayer)
.setImageShaper(new CircleImageShaper().setStroke(Color.WHITE, SketchUtils.dp2px(context, 2)))
.setShapeSizeByFixedSize(true));
Sketch.putOptions(ImageOptions.ROUND_RECT, new DisplayOptions()
.setLoadingImage(R.drawable.image_loading)
.setErrorImage(R.drawable.image_error)
.setPauseDownloadImage(R.drawable.image_pause_download)
.setImageShaper(new RoundRectImageShaper(SketchUtils.dp2px(context, 6)))
.setImageDisplayer(transitionImageDisplayer)
.setShapeSizeByFixedSize(true));
Sketch.putOptions(ImageOptions.WINDOW_BACKGROUND, new DisplayOptions()
.setLoadingImage(new OldStateImage(new DrawableStateImage(R.drawable.shape_window_background)))
.setImageProcessor(GaussianBlurImageProcessor.makeLayerColor(Color.parseColor("#66000000")))
.setCacheProcessedImageInDisk(true)
.setBitmapConfig(Bitmap.Config.ARGB_8888) // 效果比较重要
.setShapeSizeByFixedSize(true)
.setMaxSize(context.getResources().getDisplayMetrics().widthPixels / 4,
context.getResources().getDisplayMetrics().heightPixels / 4)
.setImageDisplayer(new TransitionImageDisplayer(true)));
}
}