平滑

来源:互联网 发布:淘宝免费代理加盟 编辑:程序博客网 时间:2024/06/02 22:05
public class MyViewpagerDic extends HorizontalScrollView implements OnClickListener {
    private LinearLayout linearLayout;
    private String[] titles;
    private List<View> listView = new ArrayList<View>();
    private ViewPager viewPager;

    // 重写方法
    public MyViewpagerDic(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        initView();
    }

    public MyViewpagerDic(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView();
    }

    public MyViewpagerDic(Context context) {
        super(context);
        initView();
    }

    // 创建方法使viewpager和平滑能够一起滑动
    public void getPager(ViewPager viewPager) {
        this.viewPager = viewPager;
        viewPager.setOnPageChangeListener(new OnPageChangeListener() {

            @Override
            public void onPageSelected(int arg0) {
                setcurron(arg0);
            }

            @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

            }
        });
    }

    // 创建线性布局
    private void initView() {
        linearLayout = new LinearLayout(getContext());
        this.addView(linearLayout);
    }

    // 展示标题
    public void setTitles(String[] titles) {
        this.titles = titles;
        listView.clear();
        for (int i = 0; i < titles.length; i++) {
            // 获得布局
            View view = View.inflate(getContext(), R.layout.menu_main, null);
            // 把布局添加到listview中
            listView.add(view);
            // 查找控件
            TextView tab = (TextView) view.findViewById(R.id.tv_tab);
            TextView line = (TextView) view.findViewById(R.id.tv_line);
            tab.setText(titles[i]);
            // 进行判断使滑动或者点击时能够改变字体颜色
            if (i == 0) {
                tab.setTextColor(Color.RED);
                line.setVisibility(VISIBLE);
            } else {
                tab.setTextColor(Color.BLACK);
                line.setVisibility(GONE);
            }
            // 给veiw id
            view.setId(i);
            // 给view设置监听
            view.setOnClickListener(this);
            LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                    LayoutParams.WRAP_CONTENT);
            linearLayout.addView(view, params);
        }

    }

    @Override
    public void onClick(View v) {
        setcurron(v.getId());

    }

    // 监听的方法
    private void setcurron(int position) {
        // 获取宽度进行计算能够展示更多的标题数据
        int width = linearLayout.getChildAt(position).getWidth();
        this.scrollTo(width * position, 0);
        for (int i = 0; i < titles.length; i++) {
            View view = listView.get(i);
            // 查找控件
            TextView tab = (TextView) view.findViewById(R.id.tv_tab);
            TextView line = (TextView) view.findViewById(R.id.tv_line);
            // 进行判断使滑动或者点击时能够改变字体颜色
            if (position == i) {
                // 设置传过来的viewpager的当前页
                viewPager.setCurrentItem(i);
                tab.setTextColor(Color.RED);
                line.setVisibility(VISIBLE);
            } else {
                tab.setTextColor(Color.BLACK);
                line.setVisibility(GONE);
            }
        }

    }
}
0 0