1

我想实现如下封面流程

带有图像阴影的 Android Coverflow

我试过旋转木马,但它不是一回事。是否某些谷歌搜索甚至在给定示例中实现的封面流程附近都找不到东西。

4

4 回答 4

2

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.

于 2014-01-13T22:17:16.590 回答
0

我制作了不依赖于画廊的封面流小部件。你可以在这里找到它。稍后我会添加一些示例。

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

于 2014-05-19T13:09:35.143 回答
0

您是否经历过与您想要的 Carousel 有点不同的Android Coverflow 。

于 2013-10-04T05:59:18.053 回答
0

你试过这个:

博文

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;
 }
于 2013-10-04T05:48:36.837 回答