Explorar el Código

Fixed a potential OutOfMemory error in several view.

seavenois hace 10 años
padre
commit
7fe9b71c1f

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/ActivityFutureLayout.java

@@ -134,7 +134,7 @@ public class ActivityFutureLayout extends Fragment implements OnMapReadyCallback
                 fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/preview/");
                 //noinspection ResultOfMethodCallIgnored
                 fpath.mkdirs();
-                new DownloadImage(GM.SERVER + "/img/actividades/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image, images[i]).execute();
+                new DownloadImage(GM.SERVER + "/img/actividades/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image, images[i], GM.IMG_PREVIEW).execute();
             }
             images[i].setVisibility(View.VISIBLE);
             i ++;

+ 2 - 2
app/src/main/java/com/ivalentin/margolariak/ActivityLayout.java

@@ -139,7 +139,7 @@ public class ActivityLayout extends Fragment{
                         File fpath;
                         fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/");
                         fpath.mkdirs();
-                        new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv).execute();
+                        new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv, GM.IMG_MINIATURE).execute();
                     }
                 }
                 cursorImage.close();
@@ -231,7 +231,7 @@ public class ActivityLayout extends Fragment{
                     File fpath;
                     fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/");
                     fpath.mkdirs();
-                    new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv).execute();
+                    new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv, GM.IMG_MINIATURE).execute();
                 }
             }
             cursorImage.close();

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/ActivityPastLayout.java

