溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用Android仿抖音上下滑動布局

發(fā)布時間:2021-09-28 14:19:01 來源:億速云 閱讀:192 作者:小新 欄目:編程語言

這篇文章將為大家詳細(xì)講解有關(guān)如何使用Android仿抖音上下滑動布局,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

具體內(nèi)容如下

使用RecyclerView+PagerSnapHelper實現(xiàn)

public class DouYinLayoutManager extends LinearLayoutManager implements RecyclerView.OnChildAttachStateChangeListener{  //判斷是否上滑還是下滑  private int mDrift;  private OnViewPagerListener onViewPagerListener;  //吸頂,吸底  private PagerSnapHelper pagerSnapHelper;  public OnViewPagerListener getOnViewPagerListener() {    return onViewPagerListener;  }  public void setOnViewPagerListener(OnViewPagerListener onViewPagerListener) {    this.onViewPagerListener = onViewPagerListener;  }  public DouYinLayoutManager(Context context) {    super(context);  }  public DouYinLayoutManager(Context context, int orientation, boolean reverseLayout) {    super(context, orientation, reverseLayout);    pagerSnapHelper = new PagerSnapHelper();  }  /**   * 當(dāng)manager完全添加到recycleview中是會被調(diào)用   * @param view   */  @Override  public void onAttachedToWindow(RecyclerView view) {    view.addOnChildAttachStateChangeListener(this);    pagerSnapHelper.attachToRecyclerView(view);    super.onAttachedToWindow(view);  }  @Override  public boolean canScrollVertically() {    return super.canScrollVertically();  }  @Override  public int scrollVerticallyBy(int dy, RecyclerView.Recycler recycler, RecyclerView.State state) {    mDrift = dy;    return super.scrollVerticallyBy(dy, recycler, state);  }  @Override  public void onChildViewAttachedToWindow(@NonNull View view) {    if (mDrift > 0){      //向上滑      if (onViewPagerListener != null && Math.abs(mDrift) == view.getHeight()){        onViewPagerListener.onPageSelected(false,view);      }    }else {      //向下滑      if (onViewPagerListener != null && Math.abs(mDrift) == view.getHeight()){        onViewPagerListener.onPageSelected(true,view);      }    }  }  @Override  public void onChildViewDetachedFromWindow(@NonNull View view) {    if (mDrift >= 0){      //向上滑      if (onViewPagerListener != null){        onViewPagerListener.onPageRelease(true,view);      }    }else {      //向下滑      if (onViewPagerListener != null){        onViewPagerListener.onPageRelease(false,view);      }    }  }  @Override  public void onScrollStateChanged(int state) {    switch (state){      case RecyclerView.SCROLL_STATE_IDLE:        //當(dāng)前顯示的item        View snapView = pagerSnapHelper.findSnapView(this);        if (onViewPagerListener != null){          onViewPagerListener.onPageSelected(false,snapView);        }        break;    }    super.onScrollStateChanged(state);  }}

recyclerView.setLayoutManager()即可

recyclerView = findViewById(R.id.recyclerView_dy);    douYinLayoutManager = new DouYinLayoutManager(this, OrientationHelper.VERTICAL,false);    recyclerView.setLayoutManager(douYinLayoutManager);    recyclerView.setAdapter(new MyAdapter());    douYinLayoutManager.setOnViewPagerListener(new OnViewPagerListener() {      @Override      public void onPageRelease(boolean isNest, View position) {        releaseVideo(position);      }      @Override      public void onPageSelected(boolean isButten, View position) {        playVideo(position);      }    });  }

關(guān)于“如何使用Android仿抖音上下滑動布局”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI