[英]Android Vertical View Pager with card stack
為了獲得沒有任何庫依賴性的垂直View Pager ,您可以按照以下步驟操作:
在您的activity_main.xml中
<android.support.v4.view.ViewPager android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="600dp" android:id="@+id/viewpager"> </android.support.v4.view.ViewPager>
在您的viewpager_contents.xml中
您可以根據上圖創建所需的設計。
4.在MainActivity.java中 ,設置適配器和pageTransformer后,添加以下代碼。
private class ViewPagerStack implements ViewPager.PageTransformer {
@Override
public void transformPage(View page, float position) {
if (position >= 0) {
page.setScaleX(0.7f - 0.05f * position);
page.setScaleY(0.7f);
page.setTranslationX(-page.getWidth() * position);
page.setTranslationY(30 * position);
}
}
}
有關詳細參考,您可以觀看以下視頻: 單擊此處
希望您能得到所需的輸出!!
您可以使用SwipeStack庫 。 它完全可以滿足您的要求-它基本上是一個視圖組,可以根據您的適配器實現來擴展視圖,並將它們一個放在另一個之上。
魔術在這里https://github.com/yuyakaido/CardStackView 。 您可以輕松自定義所需的內容。 快樂的編碼:)
上述解決方案都無法對我有效。 這是我的解決方案:
我的PageTransformer類:
class ViewPagerCardTransformer : ViewPager.PageTransformer {
override fun transformPage(page: View, position: Float) {
if (position >= 0) {
page.scaleX = 0.9f - 0.05f * position
page.scaleY = 0.9f
page.alpha = 1f - 0.3f * position
page.translationX = -page.width * position
page.translationY = -30 * position
} else {
page.alpha = 1 + 0.3f * position
page.scaleX = 0.9f + 0.05f * position
page.scaleY = 0.9f
page.translationX = page.width * position
page.translationY = 30 * position
}
}
}
我的片段中的代碼:
val adapter = MyPagerAdapter(pageItems)
viewPager.adapter = adapter
/*below line will increase the number of cards stacked on top of
each other it is set to 1 by default. don't increase it too much as you
will end up with too much view page items in your memory
*/
mDaysViewPager.offscreenPageLimit = 3
viewPager.setPageTransformer(true, ViewPagerCardTransformer())
不要將任何VerticalViewPager與帶有PagerSnapHelper的簡單RecyclerView一起使用,就可以像非常平滑的方式一樣實現它,並將所需的布局添加到其中。 您可以獲得更好的性能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.