博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
指令汇B新闻客户端开发(二) 主页面布局
阅读量:6329 次
发布时间:2019-06-22

本文共 3765 字,大约阅读时间需要 12 分钟。

这个主页面采用了一个开源框架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

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

<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
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
(); // 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); } }

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

转载于:https://www.cnblogs.com/xiaowangba/p/6314917.html

你可能感兴趣的文章
Flash文字效果
查看>>
各种排序算法总结篇(高速/堆/希尔/归并)
查看>>
使用c#訪问Access数据库时,提示找不到可安装的 ISAM
查看>>
Highcharts X轴纵向显示
查看>>
windows 注册表讲解
查看>>
【算法】论平衡二叉树(AVL)的正确种植方法
查看>>
基于DDD的现代ASP.NET开发框架--ABP系列之1、ABP总体介绍
查看>>
【原】东拼西凑PBR(1):PBR基础
查看>>
react 从零开始搭建开发环境
查看>>
scala recursive value x$5 needs type
查看>>
ps -ef |grep 输出的具体含义
查看>>
markdown编辑
查看>>
ASCII 在线转换器
查看>>
Linux内核同步:RCU
查看>>
Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
查看>>
Java设计模式之五大创建型模式(附实例和详解)
查看>>
60 Permutation Sequence
查看>>
主流的RPC框架有哪些
查看>>
Hive学习之路 (七)Hive的DDL操作
查看>>
[转]mysql使用关键字作为列名的处理方式
查看>>