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

支持滑动方向控制

支持消失方向控制

支持嵌入到ViewPager等滑动控件

支持内嵌ListView,RecycleView等滑动控件

效果演示

55c3e0e8be0c

55c3e0e8be0c

55c3e0e8be0c

55c3e0e8be0c

如何使用

xml引入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 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;

}

}

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