时间:2021-09-04 09:48:15 | 栏目:Android代码 | 点击:次
堆叠滑动控件,类似于社交软件探探的效果,并增加以下扩展:
支持滑动方向控制
支持消失方向控制
支持嵌入到ViewPager等滑动控件
支持内嵌ListView,RecycleView等滑动控件
效果演示
如何使用
xml引入StackCardsView:
<com.beyondsw.lib.widget.StackCardsView android:id="@+id/cards" android:layout_width="match_parent" android:layout_height="match_parent" app:itemHeight="340dp" app:itemWidth="340dp" android:paddingBottom="66dp" android:clipToPadding="false" />
支持的xml属性设置:
设置adapter:
mCardsView = Utils.findViewById(root,R.id.cards); mCardsView.addOnCardSwipedListener(this); mAdapter = new CardAdapter(); mCardsView.setAdapter(mAdapter); public class CardAdapter extends StackCardsView.Adapter { private List<BaseCardItem> mItems; public void appendItems(List<BaseCardItem> items){ int size = items == null ? 0 : items.size(); if (size == 0) { return; } if (mItems == null) { mItems = new ArrayList<>(size); } mItems.addAll(items); notifyDataSetChanged(); } public void remove(int position){ mItems.remove(position); notifyItemRemoved(position); } @Override public int getCount() { return mItems == null ? 0 : mItems.size(); } @Override public View getView(int position, View convertView, ViewGroup parent) { return mItems.get(position).getView(convertView,parent); } @Override public int getSwipeDirection(int position) { //这里控制每张卡的支持滑动超过一定距离消失的方向 BaseCardItem item = mItems.get(position); return item.swipeDir; } @Override public int getDismissDirection(int position) { //这里控制每张卡的支持滑动超过一定距离消失的方向 BaseCardItem item = mItems.get(position); return item.dismissDir; } @Override public boolean isFastDismissAllowed(int position) { //这里控制每张卡的支持快速滑动消失的方向 BaseCardItem item = mItems.get(position); return item.fastDismissAllowed; } @Override public int getMaxRotation(int position) { //这里控制每张卡的最大旋转角 BaseCardItem item = mItems.get(position); return item.maxRotation; } }