/[projects]/android/Side9/src/dk/thoerup/side9/ImageAdapter.java
ViewVC logotype

Diff of /android/Side9/src/dk/thoerup/side9/ImageAdapter.java

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 790 by torben, Thu Jun 3 09:11:07 2010 UTC revision 1179 by torben, Sat Oct 30 06:42:53 2010 UTC
# Line 1  Line 1 
1  package dk.thoerup.side9;  package dk.thoerup.side9;
2    
3  import java.io.File;  import java.io.File;
4    import java.io.FileOutputStream;
5    import java.io.FilenameFilter;
6    import java.io.IOException;
7  import java.util.ArrayList;  import java.util.ArrayList;
8    
9  import android.content.Context;  import android.content.Context;
 import android.content.res.TypedArray;  
10  import android.graphics.Bitmap;  import android.graphics.Bitmap;
11  import android.graphics.BitmapFactory;  import android.graphics.BitmapFactory;
12    import android.graphics.Bitmap.CompressFormat;
13    import android.net.Uri;
14  import android.os.Environment;  import android.os.Environment;
15    import android.util.DisplayMetrics;
16    import android.util.Log;
17  import android.view.View;  import android.view.View;
18  import android.view.ViewGroup;  import android.view.ViewGroup;
19    import android.view.WindowManager;
20  import android.widget.BaseAdapter;  import android.widget.BaseAdapter;
21  import android.widget.GridView;  import android.widget.GridView;
22  import android.widget.ImageView;  import android.widget.ImageView;
23    import android.widget.Toast;
24    
25  public class ImageAdapter extends BaseAdapter {  public class ImageAdapter extends BaseAdapter {
26      //int mGalleryItemBackground;      //int mGalleryItemBackground;
27      private Context mContext;      private Context mContext;
28            
29      ArrayList<String> mBitmaps = new ArrayList<String>();      ArrayList<String> mBitmapPaths = new ArrayList<String>();
30        ArrayList<Bitmap> mBitmaps = new ArrayList<Bitmap>();
31        
32        int size;
33    
34      public ImageAdapter(Context c) {      public ImageAdapter(Context c) {
35          mContext = c;          mContext = c;
36                    
37          String path = Environment.getExternalStorageDirectory().getPath() + "/Side9" ;          String path = Environment.getExternalStorageDirectory().getPath() + "/Side9" ;
38                    
39            
40            
41          File root = new File(path);          File root = new File(path);
42          File files[] = root.listFiles();          
43          for (File f : files) {          if (root.exists() == false) {
44                  mBitmaps.add(  f.getPath() );                  Toast.makeText(mContext, "Side9 folder not found on sdcard", Toast.LENGTH_LONG).show();
45                    return;
46            }
47    
48            File files[] = root.listFiles( new ExtensionFilter("jpg") );
49            
50    
51            String thumbPath =  path + "/.thumb/";
52            
53            File thumbDir = new File(thumbPath);
54            if (! thumbDir.exists()) {
55                    thumbDir.mkdirs();
56          }          }
57                    
58                    
59            for (File f : files) {
60    
61                    String fileName = f.getName();
62                    File thumb = new File ( thumbPath + fileName );
63                    
64                    if (! thumb.exists() || thumb.lastModified() < f.lastModified()) {
65                            Bitmap bmp = BitmapFactory.decodeFile( f.getPath() );
66                            Bitmap scaled =  Bitmap.createScaledBitmap(bmp, bmp.getWidth()/4, bmp.getHeight()/4, true);
67                            mBitmaps.add(scaled);
68                            try {
69                                    FileOutputStream fos = new FileOutputStream(thumb);
70                                    scaled.compress(CompressFormat.JPEG, 90, fos);                          
71                                    
72                            } catch (IOException e) {
73                                    Log.e("Side9", "error", e);
74                            }
75                            
76                    } else {
77                            Bitmap thumbBmp = BitmapFactory.decodeFile( thumb.getPath());
78                            mBitmaps.add(thumbBmp);
79                    }
80                            mBitmapPaths.add(  f.getPath() );            
81                    
82            }
83            
84            size = getSize();
85      }      }
86    
87      public int getCount() {      public int getCount() {
88          return mBitmaps.size();          return mBitmapPaths.size();
89      }      }
90    
91      public Object getItem(int position) {      public Object getItem(int position) {
# Line 47  public class ImageAdapter extends BaseAd Line 97  public class ImageAdapter extends BaseAd
97      }      }
98            
99      public String getImagePath(int position) {      public String getImagePath(int position) {
100          return mBitmaps.get(position);          return mBitmapPaths.get(position);
101        }
102        
103        public ArrayList<String> getImagePaths() {
104            return mBitmapPaths;
105        }
106        
107        private int getSize() {
108                     DisplayMetrics metrics = new DisplayMetrics();
109                     WindowManager wmgr = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
110                     wmgr.getDefaultDisplay().getMetrics(metrics);
111                     if (metrics.widthPixels < 480) {
112                             return 150;
113                     } else {
114                             return 200;
115                     }
116      }      }
117    
118      public View getView(int position, View convertView, ViewGroup parent) {      public View getView(int position, View convertView, ViewGroup parent) {
119          ImageView imageView;          ImageView imageView;
120          if (convertView == null) {  // if it's not recycled, initialize some attributes          if (convertView == null) {  // if it's not recycled, initialize some attributes
121              imageView = new ImageView(mContext);              imageView = new ImageView(mContext);
122              imageView.setLayoutParams(new GridView.LayoutParams(200, 200));              imageView.setLayoutParams(new GridView.LayoutParams(size, size));
123              imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);              imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
124              imageView.setAdjustViewBounds(true);                imageView.setAdjustViewBounds(true);  
125              imageView.setPadding(4, 4, 4, 4);              imageView.setPadding(4, 4, 4, 4);
# Line 62  public class ImageAdapter extends BaseAd Line 127  public class ImageAdapter extends BaseAd
127              imageView = (ImageView) convertView;              imageView = (ImageView) convertView;
128          }          }
129    
130          Bitmap bmp = BitmapFactory.decodeFile( mBitmaps.get(position) );          //imageView.setImageURI(  Uri.parse(mThumbPaths.get(position)) );
131          imageView.setImageBitmap( Bitmap.createScaledBitmap(bmp, bmp.getWidth()/3, bmp.getHeight()/3, true) );          imageView.setImageBitmap( mBitmaps.get(position) );
132          return imageView;          return imageView;
133        }
134        
135        class ExtensionFilter implements FilenameFilter {
136            private String mExt;
137            public ExtensionFilter(String ext) {
138                    mExt = ext;
139            }
140    
141                    @Override
142                    public boolean accept(File dir, String filename) {
143                            String parts[] = filename.split("\\.");
144                            if (parts.length > 1) {
145                                    String ext = parts[ parts.length -1];
146                                    if (ext.equals(mExt)) {
147                                            return true;
148                                    }
149                            }
150                            return false;
151                    }
152            
153      }      }
154  }  }

Legend:
Removed from v.790  
changed lines
  Added in v.1179

  ViewVC Help
Powered by ViewVC 1.1.20