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

源码地址(github)

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

  • 支持滑动方向控制
  • 支持消失方向控制
  • 支持嵌入到ViewPager等滑动控件
  • 支持内嵌ListView,RecycleView等滑动控件

效果演示

android开源堆叠滑动控件,类似探探_第1张图片

android开源堆叠滑动控件,类似探探_第2张图片

android开源堆叠滑动控件,类似探探_第3张图片
android开源堆叠滑动控件,类似探探_第4张图片

如何使用

  • xml引入StackCardsView:
    

支持的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 mItems;

    public void appendItems(List 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;
    }
}

你可能感兴趣的:(android开源堆叠滑动控件,类似探探)