美文网首页高级UI
侧滑效果[第六篇]:侧滑框架SmartSwipe之弹性拉伸效果

侧滑效果[第六篇]:侧滑框架SmartSwipe之弹性拉伸效果

作者: NoBugException | 来源:发表于2019-11-12 16:17 被阅读0次

弹性拉伸,即侧滑时,视图有被拉伸的效果。

首先看一下弹性拉伸效果:

282.gif

代码如下:

StretchConsumer.java

/**
 * @author billy.qi
 */
public class StretchConsumer extends SwipeConsumer {

    @Override
    public void onDetachFromWrapper() {
        super.onDetachFromWrapper();
        View contentView = mWrapper.getContentView();
        if (contentView != null) {
            contentView.setScaleX(1);
            contentView.setScaleY(1);
            contentView.setTranslationX(0);
            contentView.setTranslationY(0);
        }
    }

    @Override
    public void onDisplayDistanceChanged(int distanceXToDisplay, int distanceYToDisplay, int dx, int dy) {
        View contentView = mWrapper.getContentView();
        if (contentView != null) {
            if (distanceXToDisplay >= 0 && isLeftEnable() || distanceXToDisplay <= 0 && isRightEnable()) {
                contentView.setScaleX(1 + Math.abs((float) distanceXToDisplay) / mWidth);
                contentView.setTranslationX(distanceXToDisplay / 2F);
            }
            if (distanceYToDisplay >= 0 && isTopEnable() || distanceYToDisplay <= 0 && isBottomEnable()) {
                contentView.setScaleY(1 + Math.abs((float) distanceYToDisplay) / mHeight);
                contentView.setTranslationY(distanceYToDisplay / 2F);
            }
        }
    }

}

为Recycleview的Item添加横向拉伸效果

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(mContext).inflate(R.layout.recycleview_item, parent, false);
    ViewHolder holder = new ViewHolder(SmartSwipe.wrap(itemView).addConsumer(new StretchConsumer()).enableHorizontal().getWrapper());
    return holder;
}

为Recycleview本身添加纵向拉伸效果

    SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableVertical();

有关SmartSwipe框架的弹性拉伸方向,有:

  • 仅上方
SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableTop();
  • 仅下方

      SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableBottom();
    
  • 仅左方

      SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableLeft();
    
  • 仅右方

      SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableRight();
    
  • 水平方向

      SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableHorizontal();
    
  • 垂直方向

      SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableVertical();
    
  • 所有方向

      SmartSwipe.wrap(mRecyclerView).addConsumer(new StretchConsumer()).enableAllDirections();
    

[本章完...]

相关文章

网友评论

    本文标题:侧滑效果[第六篇]:侧滑框架SmartSwipe之弹性拉伸效果

    本文链接:https://www.haomeiwen.com/subject/vfifictx.html