How do I load an image from sd card into coverview

Posted by Jolene on Stack Overflow See other posts from Stack Overflow or by Jolene
Published on 2012-12-18T05:00:41Z Indexed on 2012/12/18 5:02 UTC
Read the original article Hit count: 502

Filed under:
|
|

I am doing an application which consists of a cover flow. Currently I am trying to make the cover flow images be obtained from the sd card. But I am not exactly sure how should I display the image.

this is the image adapter:

    public class ImageAdapter extends BaseAdapter {

     int mGalleryItemBackground;
     private Context mContext;

     private FileInputStream fis;
     private Integer[] mImageIds = {

       //Instead of using r.drawable, 
         i need to load the images from my sd card instead

             R.drawable.futsing,
             R.drawable.futsing2

     };

     private ImageView[] mImages;

     public ImageAdapter(Context c) {
      mContext = c;
      mImages = new ImageView[mImageIds.length];
     }

     public int getCount() {
         return mImageIds.length;
     }

     public Object getItem(int position) {
         return position;
     }

     public long getItemId(int position) {
         return position;
     }


     @TargetApi(8)
    public View getView(int position, View convertView, ViewGroup parent) {

         int screenSize = getResources().getConfiguration().screenLayout &
         Configuration.SCREENLAYOUT_SIZE_MASK;

         ImageView i = new ImageView(mContext); 
         i.setImageResource(mImageIds[position]);

         switch(screenSize) {
         case Configuration.SCREENLAYOUT_SIZE_XLARGE:
         //Toast.makeText(this, "Small screen",Toast.LENGTH_LONG).show();
         Display display4 = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
         int rotation4 = display4.getRotation();
         Log.d("XLarge:",String.valueOf(rotation4));

         /** LANDSCAPE **/
         if(rotation4 == 0 || rotation4 == 2) 
         {

         i.setLayoutParams(new CoverFlow.LayoutParams(300, 300));
         i.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
         BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
         drawable.setAntiAlias(true);
         return i;
         }

         /** PORTRAIT **/
         else if (rotation4 == 1 || rotation4 == 3) 
         {
             i.setLayoutParams(new CoverFlow.LayoutParams(650, 650));
             i.setScaleType(ImageView.ScaleType.CENTER_INSIDE);
             BitmapDrawable drawable = (BitmapDrawable) i.getDrawable();
             drawable.setAntiAlias(true);
             return i;
         }
         break;

     default:
 }
        return null;

     }
   /** Returns the size (0.0f to 1.0f) of the views 
      * depending on the 'offset' to the center. */ 
      public float getScale(boolean focused, int offset) { 
        /* Formula: 1 / (2 ^ offset) */ 
          return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset))); 
      } 

 }

and this is how i download and save the file. I need to use the image saved and upload it into my coverflow

 // IF METHOD TO DOWNLOAD IMAGE
void downloadFile() {

    new Thread(new Runnable(){  // RUN IN BACKGROUND THREAD TO AVOID FREEZING OF UI
    public void run(){  
            Bitmap bmImg;
            URL myFileUrl = null;
            try {
                //for (int i = 0; i < urlList.size(); i ++)
                //{
                //url = urlList.get(i);
                myFileUrl = new URL("http://static.adzerk.net/Advertisers/d18eea9d28f3490b8dcbfa9e38f8336e.jpg");    // RETRIEVE IMAGE URL
                //}
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
            try {
                HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
                conn.setDoInput(true);
                conn.connect();
                InputStream in = conn.getInputStream();
                Log.i("im connected", "Download");
                bmImg = BitmapFactory.decodeStream(in);

                saveFile(bmImg);
            } catch (IOException e) {
                e.printStackTrace();
            }}   
    }).start(); // START THREAD

    }

    // SAVE THE IMAGE AS JPG FILE
private void saveFile(Bitmap bmImg) {
    File filename;
try {
     // GET EXTERNAL STORAGE, SAVE FILE THERE
     File storagePath = new File(Environment.getExternalStorageDirectory(),"Covers");
     storagePath.mkdirs();
    filename = new File(storagePath + "/image.jpg");
    FileOutputStream out = new FileOutputStream(filename);
    bmImg.compress(Bitmap.CompressFormat.JPEG, 90, out);

    out.flush();
    out.close();
    MediaStore.Images.Media.insertImage(getContentResolver(),filename.getAbsolutePath(), filename.getName(),
            filename.getName());

    // ONCE THE DOWNLOAD FINISHES, CLOSE DIALOG
   Toast.makeText(getApplicationContext(), "Image Saved!", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
    e.printStackTrace();
}   

}

© Stack Overflow or respective owner

Related posts about android

Related posts about image