简单实现viewpager与指示器(拿走不谢)
发布日期:2021-06-28 13:23:45 浏览次数:2 分类:技术文章

本文共 3704 字,大约阅读时间需要 12 分钟。

废话不多说,直接上代码**************************指示器的工具类public class PageIndicator implements ViewPager.OnPageChangeListener {    private int mPageCount;//页数    private List
mImgList;//保存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 ArrayList
imgList; @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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android状态栏颜色修改以及字体颜色改变小结
下一篇:收到推送后显示到通知栏且适配android8.0

发表评论

最新留言

不错!
[***.144.177.141]2024年04月16日 08时32分10秒