android开源堆叠滑动控件,类似探探

    xiaoxiao2021-03-25  143

    源码地址(github)

    堆叠滑动控件,类似于社交软件探探的效果,并增加以下扩展:

    支持滑动方向控制支持消失方向控制支持嵌入到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属性设置:

    属性名说明类型是否必须itemWidth卡片宽度dimension是itemHeight卡片高度dimension是maxVisibleCnt不滑动时最多可以看到的卡片数integer否edgeHeight层叠效果高度dimension否scaleFactor每层相对于上层的scale系数float否alphaFactor每层相对于上层的alpha系数float否dismissFactor滑动距离超过控件宽度的多少比例时消失float否dragSensitivity滑动灵敏度float否

    设置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; } }
    转载请注明原文地址: https://ju.6miu.com/read-4596.html

    最新回复(0)