zoukankan      html  css  js  c++  java
  • 指令汇B新闻客户端开发(二) 主页面布局

    这个主页面采用了一个开源框架SlidingMenu,这个可以在git上面下载。把这些下载下来的文件import我们的eclipse中,用我们的项目去加载这个library,在这个过程中很有可能会报错,说丢失文件,这个时候我们可以尝试一下把support-v4这个包改一下,具体问题可以进一步找度娘解决。对了,主页面也是要求清单文件里面注册的哦!




    我们用fragment来做:初始化fragment, 将fragment数据填充给布局文件

    private void initFragment() {
    		FragmentManager fm = getSupportFragmentManager();
    		FragmentTransaction transaction = fm.beginTransaction();// 开启事务
    
    		transaction.replace(R.id.fl_left_menu, new LeftMenuFragment(),
    				FRAGMENT_LEFT_MENU);// 用fragment替换framelayout
    		transaction.replace(R.id.fl_content, new ContentFragment(),
    				FRAGMENT_CONTENT);
    
    		transaction.commit();// 提交事务
    		// Fragment leftMenuFragment = fm.findFragmentByTag(FRAGMENT_LEFT_MENU);
    	}
    

    我们把整个页面分为contentFragment和leftFragment;



    先来看contentFragment页面的布局文件,它需要5个RadioButton,包含在一个RadioGroup中,还有一个ViewPager

    <RadioGroup
            android:id="@+id/rg_group"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bottom_tab_bg"
            android:orientation="horizontal" >
    
            <RadioButton
                android:id="@+id/rb_home"
                style="@style/BottomTabStyle"
                android:drawableTop="@drawable/btn_tab_home_selector"
                android:text="首页" />
    
            <RadioButton
                android:id="@+id/rb_news"
                style="@style/BottomTabStyle"
                android:drawableTop="@drawable/btn_tab_news_selector"
                android:text="新闻中心" />
    
            <RadioButton
                android:id="@+id/rb_smart"
                style="@style/BottomTabStyle"
                android:drawableTop="@drawable/btn_tab_smart_selector"
                android:text="智慧服务" />
    
            <RadioButton
                android:id="@+id/rb_gov"
                style="@style/BottomTabStyle"
                android:drawableTop="@drawable/btn_tab_gov_selector"
                android:text="政务" />
    
            <RadioButton
                android:id="@+id/rb_setting"
                style="@style/BottomTabStyle"
                android:drawableTop="@drawable/btn_tab_setting_selector"
                android:text="设置" />

    同时我们还需要添加一个自定义控件:

    <com.zhilinghui.b.View.NoScrollViewPager
            android:id="@+id/vp_content"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />


    我们直接来看主页面的代码:

    public class ContentFragment extends BaseFragment {
    
    	@ViewInject(R.id.rg_group)
    	private RadioGroup rgGroup;
    
    	@ViewInject(R.id.vp_content)
    	private ViewPager mViewPager;
    
    	private ArrayList<BasePager> mPagerList;
    
    	@Override
    	public View initViews() {
    		View view = View.inflate(mActivity, R.layout.fragment_content, null);
    		// rgGroup = (RadioGroup) view.findViewById(R.id.rg_group);
    		ViewUtils.inject(this, view); // 注入view和事件
    		return view;
    	}
    
    	@Override
    	public void initData() {
    		rgGroup.check(R.id.rb_home);// 默认勾选首页
    
    		// 初始化5个子页面
    		mPagerList = new ArrayList<BasePager>();
    		// for (int i = 0; i < 5; i++) {
    		// BasePager pager = new BasePager(mActivity);
    		// mPagerList.add(pager);
    		// }
    		mPagerList.add(new HomePager(mActivity));
    		mPagerList.add(new NewsCenterPager(mActivity));
    		mPagerList.add(new SmartServicePager(mActivity));
    		mPagerList.add(new GovAffairsPager(mActivity));
    		mPagerList.add(new SettingPager(mActivity));
    
    		mViewPager.setAdapter(new ContentAdapter());
    
    		// 监听RadioGroup的选择事件
    		rgGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
    
    			@Override
    			public void onCheckedChanged(RadioGroup group, int checkedId) {
    				switch (checkedId) {
    				case R.id.rb_home:
    					// mViewPager.setCurrentItem(0);// 设置当前页面
    					mViewPager.setCurrentItem(0, false);// 去掉切换页面的动画
    					break;
    				case R.id.rb_news:
    					mViewPager.setCurrentItem(1, false);// 设置当前页面
    					break;
    				case R.id.rb_smart:
    					mViewPager.setCurrentItem(2, false);// 设置当前页面
    					break;
    				case R.id.rb_gov:
    					mViewPager.setCurrentItem(3, false);// 设置当前页面
    					break;
    				case R.id.rb_setting:
    					mViewPager.setCurrentItem(4, false);// 设置当前页面
    					break;
    
    				default:
    					break;
    				}
    			}
    		});
    
    		mViewPager.setOnPageChangeListener(new OnPageChangeListener() {
    
    			@Override
    			public void onPageSelected(int arg0) {
    				mPagerList.get(arg0).initData();// 获取当前被选中的页面, 初始化该页面数据
    			}
    
    			@Override
    			public void onPageScrolled(int arg0, float arg1, int arg2) {
    
    			}
    
    			@Override
    			public void onPageScrollStateChanged(int arg0) {
    
    			}
    		});
    
    		mPagerList.get(0).initData();// 初始化首页数据
    	}
    
    	class ContentAdapter extends PagerAdapter {
    
    		@Override
    		public int getCount() {
    			return mPagerList.size();
    		}
    
    		@Override
    		public boolean isViewFromObject(View arg0, Object arg1) {
    			return arg0 == arg1;
    		}
    
    		@Override
    		public Object instantiateItem(ViewGroup container, int position) {
    			BasePager pager = mPagerList.get(position);
    			container.addView(pager.mRootView);
    			// pager.initData();// 初始化数据.... 不要放在此处初始化数据, 否则会预加载下一个页面
    			return pager.mRootView;
    		}
    
    		@Override
    		public void destroyItem(ViewGroup container, int position, Object object) {
    			container.removeView((View) object);
    		}
    
    	}
    
    
    


    到目前为止,首页的框架算是搭建完成了,还有左侧滑栏没有说。





  • 相关阅读:
    ExecutorService 和 NSOperationQueue
    Android 中的AsyncTask
    正则表达式里"-"中划线的使用注意
    Android studio 程序升级和sdk manager 升级方法
    推荐一篇java抽象类和接口区别的文章
    Android measure和layout的一点理解
    Android 屏幕旋转
    Android 中的openurl
    UML 序列图一点理解
    Android Studio中的Module,Facet
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6314917.html
Copyright © 2011-2022 走看看