RecyclerView
public class NoticeRecyclerView extends RecyclerView {
private static final int delayTime = 16;
private boolean running = false; //标示是否正在自动轮询
private boolean canRun = true;//标示是否可以自动轮询,可在不需要的是否置false
public NoticeRecyclerView(@NonNull Context context) {
super(context);
}
public NoticeRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public NoticeRecyclerView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
private final Runnable mTask = new Runnable() {
@Override
public void run() {
if (running && canRun) {
scrollBy(2,0);
postDelayed(mTask, delayTime);
}
}
};
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
stopPlay();
}
public void stopPlay() {
running = false;
removeCallbacks(mTask);
}
public void startPlay() {
canRun = true;
running = true;
removeCallbacks(mTask);
// 这里没调用Handler,view里面自带postDelayed
postDelayed(mTask, delayTime);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
return false;
}
}
使用
LinearLayoutManager layoutManager = new LinearLayoutManager(requireContext());
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
noticeRv.setLayoutManager(layoutManager);
noticeRv.setAdapter(new NoticeRecyclerViewAdapter());
noticeRv.startPlay();