2013-10-04 31 views
1

我想要實現的Cover Flow如下Android的Cover Flow功能與圖像陰影效果

Android Coverflow with image shadow

我已經試過旋轉木馬,但它不是一回事。是否有一些谷歌搜索無法找到一些東西甚至接近在給定的例子中實現的封面流程。

+0

可以在任何告訴http://stackoverflow.com/questions/30979903/how-to-reduce-reflection-gap-in-fancycover-flow – Aditya

回答

0

你嘗試過這樣的:

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

感謝@hamad,你有例子的Cover Flow的它實現了反射,因爲它是我的問題的一半解決方案:) – kaibuki

+0

是的,但首先upvote我的答案並將其標記爲其他人的答案幫助和訪問此爲coverflow源https://code.google.com/p/android-coverflow/source/browse/ – Hamad

+1

也是這樣的:http://www.inter-fuser.com/2010/01/android-coverflow-widget.html – Hamad

0

你有沒有通過Android Coverflow這是有點不同的形式,你想要的旋轉木馬了。

+0

@GrlsHu,它使用在API級別16中折舊的圖庫視圖:(也評論它表明它有很多錯誤。 – kaibuki

+0

我知道galleryview已被棄用,它不會像它不會工作。 – GrIsHu

2

肯定看看這個,FancyCoverFlow

在Play商店中有一個演示應用程序,它也顯示您想要的反射要求。

+0

not working http://stackoverflow.com/questions/30979903/how-to-reduce-reflection-gap-in-fancycover-flow – Aditya

+0

但是,您的頁面鏈接似乎已被打破,因爲它已超過一年了,因爲我建議,並且它不再被維護,並且棒棒糖有很多變化,可能會使它不能使用或者對較新的github善良不利,我可能會考慮尋找其他的東西。不幸的是,我現在還不知道有什麼替代方案可以反思。 – jschlepp