简单实现viewpager与指示器(拿走不谢)
发布日期:2021-06-28 13:23:45
浏览次数:2
分类:技术文章
本文共 3704 字,大约阅读时间需要 12 分钟。
废话不多说,直接上代码**************************指示器的工具类public class PageIndicator implements ViewPager.OnPageChangeListener { private int mPageCount;//页数 private ListmImgList;//保存img总个数 private int img_select; private int img_unSelect; public PageIndicator(Context context, LinearLayout linearLayout, int pageCount) { this.mPageCount = pageCount; mImgList = new ArrayList<>(); img_select = R.drawable.dot_select; img_unSelect = R.drawable.dot_unselect; final int imgSize = 25; for (int i = 0; i < mPageCount; i++) { ImageView imageView = new ImageView(context); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new ViewGroup.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); //为小圆点左右添加间距 params.leftMargin = 10; params.rightMargin = 10; //给小圆点一个默认大小 params.height = imgSize; params.width = imgSize; if (i == 0) { imageView.setBackgroundResource(img_select); } else { imageView.setBackgroundResource(img_unSelect); } //为LinearLayout添加ImageView linearLayout.addView(imageView, params); mImgList.add(imageView); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} @Override public void onPageSelected(int position) { for (int i = 0; i < mPageCount; i++) { //选中的页面改变小圆点为选中状态,反之为未选中 if ((position % mPageCount) == i) { (mImgList.get(i)).setBackgroundResource(img_select); } else { (mImgList.get(i)).setBackgroundResource(img_unSelect); } } } @Override public void onPageScrollStateChanged(int state) {}}
小圆点选中 dot_select
小圆点未选中
主要实现方法:
public class MainActivity extends AppCompatActivity { private ViewPager vp_loop_advertisement; private LinearLayout dot_horizontal; private ArrayListimgList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); int[] img = new int[]{R.drawable.a, R.drawable.b, R.drawable.c, R.drawable.c};//图片自己找 imgList = new ArrayList<>(); for (int i = 0; i < img.length; i++) { ImageView imageView = new ImageView(this); imageView.setImageResource(img[i]); imgList.add(imageView); } dot_horizontal = (LinearLayout) findViewById(R.id.dot_horizontal); vp_loop_advertisement = (ViewPager) findViewById(R.id.vp_loop_advertisement); vp_loop_advertisement.setAdapter(new MyAdapter()); vp_loop_advertisement.addOnPageChangeListener(new PageIndicator(this, dot_horizontal, img.length)); } private class MyAdapter extends PagerAdapter { @Override public int getCount() { return imgList.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object o) { return view == o; } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { ImageView imageView = imgList.get(position % imgList.size()); container.addView(imageView); return imageView; } @Override public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) { container.removeView((View) object); } }}
对应的xml文件activity_main
转载地址:https://blog.csdn.net/wwslina/article/details/88141326 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年04月16日 08时32分10秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java 入门笔记(转载)
2019-04-29
8uftp怎么使用,小编教你8uftp怎么使用
2019-04-29
8uftp怎么下载客户文件,8uftp怎么实现下载客户文件
2019-04-29
@RequestParam和@RequestBody的使用
2019-04-29
Appium自动化测试——测试流程
2019-04-29
接口测试中常见问题
2019-04-29
测试开发面试总结(一)
2019-04-29
移动端测试踩过的坑
2019-04-29
RuntimeException: Method ___ not mocked
2019-04-29
Vue入门笔记(一)——目录结构
2019-04-29
Vue入门笔记(二)——路由
2019-04-29
org.mockito.exceptions.misusing.InvalidUseOfMatchersException: Invalid use of argument matchers!
2019-04-29
Robolectric常用方法
2019-04-29
Robolectric之Shadows
2019-04-29
h5页面图片未加载出来问题排查
2019-04-29
互联网常用架构学习
2019-04-29
枚举的使用
2019-04-29
imooc java学习之异常与异常处理作业
2019-04-29
计算机网络-网络层
2019-04-29