import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;

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

import tw.com.rockex6.IntentTest.R;

/**
 * Created by user on 2018/3/30.
 */

public class FragmentTest extends AppCompatActivity implements ViewPager.OnPageChangeListener {
    private LinearLayout ContentLayout;
    private HorizontalScrollView TopLayout;
    private RadioGroup mRadioGroup;
    private ViewPager mViewPager;
    private String[] topString = {"1"};
    private List<Fragment> mFragmentList = new ArrayList<>();
    private PageFragmentAdapter mPageFragmentAdapter;

    @Override
    public void onCreate(Bundle b) {
        super.onCreate(b);
        setContentView(R.layout.fragment_test);
        init();
        initTab();
        initViewPager();
    }

    private void init() {
        TopLayout = findViewById(R.id.top);
        ContentLayout = findViewById(R.id.content);
        mRadioGroup = findViewById(R.id.top_text);
        mViewPager = findViewById(R.id.view_pager);
        mViewPager.addOnPageChangeListener(this);
    }

    private void initTab() {
        for (int i = 0; i < topString.length; i++) {
            RadioButton radioButton = (RadioButton) LayoutInflater.from(this).inflate(R.layout.tab, null);
            radioButton.setText(String.valueOf(i + 1));
            radioButton.setTextSize(20);
            RadioGroup.LayoutParams params = new RadioGroup.LayoutParams(
                    RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT
            );
            mRadioGroup.addView(radioButton, params);
        }
        setTab(0);
    }

    private void setTab(int position) {
        RadioButton radioButton = (RadioButton) mRadioGroup.getChildAt(position);
        radioButton.setChecked(true);
        for (int i = 0; i < mRadioGroup.getChildCount(); i++) {
            mRadioGroup.getChildAt(i).setSelected(false);
        }
        radioButton.setSelected(true);
        int left = radioButton.getLeft();
        int width = radioButton.getMeasuredWidth();
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int screenWidth = metrics.widthPixels;
        int len = left + width / 2 - screenWidth / 2;
        TopLayout.smoothScrollTo(len, 0);
    }

    private void initViewPager() {
        if (mPageFragmentAdapter == null) {
            for (String title : topString) {
                FragmentTest1 baseFragment = new FragmentTest1();
                Bundle bundle = new Bundle();
                bundle.putString("title", title);
                baseFragment.setArguments(bundle);
                mFragmentList.add(baseFragment);
            }
            mPageFragmentAdapter = new PageFragmentAdapter(getSupportFragmentManager(), mFragmentList);
        }
        mViewPager.setAdapter(mPageFragmentAdapter);
        mPageFragmentAdapter.notifyDataSetChanged();
    }


    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        setTab(position);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }
}