Android View之组合控件实例(二)

Android View之组合控件实例(二)_第1张图片

   <string-array name="bao_type">
        <item>测试1</item>
        <item>测试2</item>
        <item>测试3</item>
        <item>测试4</item>
    </string-array>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/gray_common_background"
    android:orientation="vertical">



    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/txt_viewpage_bar1"
            style="@style/style_common_pagebar"
            android:textColor="@color/theme_red" />

        <TextView
            android:id="@+id/txt_viewpage_bar2"
            style="@style/style_common_pagebar" />

        <TextView
            android:id="@+id/txt_viewpage_bar3"
            style="@style/style_common_pagebar" />

        <TextView
            android:id="@+id/txt_viewpage_bar4"
            style="@style/style_common_pagebar" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <View
            android:id="@+id/view_viewpage_bar1"
            style="@style/style_common_pagebar_view" />

        <View
            android:id="@+id/view_viewpage_bar2"
            style="@style/style_common_pagebar_view" />

        <View
            android:id="@+id/view_viewpage_bar3"
            style="@style/style_common_pagebar_view" />

        <View
            android:id="@+id/view_viewpage_bar4"
            style="@style/style_common_pagebar_view" />
    </LinearLayout>



    <android.support.v4.view.ViewPager
        android:id="@+id/common_viewpage_buttom"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
</LinearLayout>



  public interface SlbPageViewOnPageChangeListener {
        void onPageSelected(int position);

        void onPageScrollStateChanged(int state);
    }

public class SlbPageViewBar extends LinearLayout {





    private TextView[] mTotalTxtViews;
    private View[] mTotalViews;
    private List<TextView> mTxtViews;
    private List<View> mViews;

    private ViewPager mViewPager;
    private SlbPageViewOnPageChangeListener mSlbPageViewOnPageChangeListener;


    public SlbPageViewBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        mTotalTxtViews = new TextView[4];
        mTotalViews = new View[4];
        mTxtViews = new ArrayList<>();
        mViews = new ArrayList<>();
        initView();
    }

    private void initView() {
        View.inflate(getContext(), R.layout.layout_common_top_pageview_bar, this);
        mViewPager = (ViewPager) findViewById(R.id.common_viewpage_buttom);
        mTotalTxtViews[0] = (TextView) findViewById(R.id.txt_viewpage_bar1);
        mTotalTxtViews[1] = (TextView) findViewById(R.id.txt_viewpage_bar2);
        mTotalTxtViews[2] = (TextView) findViewById(R.id.txt_viewpage_bar3);
        mTotalTxtViews[3] = (TextView) findViewById(R.id.txt_viewpage_bar4);
        mTotalViews[0] = findViewById(R.id.view_viewpage_bar1);
        mTotalViews[1] = findViewById(R.id.view_viewpage_bar2);
        mTotalViews[2] = findViewById(R.id.view_viewpage_bar3);
        mTotalViews[3] = findViewById(R.id.view_viewpage_bar4);

    }

    /**
     * @param title 标题名称数组
     */

    public void setTitleView(String[] title) {
        int legth = title.length > 4 ? 4 : title.length;
        for (int i = 0; i < legth; i++) {
            mTotalTxtViews[i].setText(title[i]);
            mTotalTxtViews[i].setVisibility(View.VISIBLE);
            mTotalViews[i].setVisibility(View.INVISIBLE);
            mTotalTxtViews[i].setOnClickListener(new SlbTextViewOnLister(i));
            mTxtViews.add(mTotalTxtViews[i]);
            mViews.add(mTotalViews[i]);
        }
        mTotalViews[0].setVisibility(View.VISIBLE);
        mViewPager.setOnPageChangeListener(mOnButtomPageChangeListener);
    }

    public ViewPager getViewPager(){
        return mViewPager;
    }

    public void setSlbPageViewOnPageChangeListener(SlbPageViewOnPageChangeListener slbPageViewOnPageChangeListener) {
        this.mSlbPageViewOnPageChangeListener = slbPageViewOnPageChangeListener;
    }

    private void changeViewBg(int textViewId, int viewId) {
        for (View view : mViews) {
            if (viewId == view.getId()) {
                view.setVisibility(View.VISIBLE);
            } else {
                view.setVisibility(View.INVISIBLE);
            }
        }
        for (TextView view : mTxtViews) {
            if (textViewId == view.getId()) {
                view.setTextColor(getResources().getColor(R.color.theme_red));
            } else {
                view.setTextColor(getResources().getColor(R.color.black_normal_text_33333));
            }
        }
    }


    class SlbTextViewOnLister implements OnClickListener {

        private int mItem;


        public SlbTextViewOnLister(int item) {
            this.mItem = item;

        }

        @Override
        public void onClick(View v) {
            mViewPager.setCurrentItem(mItem);
        }
    }

    private ViewPager.OnPageChangeListener mOnButtomPageChangeListener = new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {
            switch (position) {
                case 0:
                    changeViewBg(R.id.txt_viewpage_bar1, R.id.view_viewpage_bar1);
                    break;
                case 1:
                    changeViewBg(R.id.txt_viewpage_bar2, R.id.view_viewpage_bar2);

                    break;
                case 2:
                    changeViewBg(R.id.txt_viewpage_bar3, R.id.view_viewpage_bar3);
                    break;
                case 3:
                    changeViewBg(R.id.txt_viewpage_bar4, R.id.view_viewpage_bar4);
                    break;
            }
            if (mSlbPageViewOnPageChangeListener != null)
                mSlbPageViewOnPageChangeListener.onPageSelected(position);
        }

        @Override
        public void onPageScrollStateChanged(int state) {
            if (mSlbPageViewOnPageChangeListener != null)
                mSlbPageViewOnPageChangeListener.onPageScrollStateChanged(state);
        }
    };


}

public class CommonViewpageAdapter extends FragmentPagerAdapter {
    private List<Fragment> mFragments;
    private String [] mTitles;

    public CommonViewpageAdapter(FragmentManager fm, List<Fragment> fragments, String [] titles) {
        super(fm);
        mFragments = fragments;
        mTitles = titles;
    }

    @Override
    public Fragment getItem(int position) {
        return mFragments.get(position);
    }

    @Override
    public int getCount() {
        return mFragments.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mTitles[position];
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        super.destroyItem(container, position, object);
    }
}


 <com.slfinance.app.slb.common.ui.view.SlbPageViewBar
        android:id="@+id/slbpv_buy_huoqibao_SlbPageViewBarshow"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"/>



    private void initButtomPageFragment(SlbPageViewBar slbPageViewBar) {
        List<Fragment> fragmentList = new ArrayList<>();
        Test1Fragment test1Fragment = new Test1Fragment();
        Test2Fragment test2Fragment = new Test2Fragment();
        Test3Fragment test3Fragment = new Test3Fragment();
        Test4Fragment test4Fragment = new Test4Fragment();
        fragmentList.add(test1Fragment);
        fragmentList.add(test2Fragment);
        fragmentList.add(test3Fragment);
        fragmentList.add(test4Fragment);
        String[] titles = getResources().getStringArray(R.array.buy_huoqi_bao_zanquan_detail);
        slbPageViewBar.setTitleView(titles);
        CommonViewpageAdapter viewPagerAdapter = new CommonViewpageAdapter(
                getSupportFragmentManager(), fragmentList, titles);
        mButtomPageView.setAdapter(viewPagerAdapter);
        mButtomPageView.setOffscreenPageLimit(3);
        mButtomPageView.setCurrentItem(0);
    }



你可能感兴趣的:(android,实例,控件,android自定义控件)