Merge pull request #1048 from owncloud/shareWithYou_icon_in_fileList
[pub/Android/ownCloud.git] / src / com / owncloud / android / ui / preview / ImageViewCustom.java
index f56557b..69182d6 100644 (file)
@@ -16,6 +16,9 @@ public class ImageViewCustom extends ImageView {
     private static final String TAG = ImageViewCustom.class.getSimpleName();
 
     private static final boolean IS_ICS_OR_HIGHER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
+    private static final boolean IS_VERSION_BUGGY_ON_RECYCLES =
+            Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR1 ||
+            Build.VERSION.SDK_INT == Build.VERSION_CODES.JELLY_BEAN_MR2;
 
     private int mBitmapHeight;
     private int mBitmapWidth;
@@ -37,9 +40,13 @@ public class ImageViewCustom extends ImageView {
        @Override
     protected void onDraw(Canvas canvas) {
 
-        if(IS_ICS_OR_HIGHER && checkIfMaximumBitmapExceed(canvas)) {
-            // Set layer type to software one for avoiding exceed
-            // and problems in visualization
+        if(IS_ICS_OR_HIGHER && checkIfMaximumBitmapExceed(canvas) || IS_VERSION_BUGGY_ON_RECYCLES ) {
+            // Software type is set with two targets:
+            // 1. prevent that bitmaps larger than maximum textures allowed are shown as black views in devices
+            //  with LAYER_TYPE_HARDWARE enabled by default;
+            // 2. grant that bitmaps are correctly dellocated from memory in versions suffering the bug fixed in
+            //  https://android.googlesource.com/platform/frameworks/base/+/034de6b1ec561797a2422314e6ef03e3cd3e08e0;
+            //
             setLayerType(View.LAYER_TYPE_SOFTWARE, null);
         }