Android开发中回收视图创建自动循环效果
来源:爱站网时间:2020-10-21编辑:网友分享
我们为了让项目变得美观新颖,通常会使用到循环滚动这个操作,在android开发中我们常用的是recyclerview,今天爱站技术频道小编为大家带来了Android开发中回收视图创建自动循环效果,希望能帮到您。
我们为了让项目变得美观新颖,通常会使用到循环滚动这个操作,在android开发中我们常用的是recyclerview,今天爱站技术频道小编为大家带来了Android开发中回收视图创建自动循环效果,希望能帮到您。
先看效果图

主要处理的地方:
1、RecyclerView中Adapter的item个人可以无限轮询.
2、RecyclerView自动滑动
3、手指按下时滑动停止,手指抬起后继续自动滑动
public class AutoPollRecyclerView extends RecyclerView {
private static final long TIME_AUTO_POLL = 16;
AutoPollTask autoPollTask;
private boolean running; //标示是否正在自动轮询
private boolean canRun;//标示是否可以自动轮询,可在不需要的是否置false
public AutoPollRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
autoPollTask = new AutoPollTask(this);
}
static class AutoPollTask implements Runnable {
private final WeakReference mReference;
//使用弱引用持有外部类引用->防止内存泄漏
public AutoPollTask(AutoPollRecyclerView reference) {
this.mReference = new WeakReference(reference);
}
@Override
public void run() {
AutoPollRecyclerView recyclerView = mReference.get();
if (recyclerView != null && recyclerView.running &&recyclerView.canRun) {
recyclerView.scrollBy(2, 2);
recyclerView.postDelayed(recyclerView.autoPollTask,recyclerView.TIME_AUTO_POLL);
}
}
}
//开启:如果正在运行,先停止->再开启
public void start() {
if (running)
stop();
canRun = true;
running = true;
postDelayed(autoPollTask,TIME_AUTO_POLL);
}
public void stop(){
running = false;
removeCallbacks(autoPollTask);
}
@Override
public boolean onTouchEvent(MotionEvent e) {
switch (e.getAction()){
case MotionEvent.ACTION_DOWN:
if (running)
stop();
break;
case MotionEvent.ACTION_UP:
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_OUTSIDE:
if (canRun)
start();
break;
}
return super.onTouchEvent(e);
}
}
Adapter处理:主要处理getItemCount()和数据填充的onBindViewHolder()方法
public class AutoPollAdapter extends RecyclerView.Adapter{ private final Context mContext; private final List mData; public AutoPollAdapter(Context context, List list) { this.mContext = context; this.mData = list; } @Override public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(mContext).inflate(R.layout.item_auto_poll, parent, false); BaseViewHolder holder = new BaseViewHolder(view); return holder; } @Override public void onBindViewHolder(BaseViewHolder holder, int position) { String data = mData.get(position%mData.size()); holder.setText(R.id.tv_content,data); } @Override public int getItemCount() { return Integer.MAX_VALUE; } }
最后附上Activity调用的代码
public class AutoPollRecyclerActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_auto_poll);
initToolBar();
initView();
}
private void initView() {
AutoPollRecyclerView mRecyclerView = (AutoPollRecyclerView) findViewById(R.id.rv_recycleView);
List list = new ArrayList();
for (int i = 0; i 自己处理
mRecyclerView.start();
}
}
以上就是爱站技术频道小编介绍的Android开发中回收视图创建自动循环效果,学习要结合书本知识和实际操作,我们了解完之后都要再项目上操作看看哦。
