简介:

本篇博客主要介绍的是如何使用RecyclerView实现图片水平方向自动循环(跑马灯效果)
效果图:
思路:
1.准备m张图片
1.使用Recyclerview实现,返回无数个(实际Interge.MAXVALUE)item,第n个item显示第n%m张图片
3.使用recyclerview.scrollBy 每个一段时间水平滚动一段距离
4.通过layoutManager.findFirstVisibleItemPosition()获取当前显示的第一个View是第几个item,上面的ImageView显示对应de图片
实现代码:
XML文件
1.activity布局文件activity_recy.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ImageView android:layout_width="300dp" android:layout_height="350dp" android:layout_gravity="center_horizontal" android:id="@+id/img" android:src="@drawable/p5" android:scaleType="fitXY" /> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="150dp" android:layout_marginTop="10dp" android:id="@+id/recyclerview" ></android.support.v7.widget.RecyclerView> </LinearLayout>
2.适配器布局item_horizon.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" > <ImageView android:layout_width="100dp" android:layout_height="match_parent" android:id="@+id/img" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:scaleType="fitXY" /> </LinearLayout>
Activity
public class HorizontalActivity extends AppCompatActivity implements RecyAdapter.OnItemClickListener {
private String TAG="HorizontalActivity";
@BindView(R.id.img)
ImageView img;
@BindView(R.id.recyclerview)
RecyclerView recyclerview;
private Integer[] mImgIds = {R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4, R.drawable.p5,
R.drawable.pic1, R.drawable.pic5, R.drawable.pic6};
private List<Integer> datas;
private RecyAdapter recyAdapter;
private Handler mHandler=new Handler();
private LinearLayoutManager layoutManager;
private int oldItem=0;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recy);
ButterKnife.bind(this);
initData();
initRecy();
img.setImageResource(datas.get(0));
recyAdapter.setOnItemClickListener(this);
}
Runnable scrollRunnable=new Runnable() {
@Override
public void run() {
recyclerview.scrollBy(3,0);
// int firstItem = layoutManager.findFirstVisibleItemPosition();
int firstItem=layoutManager.findFirstVisibleItemPosition();
if(firstItem!=oldItem&&firstItem>0){
oldItem=firstItem;
img.setImageResource(datas.get(oldItem%datas.size()));
}
Log.e(TAG, "run: firstItem:"+firstItem );
mHandler.postDelayed(scrollRunnable,10);
}
};
private void initRecy() {
recyAdapter=new RecyAdapter(this,datas);
layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL);
recyclerview.setLayoutManager(layoutManager);
recyclerview.setAdapter(recyAdapter);
}
private void initData() {
datas=new ArrayList<>();
for (int i = 0; i <mImgIds.length ; i++) {
datas.add(mImgIds[i]);
}
}
@Override
protected void onResume() {
super.onResume();
mHandler.postDelayed(scrollRunnable,10);
}
@Override
protected void onStop() {
super.onStop();
mHandler.removeCallbacks(scrollRunnable);
}
@Override
public void onItemClick(View view, int tag) {
Toast.makeText(this,"第"+tag+"张图片被点击了",Toast.LENGTH_SHORT).show();
}
}
适配器RecyAdapter
public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.ViewHolder> implements View.OnClickListener {
private Context context;
private List<Integer> datas;
private OnItemClickListener onItemClickListener;
public RecyAdapter(Context context, List<Integer> datas) {
this.context = context;
this.datas = datas;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item_horizontal, parent, false);
ViewHolder vh=new ViewHolder(view);
view.setOnClickListener(this);
return vh;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
int newPos=position%datas.size();
holder.img.setImageResource(datas.get(newPos));
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return Integer.MAX_VALUE;
}
@Override
public void onClick(View view) {
if(onItemClickListener!=null){
onItemClickListener.onItemClick(view, (Integer) view.getTag());
}
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView img;
public ViewHolder(View itemView) {
super(itemView);
img=itemView.findViewById(R.id.img);
}
}
public void setOnItemClickListener(OnItemClickListener listener){
this.onItemClickListener=listener;
}
interface OnItemClickListener{
void onItemClick(View view,int tag);
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Recyclerview图片水平自动循环滚动
# Recyclerview自动循环滚动
# Recyclerview图片水平滚动
# RecyclerView实现纵向和横向滚动
# RecyclerView实现抖音纵向滚动ViewPager效果
# Android RecyclerView 滚动到中间位置的方法示例
# Android RecyclerView 实现快速滚动的示例代码
# XRecyclerView实现下拉刷新、滚动到底部加载更多等功能
# Android_RecyclerView实现上下滚动广告条实例(带图片)
# Android中RecyclerView实现分页滚动的方法详解
# Android使用RecyclerView实现水平滚动控件
# Android代码实现AdapterViews和RecyclerView无限滚动
# RecyclerView实现横向滚动效果
# 的是
# 几个
# 第一个
# 如何使用
# 数个
# 大家多多
# 跑马灯
# 博客
# drawable
# img
# src
# scaleType
# widget
# fitXY
# support
# id
# orientation
# vertical
# layout_height
# layout_width
相关文章:
官网建站费用明细查询_企业建站套餐价格及收费标准指南
如何快速打造个性化非模板自助建站?
c++怎么编写动态链接库dll_c++ __declspec(dllexport)导出与调用【方法】
如何彻底删除建站之星生成的Banner?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
ppt制作免费网站有哪些,ppt模板免费下载网站?
如何在万网开始建站?分步指南解析
孙琪峥织梦建站教程如何优化数据库安全?
如何快速搭建个人网站并优化SEO?
洛阳网站制作公司有哪些,洛阳的招聘网站都有哪些?
建站之星安装后如何配置SEO及设计样式?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
视频网站app制作软件,有什么好的视频聊天网站或者软件?
高防服务器租用如何选择配置与防御等级?
如何通过商城自助建站源码实现零基础高效建站?
如何快速辨别茅台真假?关键步骤解析
Swift开发中switch语句值绑定模式
制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?
网站制作话术技巧,网站推广做的好怎么话术?
建站之星安装步骤有哪些常见问题?
公司网站制作价格怎么算,公司办个官网需要多少钱?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
如何挑选优质建站一级代理提升网站排名?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
建站DNS解析失败?如何正确配置域名服务器?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
建站之星如何保障用户数据免受黑客入侵?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
如何用IIS7快速搭建并优化网站站点?
如何快速搭建高效简练网站?
成都响应式网站开发,dw怎么把手机适应页面变成网页?
如何在阿里云高效完成企业建站全流程?
香港服务器如何优化才能显著提升网站加载速度?
深圳企业网站制作设计,在深圳如何网上全流程注册公司?
如何选择服务器才能高效搭建专属网站?
如何用PHP工具快速搭建高效网站?
阿里云网站搭建费用解析:服务器价格与建站成本优化指南
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
济南网站建设制作公司,室内设计网站一般都有哪些功能?
建站之星如何快速更换网站模板?
如何撰写建站申请书?关键要点有哪些?
如何通过老薛主机一键快速建站?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
如何在云指建站中生成FTP站点?
如何用5美元大硬盘VPS安全高效搭建个人网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。