viewpager指示点

package com.example.joe.viewpager;


import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutCompat;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;


import java.util.ArrayList;
import java.util.List;


public class GuideActivity extends AppCompatActivity implements ViewPager.OnPageChangeListener, View.OnClickListener {


    private Button btn_guide_start_experience;
    private List<ImageView> imageViewList;


    ViewPager mViewPager;
    private View mSelectPointView;
    private LinearLayout llPointGroup;


    private int pWidth;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        // 去标题, 需要在setContentView方法之前调用
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_guide);




        initView();// 初始化控件






    }


    private void initView() {
        mViewPager = (ViewPager) findViewById(R.id.vp_guide);
        btn_guide_start_experience = (Button) findViewById(R.id.btn_guide_start_experience);


        llPointGroup = (LinearLayout) findViewById(R.id.ll_guide_point_group);
        mSelectPointView = findViewById(R.id.select_point);


        initData();


        GuideAdapter adapter = new GuideAdapter();
        mViewPager.setAdapter(adapter);


        mViewPager.addOnPageChangeListener(this);// 设置监听器
        btn_guide_start_experience.setOnClickListener(this);// 按钮添加监听




    }


    /**
     * TODO:初始化ViewPager数据 void
     */


    private void initData() {
        int[] imageResIDs = new int[]{R.drawable.i3, R.drawable.i2, R.drawable.i1};
        imageViewList = new ArrayList<>();
        ImageView iv;// 图片
        View view;// 点
        LinearLayout.LayoutParams params; // 参数类


//        Log.e("", "initData: " + imageResIDs.length );
        for (int i = 0; i < imageResIDs.length; i++) {
            iv = new ImageView(this);


//            Log.e("tag",i+"");
            iv.setBackgroundResource(imageResIDs[i]);
            imageViewList.add(iv);


            // 根据图片的个数, 每循环一次向LinearLayout中添加一个点
            view = new View(this);
            view.setBackgroundResource(R.drawable.otheryuan);


            // 设置参数
            params = new LinearLayout.LayoutParams(30, 30);
            if (i != 0) {
                params.leftMargin = 30;


            }


            view.setLayoutParams(params);// 添加参数
            llPointGroup.addView(view);
        }
    }


    /**
     * 当页面正在滚动时 position 当前选中的是哪个页面 positionOffset 比例 positionOffsetPixels 偏移像素
     */
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {


        Log.e("zejian","positionOffset:-->"+positionOffset);
        Log.e("zejian","position:-->"+position);
        //获取两个点间的距离,获取一次即可
        if(pWidth==0) {
            pWidth = llPointGroup.getChildAt(1).getLeft()
                    - llPointGroup.getChildAt(0).getLeft();
        }
        // 获取点要移动的距离
        int leftMargin = (int) (pWidth * (position + positionOffset));
        // 给红点设置参数
        RelativeLayout.LayoutParams params = (android.widget.RelativeLayout.LayoutParams) mSelectPointView
                .getLayoutParams();
        params.leftMargin = leftMargin;
        mSelectPointView.setLayoutParams(params);






    }


    /**
     * 当页面被选中
     */
    @Override
    public void onPageSelected(int position) {


        // 显示体验按钮
        if (position == imageViewList.size() - 1) {
            btn_guide_start_experience.setVisibility(View.VISIBLE);// 显示
        } else {
            btn_guide_start_experience.setVisibility(View.GONE);// 隐藏
        }
    }


    /**
     * 当页面滚动状态改变
     */


    @Override
    public void onPageScrollStateChanged(int position) {


    }


    /**
     * 打开新的界面
     */
    @Override
    public void onClick(View view) {
        Toast.makeText(getApplicationContext(), "跳转新界面", Toast.LENGTH_SHORT).show();
    }


    class GuideAdapter extends PagerAdapter {
        @Override
        public int getCount() {
            return imageViewList.size();
        }


        @Override
        public boolean isViewFromObject(View view, Object object) {
            return view == object;
        }
        /*
         * 删除元素
         */
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            container.removeView((View) object);
        }


        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView iv = imageViewList.get(position);
            container.addView(iv);// 1. 向ViewPager中添加一个view对象
            return iv; // guide_1. 返回当前添加的view对象
        }




    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值