欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android开源堆叠滑动控件仿探探效果

程序员文章站 2023-10-23 15:54:17
堆叠滑动控件,类似于社交软件探探的效果,并增加以下扩展: 支持滑动方向控制 支持消失方向控制 支持嵌入到viewpager等滑动控件 支持内嵌listview,...

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

支持滑动方向控制
支持消失方向控制
支持嵌入到viewpager等滑动控件
支持内嵌listview,recycleview等滑动控件

效果演示

 Android开源堆叠滑动控件仿探探效果

Android开源堆叠滑动控件仿探探效果

Android开源堆叠滑动控件仿探探效果

如何使用
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属性设置:

Android开源堆叠滑动控件仿探探效果

设置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;
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。