Androidの手ぶれ音の上下スライドレイアウト
ドトーン上下スライド、モニター再生、オートトップ、吸底効果、参考にしてください。具体的な内容は以下の通りです。
RecyclerView+PagerSnapHelperを使って実現します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
RecyclerView+PagerSnapHelperを使って実現します。
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();
}
/**
* manager recycleview
* @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:
// item
View snapView = pagerSnapHelper.findSnapView(this);
if (onViewPagerListener != null){
onViewPagerListener.onPageSelected(false,snapView);
}
break;
}
super.onScrollStateChanged(state);
}
}
recyclerView.set LayoutManager()でいいです。
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);
}
});
}
コード:MyUiDemo以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。