【问题标题】:Android Cover Flow with image shadow effect带有图像阴影效果的 Android Cover Flow
【发布时间】:2013-10-04 05:26:37
【问题描述】:

我想实现如下封面流程

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

【问题讨论】:

标签: android image effects shadow coverflow


【解决方案1】:

一定要看看这个,FancyCoverFlow

在 Play 商店中也有一个演示应用程序,它显示了您想要的反射要求。

【讨论】:

  • 但是,您的页面链接似乎已损坏,因为自从我推荐它以来已经有一年多的时间了,并且不再维护它,而且 Lollipop 的大量更改可能会导致它无法使用或更少有利于较新的 github 善良,我可能会考虑寻找其他东西。不幸的是,我目前不知道有任何替代方案。
【解决方案2】:

你试过这个吗:

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;
 }

【讨论】:

  • 谢谢@hamad,你有没有实现反射的封面流的例子,作为我问题的一半解决方案:)
  • 是的,但首先要支持我的答案并将其标记为其他人帮助的答案,并访问此内容以获取coverflow源code.google.com/p/android-coverflow/source/browse
【解决方案3】:

您是否通过与您想要的轮播有点不同的Android Coverflow

【讨论】:

  • @GrlsHu,它使用在 API 级别 16 中被贬低的画廊视图 :(,对其的评论也表明它有很多错误。
  • 我知道galleryview 已被弃用,并不是说它不起作用。
【解决方案4】:

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

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

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 2017-08-28
    • 2019-07-22
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多