如何解决Android ViewPager自定义轮播图播放冲突
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要讲解了"如何解决Android ViewPager自定义轮播图播放冲突",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何解决Android
千家信息网最后更新 2025年01月18日如何解决Android ViewPager自定义轮播图播放冲突
这篇文章主要讲解了"如何解决Android ViewPager自定义轮播图播放冲突",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"如何解决Android ViewPager自定义轮播图播放冲突"吧!
一定要将ArrayList集合&Handler机制传到适配器,否则无法完成展示,也解决不了滑动冲突,代码有点多,但是它通俗易懂啊
layout布局内写法:
Activity内写法:
public class Frag_01 extends Fragment { private RadioGroup radioGroup; private ViewPager pager; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.frag_01, container, false); // 找Viewpager控件 radioGroup = (RadioGroup) view.findViewById(R.id.radioGroup); pager = (ViewPager) view.findViewById(R.id.pager01); // 图片数据自拟-->drawable文件夹下 int arr[] = { R.drawable.a1, R.drawable.a2, R.drawable.a3, R.drawable.a4, R.drawable.a5 }; final ArrayListlist = new ArrayList (); for (int i = 0; i < arr.length; i++) { ImageView imageView = new ImageView(getActivity()); imageView.setImageResource(arr[i]); list.add(imageView); // 生成小圆点 RadioButton radioButton = new RadioButton(getActivity()); radioGroup.addView(radioButton); } // 默认选中第一个 radioGroup.check(radioGroup.getChildAt(0).getId()); // 适配器 pager.setAdapter(new MyPagerAdapter(list, handler)); // 页面切换监听 pager.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { //根据页面索引控制小圆点切换 arg0 %= list.size(); radioGroup.check(radioGroup.getChildAt(arg0).getId()); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { // TODO Auto-generated method stub } @Override public void onPageScrollStateChanged(int arg0) { // TODO Auto-generated method stub } }); //handler发送消息 handler.sendEmptyMessageDelayed(0, 3000); return view; } //Handler机制----------------------------------------- Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case 0: //获取到下一页的条目--->赋值给当前条目 int currentItem = pager.getCurrentItem() + 1; pager.setCurrentItem(currentItem); handler.sendEmptyMessageDelayed(0, 3000); break; default: break; } }; };}
PagerAdapter适配器的写法:(内含滑动冲突解决方案)
public class MyPagerAdapter extends PagerAdapter { private ArrayListlist; private Handler handler; //构造 public MyPagerAdapter(ArrayList list, Handler handler) { super(); this.list = list; this.handler = handler; } @Override public int getCount() { // 设置最大值 return Integer.MAX_VALUE; } @Override public boolean isViewFromObject(View arg0, Object arg1) { //当前视图和新加载视图判断-->为真才能去销毁 return arg0 == arg1; } // 添加视图 // ----该方法内包含滑动冲突---- @Override public Object instantiateItem(ViewGroup container, int position) { position %= list.size(); ImageView imageView = list.get(position); imageView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // 获取事件 int action = event.getAction(); switch (action) { case MotionEvent.ACTION_MOVE:// 滑动 handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_DOWN:// 按下 handler.removeCallbacksAndMessages(null); break; case MotionEvent.ACTION_CANCEL:// 非人为操作 handler.sendEmptyMessageDelayed(0, 3000); break; case MotionEvent.ACTION_UP:// 抬起 handler.sendEmptyMessageDelayed(0, 3000); break; } return true; } }); //获取的图片存进容器 container.addView(imageView); return imageView; } // 销毁视图 @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); }}
感谢各位的阅读,以上就是"如何解决Android ViewPager自定义轮播图播放冲突"的内容了,经过本文的学习后,相信大家对如何解决Android ViewPager自定义轮播图播放冲突这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
冲突
视图
写法
学习
内容
图片
适配器
适配
最大
通俗
事件
代码
容器
就是
布局
思路
情况
控件
数据
文件
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
sql数据库查询和判断
网络安全310分可调剂学校
游戏服务器到底有什么用
自考计算机网络安全重点考点
网络安全工程师要学的
浙江杭州模具加工erp软件开发
搭建php安装数据库
论坛下载软件开发
网安部门开展网络安全培训
软件开发和项目实施的区别
软件开发合同反悔
如何保障我们的网络安全
华中科技大学网络安全学习
运输企业安全风险数据库
赤龙服务器宝可梦MC手机版
服务器托管乐山
《网络安全法》规定 监督
子公司绩效数据库有吗
互联网科技论文1000字
怎么检查服务器支持协议
主服务器访问速度异常
软件开发比国外落后多
浙江制造软件开发教程
成华区泽福网络技术工作室
云服务器的部署方案
vyos装到服务器上性能如何
湖北网络技术助力
软件开发项目风险管理完整官方版
链接steam服务器
整车软件开发流程