ViewPager 轮播图,添加指示点

效果图
重要的地方都加了注释,

public class MyViewpagerFragment extends Activity {

    private ViewPager mViewPager;
    private List<View> mViews = new ArrayList<>();//轮播页集合
    private ImageView[] mImageViews;//指示点集合
    private ImageView imageView ;
    private LinearLayout mDot;//指示点

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_viewpager_fragment);

        initView();

    }

    private void initView() {
        mViewPager = (ViewPager) findViewById(R.id.id_viewpager);
        mDot = (LinearLayout) findViewById(R.id.viewGroup);
        /**将布局添加到 Viewpager 中*/
        LayoutInflater inflater = LayoutInflater.from(this);
        View tab01 =  inflater.inflate(R.layout.tan01, null);
        View tab02 =  inflater.inflate(R.layout.tan02, null);
        View tab03 =  inflater.inflate(R.layout.tan03, null);
        View tab04 =  inflater.inflate(R.layout.tan04, null);

        mViews.add(tab01);
        mViews.add(tab02);
        mViews.add(tab03);
        mViews.add(tab04);

        mImageViews = new ImageView[mViews.size()];
        for (int  i= 0; i < mViews.size();i++){
            imageView = new ImageView(this);
            imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
            mImageViews[i] = imageView;
            if (i == 0) {
                mImageViews[i].setBackgroundResource(R.drawable.dot_focus);
            } else {
                mImageViews[i].setBackgroundResource(R.drawable.dot_blur);
            }
//            轮播框架id 实例化group
// 在group框架中添加view,i就是圆点。
            mDot.addView(mImageViews[i]);
        }



        mViewPager.setAdapter(new mPagerAdapter(mViews));
        mViewPager.setOnPageChangeListener(new PageChangeListener());


    }


    /**滑动监听器*/
    private class PageChangeListener implements ViewPager.OnPageChangeListener {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
        }

        /**滑动完成后调用*/
        @Override
        public void onPageSelected(int position) {
            for (int i=0; i < mImageViews.length; i++){
                mImageViews[i].setBackgroundResource(R.drawable.dot_focus);
                if (position != i){
                    mImageViews[i].setBackgroundResource(R.drawable.dot_blur);
                }
            }
        }
        @Override
        public void onPageScrollStateChanged(int state) {
        }
    }

    private class mPagerAdapter extends PagerAdapter {


        private List<View> views = null;
        public mPagerAdapter(List<View> mViews) {
            this.views = mViews;
        }

        /**销毁Item*/
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            ((ViewPager) container).removeView(views.get(position));
        }

        /**初始化Item*/
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            View view = mViews.get(position);
            container.addView(view);
            return view;
        }
        /**有多少个页面*/
        @Override
        public int getCount() {
            return mViews.size();
        }

        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值