package com.chinaztt.fda.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.HorizontalScrollView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.chinaztt.fda.adapter.CNKFixedPagerAdapter;
import com.chinaztt.fda.application.FDApplication;
import com.chinaztt.fda.ui.R;
import org.w3c.dom.Text;
import java.util.ArrayList;
import java.util.List;
/**
* 当前类注释:
* 项目名:FastDev4Android
* 包名:com.chinaztt.fda.fragment
* 作者:江清清 on 15/12/2 09:43
* 邮箱:jiangqqlmj@163.com
* QQ: 781931404
* 公司:江苏中天科技软件技术有限公司
*/
public class InfoFragment extends Fragment implements ViewPager.OnPageChangeListener{
private View mView;
ViewPager info_viewpager;
private List<Fragment> fragments;
private CNKFixedPagerAdapter mPagerAdater;
private String[] titles=new String[]{"全部","氪TV","O2O","新硬件","Fun!!","企业服务","Fit&Health","在线教育","互联网金融","大公司","专栏","新产品"};
/**
* 当前选择的分类
*/
private int mCurClassIndex=0;
/**
* 选择的分类字体颜色
*/
private int mColorSelected;
/**
* 非选择的分类字体颜色
*/
private int mColorUnSelected;
/**
* 水平滚动的Tab容器
*/
private HorizontalScrollView mScrollBar;
/**
* 分类导航的容器
*/
private ViewGroup mClassContainer;
/**
* 水平滚动X
*/
private int mScrollX=0;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(mView==null){
mView=inflater.inflate(R.layout.info_fragment_layout,container,false);
initViews();
initValidata();
}
return mView;
}
/**
* 初始化布局控件
*/
private void initViews(){
info_viewpager=(ViewPager)mView.findViewById(R.id.info_viewpager);
mScrollBar=(HorizontalScrollView)mView.findViewById(R.id.horizontal_info);
mClassContainer=(ViewGroup)mView.findViewById(R.id.linearlayout_container);
}
private void initValidata(){
mColorSelected= FDApplication.getInstance().getResources().getColor(R.color.color_selected);
mColorUnSelected=FDApplication.getInstance().getResources().getColor(R.color.color_unselected);
//添加Tab标签
addScrollView(titles);
mScrollBar.post(new Runnable() {
@Override
public void run() {
mScrollBar.scrollTo(mScrollX, 0);
}
});
fragments=new ArrayList<>();
for(int i=0;i<12;i++){
OneFragment oneFragment=new OneFragment();
Bundle bundle=new Bundle();
bundle.putString("extra",titles[i]);
oneFragment.setArguments(bundle);
fragments.add(oneFragment);
}
mPagerAdater=new CNKFixedPagerAdapter(getChildFragmentManager());
mPagerAdater.setTitles(titles);
mPagerAdater.setFragments(fragments);
info_viewpager.setAdapter(mPagerAdater);
info_viewpager.setOnPageChangeListener(this);
}
/**
* 动态添加顶部Tab滑动的标签
* @param titles
*/
private void addScrollView(String[] titles){
LayoutInflater mLayoutInflater=LayoutInflater.from(FDApplication.getInstance());
final int count=titles.length;
for(int i=0;i<count;i++){
final String title=titles[i];
final View view=mLayoutInflater.inflate(R.layout.horizontal_item_layout,null);
final LinearLayout linearLayout=(LinearLayout)view.findViewById(R.id.horizontal_linearlayout_type);
final ImageView img_type=(ImageView)view.findViewById(R.id.horizontal_img_type);
final TextView type_name=(TextView)view.findViewById(R.id.horizontal_tv_type);
type_name.setText(title);
if(i==mCurClassIndex){
//已经选中
type_name.setTextColor(mColorSelected);
img_type.setImageResource(R.drawable.bottom_line_blue);
}else {
//未选中
type_name.setTextColor(mColorUnSelected);
img_type.setImageResource(R.drawable.bottom_line_gray);
}
final int index=i;
//点击顶部Tab标签,动态设置下面的ViewPager页面
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//首先设置当前的Item为正常状态
View currentItem=mClassContainer.getChildAt(mCurClassIndex);
((TextView)(currentItem.findViewById(R.id.horizontal_tv_type))).setTextColor(mColorUnSelected);
((ImageView)(currentItem.findViewById(R.id.horizontal_img_type))).setImageResource(R.drawable.bottom_line_gray);
mCurClassIndex=index;
//设置点击状态
img_type.setImageResource(R.drawable.bottom_line_blue);
type_name.setTextColor(mColorSelected);
//跳转到指定的ViewPager
info_viewpager.setCurrentItem(mCurClassIndex);
}
});
mClassContainer.addView(view);
}
}
//下面三个回调方法 分别是在ViewPager进行滑动的时候调用
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
//首先设置当前的Item为正常状态
View preView=mClassContainer.getChildAt(mCurClassIndex);
((TextView)(preView.findViewById(R.id.horizontal_tv_type))).setTextColor(mColorUnSelected);
((ImageView)(preView.findViewById(R.id.horizontal_img_type))).setImageResource(R.drawable.bottom_line_gray);
mCurClassIndex=position;
//设置当前为选中状态
View currentItem=mClassContainer.getChildAt(mCurClassIndex);
((ImageView)(currentItem.findViewById(R.id.horizontal_img_type))).setImageResource(R.drawable.bottom_line_blue);
((TextView)(currentItem.findViewById(R.id.horizontal_tv_type))).setTextColor(mColorSelected);
//这边移动的距离 是经过计算粗略得出来的
mScrollX=currentItem.getLeft()-300;
Log.d("zttjiangqq", "mScrollX:" + mScrollX);
mScrollBar.post(new Runnable() {
@Override
public void run() {
mScrollBar.scrollTo(mScrollX,0);
}
});
}
@Override
public void onPageScrollStateChanged(int state) {
}
}