Android Cover Flow with image shadow effect

大兔子大兔子 提交于 2019-12-04 19:07:18

Definitely have a look at this, FancyCoverFlow.

There is a demo app for it in the Play store as well that shows the reflection requirement you'd like.

have you tried this:

blog post

public Bitmap getRefelection(Bitmap image) {
  // The gap we want between the reflection and the original image
  final int reflectionGap = 0;

  // Get you bit map from drawable folder
  Bitmap originalImage = image;

  int width = originalImage.getWidth();
  int height = originalImage.getHeight();

  // This will not scale but will flip on the Y axis
  Matrix matrix = new Matrix();
  matrix.preScale(1, -1);

  // Create a Bitmap with the flip matix applied to it.
  // We only want the bottom half of the image
  /*if(bitmapWithReflection!=null && !bitmapWithReflection.isRecycled()){
   bitmapWithReflection.recycle();
   bitmapWithReflection=null;
  }*/
  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 the reflection Image
  canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);

  // 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, 0x40ffffff, 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);
  if(originalImage!=null && originalImage.isRecycled()){
   originalImage.recycle();
   originalImage=null;
  }
  if(reflectionImage!=null && reflectionImage.isRecycled()){
   reflectionImage.recycle();
   reflectionImage=null;
  }
  return bitmapWithReflection;
 }

Have you gone through the Android Coverflow which is bit different form the Carousel which you want.

I made cover flow widget which is not dependent on gallery. You can find it here. I will add some samples later.

http://applm.github.io/ma-components/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!