2012-03-30 70 views
1

任何人都已經實現了像下面的carousel? 注意:項目列表不應重複,意味着在到達最後一個項目後不應先到達。請幫助我。像列表視圖滾動一樣的傳送視圖實現

carousel listview

[編輯]

enter image description here

我不想使用的ListView這一點。 任何人都可以幫助我解決這個問題。謝謝...

+1

看一看[此帖](HTTP://www.codeproject .com/Articles/146145/Android-3D-Carousel) – 2012-03-30 12:08:42

+0

你做了那個項目嗎?我需要垂直的,你可以分享一些示例代碼嗎? – 2012-08-20 09:00:16

+0

@mustafa使用下面的Renard解決方案來處理垂直的。 – Noundla 2012-08-21 04:47:30

回答

4

這應該讓你開始。重寫你的ListView像這樣:

private final Transformation mTransformation; 

public ListView3d(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    if (!isInEditMode()) { 
     setStaticTransformationsEnabled(true); 
     mTransformation = new Transformation(); 
     mTransformation.setTransformationType(Transformation.TYPE_MATRIX); 
    } else { 
     mTransformation = null; 
    }  
} 

@Override 
protected boolean getChildStaticTransformation(View child, Transformation t) { 
    mTransformation.getMatrix().reset(); 
    final int childTop = Math.max(0,child.getTop()); 
    final int parentHeight = getHeight(); 
    final float scale = (float)(parentHeight-(childTop/2))/getHeight(); 
    Log.i("scale",scale+""); 
    final float px = child.getLeft() + (child.getWidth())/2; 
    final float py = child.getTop() + (child.getHeight())/2; 
    mTransformation.getMatrix().postScale(scale, scale, px, py); 
    t.compose(mTransformation); 
    return true; 
} 

在getChildStaticTransformation您可以通過相應操作矩陣實現各種效果(甚至是3D)。 一個很好的教程(它使用的另一種技術,可以發現here

+0

通過上面的列表視圖項目是基於位置獲取彼此之間的一些空間。但我不需要,所以我如何刪除該空間.. – Noundla 2012-04-03 06:52:16

+0

@Renard我怎麼能實現這一個http://stackoverflow.com/questions/20417882/list-view-with-change-width-of-row-什麼時候滾動android的? – kyogs 2013-12-31 12:02:40

1

這可以使用自定義列表視圖來實現。在列表活動中使用適配器將使其成爲可能。一看here會讓你更清楚。