package me.xiaopan.sketchsample.util; import android.content.Context; import android.content.SharedPreferences; import android.os.Build; import android.preference.PreferenceManager; import android.support.annotation.StringDef; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import me.xiaopan.sketch.BuildConfig; import me.xiaopan.sketch.SLogType; import me.xiaopan.sketch.SLog; import me.xiaopan.sketch.Sketch; import me.xiaopan.sketchsample.SampleLogTracker; public class Settings { public static final String PREFERENCE_SCROLLING_PAUSE_LOAD = "PREFERENCE_SCROLLING_PAUSE_LOAD"; public static final String PREFERENCE_SHOW_IMAGE_DOWNLOAD_PROGRESS = "PREFERENCE_SHOW_IMAGE_DOWNLOAD_PROGRESS"; public static final String PREFERENCE_MOBILE_NETWORK_PAUSE_DOWNLOAD = "PREFERENCE_MOBILE_NETWORK_PAUSE_DOWNLOAD"; public static final String PREFERENCE_SHOW_IMAGE_FROM_FLAG = "PREFERENCE_SHOW_IMAGE_FROM_FLAG"; public static final String PREFERENCE_CLICK_DISPLAY_ON_PAUSE_DOWNLOAD = "PREFERENCE_CLICK_DISPLAY_ON_PAUSE_DOWNLOAD"; public static final String PREFERENCE_CLICK_DISPLAY_ON_FAILED = "PREFERENCE_CLICK_DISPLAY_ON_FAILED"; public static final String PREFERENCE_CLICK_SHOW_PRESSED_STATUS = "PREFERENCE_CLICK_SHOW_PRESSED_STATUS"; public static final String PREFERENCE_GLOBAL_DISABLE_CACHE_IN_MEMORY = "PREFERENCE_GLOBAL_DISABLE_CACHE_IN_MEMORY"; public static final String PREFERENCE_GLOBAL_DISABLE_CACHE_IN_DISK = "PREFERENCE_GLOBAL_DISABLE_CACHE_IN_DISK"; public static final String PREFERENCE_GLOBAL_DISABLE_BITMAP_POOL = "PREFERENCE_GLOBAL_DISABLE_BITMAP_POOL"; public static final String PREFERENCE_GLOBAL_LOW_QUALITY_IMAGE = "PREFERENCE_GLOBAL_LOW_QUALITY_IMAGE"; public static final String PREFERENCE_GLOBAL_IN_PREFER_QUALITY_OVER_SPEED = "PREFERENCE_GLOBAL_IN_PREFER_QUALITY_OVER_SPEED"; public static final String PREFERENCE_SUPPORT_ZOOM = "PREFERENCE_SUPPORT_ZOOM"; public static final String PREFERENCE_SUPPORT_LARGE_IMAGE = "PREFERENCE_SUPPORT_LARGE_IMAGE"; public static final String PREFERENCE_READ_MODE = "PREFERENCE_READ_MODE"; public static final String PREFERENCE_THUMBNAIL_MODE = "PREFERENCE_THUMBNAIL_MODE"; public static final String PREFERENCE_LOCATION_ANIMATE = "PREFERENCE_LOCATION_ANIMATE"; public static final String PREFERENCE_CACHE_PROCESSED_IMAGE = "PREFERENCE_CACHE_PROCESSED_IMAGE"; public static final String PREFERENCE_PAGE_VISIBLE_TO_USER_DECODE_LARGE_IMAGE = "PREFERENCE_PAGE_VISIBLE_TO_USER_DECODE_LARGE_IMAGE"; public static final String PREFERENCE_PLAY_GIF_ON_LIST = "PREFERENCE_PLAY_GIF_ON_LIST"; public static final String PREFERENCE_SHOW_GIF_FLAG = "PREFERENCE_SHOW_GIF_FLAG"; public static final String PREFERENCE_LOG_BASE = "PREFERENCE_LOG_BASE"; public static final String PREFERENCE_LOG_REQUEST = "PREFERENCE_LOG_REQUEST"; public static final String PREFERENCE_LOG_CACHE = "PREFERENCE_LOG_CACHE"; public static final String PREFERENCE_LOG_ZOOM = "PREFERENCE_LOG_ZOOM"; public static final String PREFERENCE_LOG_LARGE = "PREFERENCE_LOG_LARGE"; public static final String PREFERENCE_LOG_TIME = "PREFERENCE_LOG_TIME"; public static final String PREFERENCE_SHOW_TOOLS_IN_IMAGE_DETAIL = "PREFERENCE_SHOW_TOOLS_IN_IMAGE_DETAIL"; public static final String PREFERENCE_OUT_LOG_2_SDCARD = "PREFERENCE_OUT_LOG_2_SDCARD"; public static final String PREFERENCE_CORRECT_IMAGE_ORIENTATION = "PREFERENCE_CORRECT_IMAGE_ORIENTATION"; public static boolean getBoolean(Context context, @Key String key) { boolean defaultValue = false; if (PREFERENCE_CLICK_SHOW_PRESSED_STATUS.equals(key) || PREFERENCE_SHOW_IMAGE_FROM_FLAG.equals(key) || PREFERENCE_MOBILE_NETWORK_PAUSE_DOWNLOAD.equals(key) || PREFERENCE_CLICK_DISPLAY_ON_PAUSE_DOWNLOAD.equals(key) || PREFERENCE_CLICK_DISPLAY_ON_FAILED.equals(key) || PREFERENCE_CACHE_PROCESSED_IMAGE.equals(key) || PREFERENCE_LOCATION_ANIMATE.equals(key) || PREFERENCE_THUMBNAIL_MODE.equals(key) || PREFERENCE_SUPPORT_ZOOM.equals(key) || PREFERENCE_READ_MODE.equals(key) || PREFERENCE_SUPPORT_LARGE_IMAGE.equals(key) || PREFERENCE_PAGE_VISIBLE_TO_USER_DECODE_LARGE_IMAGE.equals(key) || PREFERENCE_SHOW_GIF_FLAG.equals(key) || PREFERENCE_CORRECT_IMAGE_ORIENTATION.equals(key) ) { defaultValue = true; } else if(PREFERENCE_LOG_REQUEST.equals(key)){ defaultValue = BuildConfig.DEBUG; } return PreferenceManager.getDefaultSharedPreferences(context).getBoolean(key, defaultValue); } public static void putBoolean(Context context, @Key String key, boolean newValue) { SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(context).edit(); editor.putBoolean(key, newValue); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { editor.apply(); } else { editor.commit(); } if (PREFERENCE_MOBILE_NETWORK_PAUSE_DOWNLOAD.equals(key)) { Sketch.with(context).getConfiguration().setMobileNetworkGlobalPauseDownload(newValue); } else if (PREFERENCE_GLOBAL_DISABLE_CACHE_IN_DISK.equals(key)) { Sketch.with(context).getConfiguration().getDiskCache().setDisabled(newValue); } else if (PREFERENCE_GLOBAL_DISABLE_CACHE_IN_MEMORY.equals(key)) { Sketch.with(context).getConfiguration().getMemoryCache().setDisabled(newValue); } else if (PREFERENCE_GLOBAL_DISABLE_BITMAP_POOL.equals(key)) { Sketch.with(context).getConfiguration().getBitmapPool().setDisabled(newValue); } else if (PREFERENCE_GLOBAL_LOW_QUALITY_IMAGE.equals(key)) { Sketch.with(context).getConfiguration().setGlobalLowQualityImage(newValue); } else if (PREFERENCE_GLOBAL_IN_PREFER_QUALITY_OVER_SPEED.equals(key)) { Sketch.with(context).getConfiguration().setGlobalInPreferQualityOverSpeed(newValue); } else if (PREFERENCE_LOG_BASE.equals(key)) { SLogType.BASE.setEnabled(newValue); } else if (PREFERENCE_LOG_REQUEST.equals(key)) { SLogType.REQUEST.setEnabled(newValue); } else if (PREFERENCE_LOG_TIME.equals(key)) { SLogType.TIME.setEnabled(newValue); } else if (PREFERENCE_LOG_CACHE.equals(key)) { SLogType.CACHE.setEnabled(newValue); } else if (PREFERENCE_LOG_ZOOM.equals(key)) { SLogType.ZOOM.setEnabled(newValue); } else if (PREFERENCE_LOG_LARGE.equals(key)) { SLogType.LARGE.setEnabled(newValue); } else if (PREFERENCE_OUT_LOG_2_SDCARD.equals(key)) { SLog.setLogTracker(newValue ? new SampleLogTracker(context) : null); } } @StringDef({ PREFERENCE_SCROLLING_PAUSE_LOAD, PREFERENCE_SHOW_IMAGE_DOWNLOAD_PROGRESS, PREFERENCE_MOBILE_NETWORK_PAUSE_DOWNLOAD, PREFERENCE_SHOW_IMAGE_FROM_FLAG, PREFERENCE_CLICK_DISPLAY_ON_PAUSE_DOWNLOAD, PREFERENCE_CLICK_DISPLAY_ON_FAILED, PREFERENCE_GLOBAL_DISABLE_CACHE_IN_MEMORY, PREFERENCE_GLOBAL_DISABLE_CACHE_IN_DISK, PREFERENCE_GLOBAL_DISABLE_BITMAP_POOL, PREFERENCE_GLOBAL_LOW_QUALITY_IMAGE, PREFERENCE_GLOBAL_IN_PREFER_QUALITY_OVER_SPEED, PREFERENCE_SUPPORT_ZOOM, PREFERENCE_SUPPORT_LARGE_IMAGE, PREFERENCE_READ_MODE, PREFERENCE_THUMBNAIL_MODE, PREFERENCE_THUMBNAIL_MODE, PREFERENCE_LOCATION_ANIMATE, PREFERENCE_CACHE_PROCESSED_IMAGE, PREFERENCE_CLICK_SHOW_PRESSED_STATUS, PREFERENCE_PAGE_VISIBLE_TO_USER_DECODE_LARGE_IMAGE, PREFERENCE_PLAY_GIF_ON_LIST, PREFERENCE_SHOW_GIF_FLAG, PREFERENCE_LOG_BASE, PREFERENCE_LOG_REQUEST, PREFERENCE_LOG_CACHE, PREFERENCE_LOG_ZOOM, PREFERENCE_LOG_LARGE, PREFERENCE_LOG_TIME, PREFERENCE_SHOW_TOOLS_IN_IMAGE_DETAIL, PREFERENCE_OUT_LOG_2_SDCARD, PREFERENCE_CORRECT_IMAGE_ORIENTATION, }) @Retention(RetentionPolicy.SOURCE) public @interface Key { } }