@@ -104,7 +104,7 @@ public class ActivityPastLayout extends Fragment {
                 File fpath;
                 fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/preview/");
                 fpath.mkdirs();
-                new DownloadImage(GM.SERVER + "/img/actividades/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image, images[i]).execute();
+                new DownloadImage(GM.SERVER + "/img/actividades/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/preview/" + image, images[i], GM.IMG_PREVIEW).execute();
              }
             images[i].setVisibility(View.VISIBLE);
             i ++;

+ 6 - 9
app/src/main/java/com/ivalentin/margolariak/AlbumLayout.java

@@ -121,8 +121,8 @@ public class AlbumLayout extends Fragment {
             if (f.exists()){
                 //If the image exists, set it.
 				try{
-					bmp = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image);
-                	ivLeft.setImageBitmap(bmp);
+					File file = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image);
+					ivLeft.setImageBitmap(GM.decodeSampledBitmapFromFile(file.getAbsolutePath(), GM.IMG_PREVIEW));
 				}
 				catch (Exception ex){
 					Log.e("Bitmap error", "Not loading image " + image + ": " + ex.toString());
@@ -133,7 +133,7 @@ public class AlbumLayout extends Fragment {
                 File fpath;
                 fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/");
                 fpath.mkdirs();
-				new DownloadImage(GM.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivLeft).execute();
+				new DownloadImage(GM.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivLeft, GM.IMG_PREVIEW).execute();
             }
 
 			//Count comments
@@ -191,11 +191,8 @@ public class AlbumLayout extends Fragment {
                 if (f.exists()){
                     //If the image exists, set it.
 					try {
-						//bmp = BitmapFactory.decodeFile(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image);
-						//ivRight.setImageBitmap(bmp);
-						File file = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image); //your image file path
-						//mImage = (ImageView) findViewById(R.id.imageView1);
-						ivRight.setImageBitmap(GM.decodeSampledBitmapFromFile(file.getAbsolutePath(), 600, 600));
+						File file = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image);
+						ivRight.setImageBitmap(GM.decodeSampledBitmapFromFile(file.getAbsolutePath(), GM.IMG_PREVIEW));
 					}
 					catch (Exception ex){
 						Log.e("Bitmap error", "Not loading image " + image + ": " + ex.toString());
@@ -206,7 +203,7 @@ public class AlbumLayout extends Fragment {
                     File fpath;
                     fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/");
                     fpath.mkdirs();
-					new DownloadImage(GM.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivRight).execute();
+					new DownloadImage(GM.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivRight, GM.IMG_PREVIEW).execute();
                 }
 
 				//Count comments

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/BlogLayout.java

@@ -204,7 +204,7 @@ public class BlogLayout extends Fragment{
                     File fpath;
                     fpath = new File(this.getActivity().getFilesDir().toString() + "/img/blog/miniature/");
                     fpath.mkdirs();
-                    new DownloadImage(GM.SERVER + "/img/blog/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image, iv).execute();
+                    new DownloadImage(GM.SERVER + "/img/blog/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image, iv, GM.IMG_MINIATURE).execute();
                 }
             }
             cursorImage.close();

+ 6 - 6
app/src/main/java/com/ivalentin/margolariak/DownloadImage.java

@@ -27,6 +27,7 @@ class DownloadImage extends AsyncTask<Void, Void, Void> {
     private final String file;
     private final String path;
     private final ImageView iv;
+	private final int size;
 
 	/**
 	 * Constructor.
@@ -34,14 +35,16 @@ class DownloadImage extends AsyncTask<Void, Void, Void> {
 	 * @param file URL of the remote file.
 	 * @param path Path, including file name, where the image will be saved.
 	 * @param iv ImageView that will hold the image.
+	 * @param size Max size (width or height of the image)
 	 *
 	 * @see android.widget.ImageView
 	 */
-    public DownloadImage(String file, String path, ImageView iv) {
+    public DownloadImage(String file, String path, ImageView iv, int size) {
         super();
         this.file = file;
         this.path = path;
         this.iv = iv;
+		this.size = size;
     }
 
     /**
@@ -93,12 +96,9 @@ class DownloadImage extends AsyncTask<Void, Void, Void> {
     @Override
     protected void onPostExecute(Void v) {
         Log.d("File downloaded", path);
-        //Bitmap myBitmap = BitmapFactory.decodeFile(path);
 		try {
-			File file = new File(path); //your image file path
-			//mImage = (ImageView) findViewById(R.id.imageView1);
-			iv.setImageBitmap(GM.decodeSampledBitmapFromFile(file.getAbsolutePath(), 600, 600));
-			//iv.setImageBitmap(myBitmap);
+			File file = new File(path);
+			iv.setImageBitmap(GM.decodeSampledBitmapFromFile(file.getAbsolutePath(), size));
 			iv.setVisibility(View.VISIBLE);
 		}
 		catch(Exception ex){

+ 13 - 5
app/src/main/java/com/ivalentin/margolariak/GM.java

@@ -228,6 +228,14 @@ final class GM {
 	 */
 	static final int LOCATION_ACCURACY_TIME = 10000;
 
+	/**
+	 * Dimensions of the images in the database.
+	 */
+	static final int IMG_MINIATURE = 340;
+	static final int IMG_PREVIEW = 600;
+	static final int IMG_THUMB = 180;
+	static final int IMG_VIEW = 800;
+
 	/**
 	 * Gets the language code for sql queries.
 	 * Only three values can be returned: es, eu, en.
@@ -326,7 +334,7 @@ final class GM {
 		return output;
 	}
 
-	public static Bitmap decodeSampledBitmapFromFile(String path, int reqWidth, int reqHeight) { // BEST QUALITY MATCH
+	public static Bitmap decodeSampledBitmapFromFile(String path, int size) { // BEST QUALITY MATCH
 
 		// First decode with inJustDecodeBounds=true to check dimensions
 		final BitmapFactory.Options options = new BitmapFactory.Options();
@@ -340,15 +348,15 @@ final class GM {
 		options.inPreferredConfig = Bitmap.Config.RGB_565;
 		int inSampleSize = 1;
 
-		if (height > reqHeight) {
-			inSampleSize = Math.round((float)height / (float)reqHeight);
+		if (height > size) {
+			inSampleSize = Math.round((float)height / (float)size);
 		}
 
 		int expectedWidth = width / inSampleSize;
 
-		if (expectedWidth > reqWidth) {
+		if (expectedWidth > size) {
 			//if(Math.round((float)width / (float)reqWidth) > inSampleSize) // If bigger SampSize..
-			inSampleSize = Math.round((float)width / (float)reqWidth);
+			inSampleSize = Math.round((float)width / (float)size);
 		}
 
 

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/GalleryLayout.java

@@ -126,7 +126,7 @@ public class GalleryLayout extends Fragment{
                     File fpath;
                     fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/miniature/");
                     fpath.mkdirs();
-                    new DownloadImage(GM.SERVER + "/img/galeria/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/miniature/" + image, preview[i]).execute();
+                    new DownloadImage(GM.SERVER + "/img/galeria/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/miniature/" + image, preview[i], GM.IMG_MINIATURE).execute();
                 }
                 i ++;
             }

+ 5 - 5
app/src/main/java/com/ivalentin/margolariak/HomeLayout.java

@@ -470,7 +470,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 						File fpath;
 						fpath = new File(this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/");
 						fpath.mkdirs();
-						new DownloadImage(GM.SERVER + "/img/fiestas/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image, ivImage).execute();
+						new DownloadImage(GM.SERVER + "/img/fiestas/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image, ivImage, GM.IMG_PREVIEW).execute();
 					}
 				}
 				else {
@@ -566,7 +566,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 				File fpath;
 				fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/preview/");
 				fpath.mkdirs();
-				new DownloadImage(GM.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivPhoto[counter]).execute();
+				new DownloadImage(GM.SERVER + "/img/galeria/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/preview/" + image, ivPhoto[counter], GM.IMG_PREVIEW).execute();
 			}
 
 			//Set listeners for images
@@ -701,7 +701,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 					File fpath;
 					fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/");
 					fpath.mkdirs();
-					new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv).execute();
+					new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv, GM.IMG_MINIATURE).execute();
 				}
 			}
 			cursorImage.close();
@@ -835,7 +835,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 						File fpath;
 						fpath = new File(this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/");
 						fpath.mkdirs();
-						new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv).execute();
+						new DownloadImage(GM.SERVER + "/img/actividades/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/actividades/miniature/" + image, iv, GM.IMG_MINIATURE).execute();
 					}
 				}
 
@@ -957,7 +957,7 @@ public class HomeLayout extends Fragment implements LocationListener {
 					File fpath;
 					fpath = new File(this.getActivity().getFilesDir().toString() + "/img/blog/miniature/");
 					fpath.mkdirs();
-					new DownloadImage(GM.SERVER + "/img/blog/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image, iv).execute();
+					new DownloadImage(GM.SERVER + "/img/blog/miniature/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/miniature/" + image, iv, GM.IMG_MINIATURE).execute();
 				}
 			}
 

+ 6 - 7
app/src/main/java/com/ivalentin/margolariak/LablancaLayout.java

@@ -2,7 +2,6 @@ package com.ivalentin.margolariak;
 
 import android.annotation.SuppressLint;
 import android.app.Fragment;
-import android.content.Context;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.graphics.Bitmap;
@@ -27,7 +26,7 @@ import java.util.Date;
 import java.util.Locale;
 
 /**
- * Fragment openen for La Blanca sections while the festivals are not close.
+ * Fragment opened for La Blanca sections while the festivals are not close.
  *
  * @see Fragment
  *
@@ -39,8 +38,8 @@ public class LablancaLayout extends Fragment {
 	/**
 	 * Run when the fragment is inflated.
 	 *
-	 * @param inflater           A LayoutInflater to manage views
-	 * @param container          The container View
+	 * @param inflater A LayoutInflater to manage views
+	 * @param container The container View
 	 * @param savedInstanceState Bundle containing the state
 	 * @return The fragment view
 	 * @see android.app.Fragment#onCreateView(android.view.LayoutInflater, android.view.ViewGroup, android.os.Bundle)
@@ -92,7 +91,7 @@ public class LablancaLayout extends Fragment {
 				File fpath;
 				fpath = new File(this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/");
 				fpath.mkdirs();
-				new DownloadImage(GM.SERVER + "/img/fiestas/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image, headerImage).execute();
+				new DownloadImage(GM.SERVER + "/img/fiestas/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/fiestas/preview/" + image, headerImage, GM.IMG_PREVIEW).execute();
 			}
 		}
 		else{
@@ -135,10 +134,10 @@ public class LablancaLayout extends Fragment {
 				int month = calendar.get(Calendar.MONTH);
 				switch (month){
 					case 6:
-						tvDate.setText(String.format(getString(R.string.lablanca_date_july), day));
+						tvDate.setText(String.format(getString(R.string.lablanca_date_july), String.valueOf(day)));
 						break;
 					case 7:
-						tvDate.setText(String.format(getString(R.string.lablanca_date_august), day));
+						tvDate.setText(String.format(getString(R.string.lablanca_date_august), String.valueOf(day)));
 						break;
 				}
 			}

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/PhotoLayout.java

@@ -208,7 +208,7 @@ public class PhotoLayout extends Fragment {
 			File fpath;
 			fpath = new File(this.getActivity().getFilesDir().toString() + "/img/galeria/view/");
 			fpath.mkdirs();
-			new DownloadImage(GM.SERVER + "/img/galeria/view/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/view/" + image, imageView).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+			new DownloadImage(GM.SERVER + "/img/galeria/view/" + image, this.getActivity().getFilesDir().toString() + "/img/galeria/view/" + image, imageView, GM.IMG_VIEW).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
 		}
 
 		//Hide or show comments, as needed

+ 1 - 1
app/src/main/java/com/ivalentin/margolariak/PostLayout.java

@@ -110,7 +110,7 @@ public class PostLayout extends Fragment {
                 File fpath;
                 fpath = new File(this.getActivity().getFilesDir().toString() + "/img/blog/preview/");
                 fpath.mkdirs();
-				new DownloadImage(GM.SERVER + "/img/blog/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/preview/" + image, images[i]).execute();
+				new DownloadImage(GM.SERVER + "/img/blog/preview/" + image, this.getActivity().getFilesDir().toString() + "/img/blog/preview/" + image, images[i], GM.IMG_PREVIEW).execute();
             }
             images[i].setVisibility(View.VISIBLE);
             i ++;