/UniversalImageLoader/src/com/nostra13/universalimageloader/core/DisplayImageOptions.java

https://github.com/rashedulkabir/Android-Universal-Image-Loader · Java · 178 lines · 91 code · 24 blank · 63 comment · 2 complexity · 9dcee24c77fef99ea704627eef5c19ae MD5 · raw file

  1. package com.nostra13.universalimageloader.core;
  2. import android.graphics.Matrix;
  3. import com.nostra13.universalimageloader.core.assist.ImageScaleType;
  4. /**
  5. * Contains options for image display. Defines:
  6. * <ul>
  7. * <li>whether stub image will be displayed in {@link android.widget.ImageView ImageView} during image loading</li>
  8. * <li>whether stub image will be displayed in {@link android.widget.ImageView ImageView} if empty URI is passed</li>
  9. * <li>whether {@link android.widget.ImageView ImageView} should be reset before image loading start</li>
  10. * <li>whether loaded image will be cached in memory</li>
  11. * <li>whether loaded image will be cached on disc</li>
  12. * <li>image scale type</li>
  13. * <li>transformation matrix</li>
  14. * </ul>
  15. *
  16. * You can create instance:
  17. * <ul>
  18. * <li>with {@link Builder}:<br />
  19. * <b>i.e.</b> :
  20. * <code>new {@link DisplayImageOptions}.{@link Builder#Builder() Builder()}.{@link Builder#cacheInMemory() cacheInMemory()}.
  21. * {@link Builder#showStubImage(int) showStubImage()}.{@link Builder#build() build()}</code><br />
  22. * </li>
  23. * <li>or by static method: {@link #createSimple()}</li> <br />
  24. *
  25. * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
  26. */
  27. public final class DisplayImageOptions {
  28. private final Integer stubImage;
  29. private final Integer imageForEmptyUri;
  30. private final boolean resetViewBeforeLoading;
  31. private final boolean cacheInMemory;
  32. private final boolean cacheOnDisc;
  33. private final ImageScaleType imageScaleType;
  34. private final Matrix transformationMatrix;
  35. private DisplayImageOptions(Builder builder) {
  36. stubImage = builder.stubImage;
  37. imageForEmptyUri = builder.imageForEmptyUri;
  38. resetViewBeforeLoading = builder.resetViewBeforeLoading;
  39. cacheInMemory = builder.cacheInMemory;
  40. cacheOnDisc = builder.cacheOnDisc;
  41. imageScaleType = builder.imageScaleType;
  42. transformationMatrix = builder.transformationMatrix;
  43. }
  44. boolean isShowStubImage() {
  45. return stubImage != null;
  46. }
  47. boolean isShowImageForEmptyUri() {
  48. return imageForEmptyUri != null;
  49. }
  50. Integer getStubImage() {
  51. return stubImage;
  52. }
  53. Integer getImageForEmptyUri() {
  54. return imageForEmptyUri;
  55. }
  56. boolean isResetViewBeforeLoading() {
  57. return resetViewBeforeLoading;
  58. }
  59. boolean isCacheInMemory() {
  60. return cacheInMemory;
  61. }
  62. boolean isCacheOnDisc() {
  63. return cacheOnDisc;
  64. }
  65. ImageScaleType getImageScaleType() {
  66. return imageScaleType;
  67. }
  68. Matrix getTransformationMatrix() {
  69. return transformationMatrix;
  70. }
  71. /**
  72. * Builder for {@link DisplayImageOptions}
  73. *
  74. * @author Sergey Tarasevich (nostra13[at]gmail[dot]com)
  75. */
  76. public static class Builder {
  77. private Integer stubImage = null;
  78. private Integer imageForEmptyUri = null;
  79. private boolean resetViewBeforeLoading = false;
  80. private boolean cacheInMemory = false;
  81. private boolean cacheOnDisc = false;
  82. private ImageScaleType imageScaleType = ImageScaleType.POWER_OF_2;
  83. private Matrix transformationMatrix = null;
  84. /**
  85. * Stub image will be displayed in {@link android.widget.ImageView ImageView} during image loading
  86. *
  87. * @param stubImageRes
  88. * Stub image resource
  89. */
  90. public Builder showStubImage(int stubImageRes) {
  91. stubImage = stubImageRes;
  92. return this;
  93. }
  94. /**
  95. * Image will be displayed in {@link android.widget.ImageView ImageView} if empty URI (null or empty string)
  96. * will be passed to <b>ImageLoader.displayImage(...)</b> method.
  97. *
  98. * @param imageRes
  99. * Image resource
  100. */
  101. public Builder showImageForEmptyUri(int imageRes) {
  102. imageForEmptyUri = imageRes;
  103. return this;
  104. }
  105. /** {@link android.widget.ImageView ImageView} will be reset (set <b>null</b>) before image loading start */
  106. public Builder resetViewBeforeLoading() {
  107. resetViewBeforeLoading = true;
  108. return this;
  109. }
  110. /** Loaded image will be cached in memory */
  111. public Builder cacheInMemory() {
  112. cacheInMemory = true;
  113. return this;
  114. }
  115. /** Loaded image will be cached on disc */
  116. public Builder cacheOnDisc() {
  117. cacheOnDisc = true;
  118. return this;
  119. }
  120. /**
  121. * Sets {@link ImageScaleType decoding type} for image loading task. Default value -
  122. * {@link ImageScaleType#POWER_OF_2}
  123. */
  124. public Builder imageScaleType(ImageScaleType imageScaleType) {
  125. this.imageScaleType = imageScaleType;
  126. return this;
  127. }
  128. /**
  129. * Sets transformation {@link android.graphics.Matrix} which will be applied to the decoded image before display
  130. */
  131. public Builder transform(Matrix transformationMatrix) {
  132. this.transformationMatrix = transformationMatrix;
  133. return this;
  134. }
  135. /** Builds configured {@link DisplayImageOptions} object */
  136. public DisplayImageOptions build() {
  137. return new DisplayImageOptions(this);
  138. }
  139. }
  140. /**
  141. * Creates options appropriate for single displaying:
  142. * <ul>
  143. * <li>Stub image will <b>not</b> be displayed in {@link android.widget.ImageView ImageView} during image loading</li>
  144. * <li>Loaded image will <b>not</b> be cached in memory</li>
  145. * <li>Loaded image will <b>not</b> be cached on disc (application cache directory or on SD card)</li>
  146. * <li>{@link ImageScaleType#POWER_OF_2 FAST} decoding type will be used</li>
  147. * </ul>
  148. *
  149. * These option are appropriate for simple single-use image (from drawables or from internet) displaying.
  150. */
  151. public static DisplayImageOptions createSimple() {
  152. return new Builder().build();
  153. }
  154. }