You can use this code, which you will find, similar to a carousel
The main function of CoverFlow
package pl.polidea.coverflow; import java.util.ArrayList; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.BaseAdapter; import android.widget.TextView; public class CoverFlowActivity extends Activity { private TextView textView; BaseAdapter coverImageAdapter; private int[] DEFAULT_RESOURCE_LIST = { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6, R.drawable.img7, R.drawable.img8 }; private int[] DEFAULT_RESOURCE_LIST1 = { R.drawable.img1a, R.drawable.img2a, R.drawable.img3a, R.drawable.img4a, R.drawable.img5a, R.drawable.img6a, R.drawable.img7a, R.drawable.img8a }; public static ArrayList<Imagedata> i11Set; @Override protected void onCreate(final Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView) findViewById(this.getResources().getIdentifier( "statusText", "id", "pl.polidea.coverflow"));
Coverflow.java
package pl.polidea.coverflow; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Camera; import android.graphics.Matrix; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.animation.Transformation; import android.widget.Gallery; import android.widget.ImageView; import android.widget.SpinnerAdapter; public class CoverFlow extends Gallery { private final Camera mCamera = new Camera(); private int mMaxRotationAngle = 60; private int mMaxZoom = -220; private int mCoveflowCenter; private float imageHeight; private float imageWidth; private float reflectionGap; private boolean withReflection; private float imageReflectionRatio; public float getImageHeight() { return imageHeight; } public void setImageHeight(final float imageHeight) { this.imageHeight = imageHeight; } public float getImageWidth() { return imageWidth; } public void setImageWidth(final float imageWidth) { this.imageWidth = imageWidth; } public float getReflectionGap() { return reflectionGap; } public void setReflectionGap(final float reflectionGap) { this.reflectionGap = reflectionGap; } public boolean isWithReflection() { return withReflection; } public void setWithReflection(final boolean withReflection) { this.withReflection = withReflection; } public void setImageReflectionRatio(final float imageReflectionRatio) { this.imageReflectionRatio = imageReflectionRatio; } public float getImageReflectionRatio() { return imageReflectionRatio; } public CoverFlow(final Context context) { super(context); this.setStaticTransformationsEnabled(true); } public CoverFlow(final Context context, final AttributeSet attrs) { this(context, attrs, android.R.attr.galleryStyle); } public CoverFlow(final Context context, final AttributeSet attrs, final int defStyle) { super(context, attrs, defStyle); parseAttributes(context, attrs); this.setStaticTransformationsEnabled(true); } public int getMaxRotationAngle() { return mMaxRotationAngle; } public void setAdapter(final SpinnerAdapter adapter,int position) { if (!(adapter instanceof AbstractCoverFlowImageAdapter)) { throw new IllegalArgumentException("The adapter should derive from " + AbstractCoverFlowImageAdapter.class.getName()); } final AbstractCoverFlowImageAdapter coverAdapter = (AbstractCoverFlowImageAdapter) adapter; coverAdapter.setWidth(imageWidth); coverAdapter.setHeight(imageHeight); if (withReflection) { final ReflectingImageAdapter reflectAdapter = new ReflectingImageAdapter(coverAdapter,position); reflectAdapter.setReflectionGap(reflectionGap); reflectAdapter.setWidthRatio(imageReflectionRatio); reflectAdapter.setWidth(imageWidth); reflectAdapter.setHeight(imageHeight * (1 + imageReflectionRatio)); super.setAdapter(reflectAdapter); } else { super.setAdapter(adapter); } } public void setMaxRotationAngle(final int maxRotationAngle) { mMaxRotationAngle = maxRotationAngle; } public int getMaxZoom() { return mMaxZoom; } public void setMaxZoom(final int maxZoom) { mMaxZoom = maxZoom; } private int getCenterOfCoverflow() { return (getWidth() - getPaddingLeft() - getPaddingRight()) / 2 + getPaddingLeft(); } private static int getCenterOfView(final View view) { return view.getLeft() + view.getWidth() / 2; } @Override protected boolean getChildStaticTransformation(final View child, final Transformation t) { final int childCenter = getCenterOfView(child); final int childWidth = child.getWidth(); int rotationAngle = 0; t.clear(); t.setTransformationType(Transformation.TYPE_MATRIX); if (childCenter == mCoveflowCenter) { transformImageBitmap((ImageView) child, t, 0); } else {
ResourceImageAdapter
package pl.polidea.coverflow; import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.util.Log; public class ResourceImageAdapter extends AbstractCoverFlowImageAdapter { private static final String TAG = ResourceImageAdapter.class .getSimpleName(); private static final int DEFAULT_LIST_SIZE = 20; private static final List<Integer> IMAGE_RESOURCE_IDS = new ArrayList<Integer>( DEFAULT_LIST_SIZE); private static final int[] DEFAULT_RESOURCE_LIST = { R.drawable.img1a, R.drawable.img2a, R.drawable.img3a, R.drawable.img4a, R.drawable.img5a, R.drawable.img6a, R.drawable.img7a, R.drawable.img8a }; private final Map<Integer, WeakReference<Bitmap>> bitmapMap = new HashMap<Integer, WeakReference<Bitmap>>(); private final Context context; private Imagedata i1;
globals
package pl.polidea.coverflow; import java.util.ArrayList; public class Global { public static ArrayList<Imagedata> i11=new ArrayList<Imagedata>(); }
ImageData p>
package pl.polidea.coverflow;
public class Imagedata { private int setResourceId; public Imagedata() {} public Imagedata(int rid) { super(); this.setResourceId=rid; } public int getSetResourceId() { return setResourceId; } public void setSetResourceId(int setResourceId) { this.setResourceId = setResourceId; } }
ReflectingImageAdapter
package pl.polidea.coverflow; import android.R.color; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorMatrix; import android.graphics.ColorMatrixColorFilter; 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.util.Log; public class ReflectingImageAdapter extends AbstractCoverFlowImageAdapter { private final AbstractCoverFlowImageAdapter linkedAdapter; private float reflectionGap; private float imageReflectionRatio; public int id; private int position=-1; public void setWidthRatio(final float imageReflectionRatio) { this.imageReflectionRatio = imageReflectionRatio; } public ReflectingImageAdapter( final AbstractCoverFlowImageAdapter linkedAdapter, int id) { super(); this.id=id; this.linkedAdapter = linkedAdapter; } public void setReflectionGap(final float reflectionGap) { this.reflectionGap = reflectionGap; } public float getReflectionGap() { return reflectionGap; } @Override protected Bitmap createBitmap(int position) {