coverflow android :how to get images from a url in the coverflow
===

hi I m currently testing the android [coverflow][1]
i tried to get images from the url and display it in the coverflow
i have successfully downloaded the images but cant put in the bitmap.
here is code which i tried...


    package com.example.coverflow;
    
    import java.io.FileInputStream;
    
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Bitmap;
    import android.graphics.Bitmap.Config;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.LinearGradient;
    import android.graphics.Matrix;
    import android.graphics.Paint;
    import android.graphics.PorterDuff.Mode;
    import android.graphics.PorterDuffXfermode;
    import android.graphics.Shader.TileMode;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.ImageView;
    import android.widget.Toast;
    import android.widget.ImageView.ScaleType;
    
    import com.example.coverflow.CoverAdapterView.OnItemClickListener;
    
    public class CoverFlowExample extends Activity  {
    	/** Called when the activity is first created. */
    	@Override
    	public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    
    		CoverFlow coverFlow;
    		coverFlow = new CoverFlow(this);
    
    		coverFlow.setAdapter(new ImageAdapter(this));
    
    		ImageAdapter coverImageAdapter = new ImageAdapter(this);
    
    		coverImageAdapter.createReflectedImages();
    
    		coverFlow.setAdapter(coverImageAdapter);
    
    		coverFlow.setSpacing(-15);
    		coverFlow.setSelection(8, true);
    
    		
    		
    		setContentView(coverFlow);
    		coverFlow.setOnItemClickListener(new OnItemClickListener() {
    
    			@Override
    			public void onItemClick(CoverAdapterView<?> parent, View view,
    					int position, long id) {
    				// TODO Auto-generated method stub
    				Log.v("this happens only in india", "ok i know this position"+position );
    				Toast.makeText(getApplicationContext(), "position "+position, Toast.LENGTH_SHORT).show();
    			}
    		});
    		
    		// Use this if you want to use XML layout file
    		// setContentView(R.layout.main);
    		// coverFlow = (CoverFlow) findViewById(R.id.coverflow);
    
    	}
    
    	public class ImageAdapter extends BaseAdapter {
    		int mGalleryItemBackground;
    		private Context mContext;
    
    		private FileInputStream fis;
    		//public Integer[] mImageIds ;
    		
    		private Integer[] mImageIds ={1,2,3,4,5};
    		/*private Integer[] mImageIds = { R.drawable.kasabian_kasabian,
    
    		R.drawable.killers_day_and_age, R.drawable.garbage_bleed_like_me,
    				R.drawable.death_cub_for_cutie_the_photo_album,
    				R.drawable.kasabian_kasabian, R.drawable.kasabian_kasabian,
    				R.drawable.killers_day_and_age,
    				R.drawable.garbage_bleed_like_me,
    				R.drawable.massive_attack_collected,
    				R.drawable.kasabian_kasabian, R.drawable.kasabian_kasabian,
    				R.drawable.kasabian_kasabian
    
    		};*/
    		
    
    		
    		public int getCount2()
    		{
    			for(int i=0;i<5;i++)
    			{
    				ImageView imageView = new ImageView(mContext);
    				URL url;
    				try {
    					url = new URL("http://www.psdgraphics.com/file/retro-tv-icon.jpg");
    				
    				Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    				
    				imageView.setImageBitmap(bmp);
    				imageView.setId(i);
    				//mImageIds[i]=i;
    				
    				} catch (MalformedURLException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    			}
    		    return mImageIds.length;
    		}
    
    		private ImageView[] mImages;
    
    		public ImageAdapter(Context c) {
    			mContext = c;
    			mImages = new ImageView[getCount2()];
    		}
    
    		public boolean createReflectedImages() {
    			// The gap we want between the reflection and the original image
    			final int reflectionGap = 4;
    
    			int index = 0;
    			for (final int imageId : mImageIds) {
    //				Bitmap originalImage = BitmapFactory.decodeResource(
    //						getResources(), imageId);
    				URL url;
    				Bitmap originalImage= null;
    				try {
    				url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464");
    				
    				 originalImage = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    				} catch (MalformedURLException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				} catch (IOException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    				int width = originalImage.getWidth();
    				int height = originalImage.getHeight();
    				Log.v("width:",""+width+","+height);
    
    				// This will not scale but will flip on the Y axis
    				Matrix matrix = new Matrix();
    				matrix.preScale(1, -1);
    				
    				Log.v("errer her", "aftr originalImage");
    				// Create a Bitmap with the flip matrix applied to it.
    				// We only want the bottom half of the image
    				Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
    						height / 2, width, height / 2, matrix, false);
    
    				// Create a new bitmap with same width but taller to fit
    				// reflection
    				Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
    						(height + height / 2), Config.ARGB_8888);
    
    				// Create a new Canvas with the bitmap that's big enough for
    				// the image plus gap plus reflection
    				Canvas canvas = new Canvas(bitmapWithReflection);
    				// Draw in the original image
    				canvas.drawBitmap(originalImage, 0, 0, null);
    				// Draw in the gap
    				Paint deafaultPaint = new Paint();
    				canvas.drawRect(0, height, width, height + reflectionGap,
    						deafaultPaint);
    				// Draw in the reflection
    				canvas.drawBitmap(reflectionImage, 0, height + reflectionGap,
    						null);
    				Log.v("errer her", "aftr reflectionImage");
    				// Create a shader that is a linear gradient that covers the
    				// reflection
    				Paint paint = new Paint();
    				LinearGradient shader = new LinearGradient(0,
    						originalImage.getHeight(), 0,
    						bitmapWithReflection.getHeight() + reflectionGap,
    						0x70ffffff, 0x00ffffff, TileMode.CLAMP);
    				// Set the paint to use this shader (linear gradient)
    				paint.setShader(shader);
    				// Set the Transfer mode to be porter duff and destination in
    				paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
    				// Draw a rectangle using the paint with our linear gradient
    				canvas.drawRect(0, height, width,
    						bitmapWithReflection.getHeight() + reflectionGap, paint);
    				Log.v("errer her", "aftr drawrect");
    				ImageView imageView = new ImageView(mContext);
    				imageView.setImageBitmap(bitmapWithReflection);
    				imageView.setLayoutParams(new CoverFlow.LayoutParams(120, 180));
    				imageView.setScaleType(ScaleType.MATRIX);
    				mImages[index++] = imageView;
    
    			}
    			return true;
    		}
    
    		public int getCount() {
    			// Log.v("getCoutn(int count)", "" + mImageIds.length);
    			return mImageIds.length;
    		}
    
    		public Object getItem(int position) {
    			// Log.v("getItem(int position)", "" + position);
    			return position;
    		}
    
    		public long getItemId(int position) {
    			// Log.v("getItemID(int position)", "" + position);
    			return position;
    		}
    
    		public View getView(int position, View convertView, ViewGroup parent) {
    
    			// Use this code if you want to load from resources
    			// ImageView i = new ImageView(mContext);
    			// i.setImageResource(mImageIds[position]);
    			// i.setLayoutParams(new CoverFlow.LayoutParams(130, 130));
    			// i.setScaleType(ImageView.ScaleType.MATRIX);
    			// return i;
    
    			// Log.v("getview int position mImages", ""+position);
    			ImageView imageView = new ImageView(mContext);
    			URL url;
    			try {
    				url = new URL("http://image10.bizrate-images.com/resize?sq=60&uid=2216744464");
    			
    			Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
    			imageView.setImageBitmap(bmp);
    			imageView.setId(position);
    			
    			} catch (MalformedURLException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			} catch (IOException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			return imageView;
    			//return mImages[position];
    		}
    
    		/**
    		 * 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) */
    			Log.v("getScale float ", " " + focused + " " + offset);
    			return Math.max(0, 1.0f / (float) Math.pow(2, Math.abs(offset)));
    		}
    
    	//	View v=getView(position, convertView, parent);
    	
    		
    		
    
    	}
    
    	
    
    }

  [1]: http://www.inter-fuser.com/2010/01/android-coverflow-widget.html

