/**
* 简洁
* @author mac
*@创建时间2016-11-17上午11:23:48
*@描述信息TODO
主界面的搭建
工厂设计模式+适配器模式 (解耦)
高内聚,低耦合
*/
public class MainActivity extends BaseActivity
{
private PagerTab mPt_slide;
private ViewPager mVp_slide;
@Override
protected void onCreate( Bundle savedInstanceState )
{
super.onCreate(savedInstanceState);
initView();
}
private void initView( )
{
setContentView(R.layout.activity_main);
mPt_slide = (PagerTab) findViewById(R.id.pt_main_slide);
mVp_slide = (ViewPager) findViewById(R.id.vp_main_slide);
//创建适配器 把数据映射到视图上
MyFragmentAdapter fragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager()) ;
mVp_slide.setAdapter(fragmentAdapter);
//pager指针和viewPager进行绑定
mPt_slide.setViewPager(mVp_slide);
}
class MyFragmentAdapter extends FragmentPagerAdapter{
private String[] mTabNames;
public MyFragmentAdapter(FragmentManager fm) {
super(fm);
mTabNames = UIUtils.getStringArray(R.array.tab_names);//加载页面的数组
}
@Override
public CharSequence getPageTitle( int position )
{
return mTabNames[position];
}
//返回当前位置的对象
@Override
public Fragment getItem( int position )
{
BaseFragment fragment = (BaseFragment) FragmentFactory.createFragment(position);
return fragment;
}
@Override
public int getCount( )
{
return mTabNames.length;
}
}
}
public class FragmentFactory
{
private static HashMap<Integer, BaseFragment> mFragmentMap = new HashMap<Integer, BaseFragment>();
public static Fragment createFragment(int pos){
BaseFragment fragment = mFragmentMap.get(pos);
if(fragment==null){
switch (pos) {
case 0:
fragment = new HomeFragment();
break;
case 1 :
fragment = new AppFragment();
break;
case 2 :
fragment = new GameFragment();
break;
case 3 :
fragment = new SubjectFragment();
break;
case 4 :
fragment = new RecommendFragment();
break;
case 5 :
fragment = new CategoryFragment();
break;
case 6:
fragment = new HomeFragment();
break;
default:
break;
}
mFragmentMap.put(pos, fragment);
}
return fragment;
}
}
public class BaseFragment extends Fragment
{
@Override
public View onCreateView( LayoutInflater inflater , ViewGroup container ,
Bundle savedInstanceState )
{
TextView tv = new TextView(UIUtils.getContext());
tv.setText(getClass().getSimpleName());
return tv;
}
}