StackCardsView

Android高仿探探首页滑动效果

  • 所有者: wensefu/StackCardsView
  • 平台:
  • 許可證: Apache License 2.0
  • 分類:
  • 主題:
  • 喜歡:
    0
      比較:

Github星跟蹤圖

StackCardsView

demo apk download

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

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

效果演示

演示1-快速滑动飞出     演示2-代码控制飞出

演示3-嵌入到ViewPager     演示4-内嵌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;
    }
}

问题反馈

License

Copyright 2017 wensefu
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

主要指標

概覽
名稱與所有者wensefu/StackCardsView
主編程語言Java
編程語言Java (語言數: 1)
平台
許可證Apache License 2.0
所有者活动
創建於2017-02-12 16:20:48
推送於2017-03-09 11:36:24
最后一次提交2017-03-09 19:36:16
發布數0
用户参与
星數318
關注者數8
派生數64
提交數100
已啟用問題?
問題數15
打開的問題數12
拉請求數0
打開的拉請求數0
關閉的拉請求數0
项目设置
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?