------------------------------------------------------------------------

今天应该勉强算是把fragment的最基本的框架搭好了吧

最终结果如下:

那么接着昨天的改,MainActivity的名字就不用变了,主页就叫这个吧,然而主页我决定丢四个fragment进去

暂定每个页面最后做到这些功能

1,学校咨询:用爬虫将用户学校的官网的内容获取到,并且显示出来

2,周边活动:用于发布活动以及显示活动

3,我的好友:用于添加删除好友以及聊天相关

4,我的设置:顾名思义也就是设置页面了

那么现在首先是建四个fragment然后丢到MainActivity里去,并且添加上面的标题栏以及下面的底部导航栏

那么从下面的底部导航栏说起吧,我个人比较喜欢Material design风格的底部导航栏

这个既然很多人都已经写好了相当不错的“模板”,那么我们就用其中一个框架来实现效果吧

这里选择的是:

AHBottomNavigation

添加起来也非常简单,首先在app的build.gradle里添加依赖

//BottomNavigationView依赖

compile 'com.aurelhubert:ahbottomnavigation:2.0.6'

国际惯例,sync一下

然后我们建四个fragment的Activity文件

就以其中一个举例吧

SchoolInfoFragmActivity.java

public class SchoolInfoFragmActivity extendsFragment {public staticSchoolInfoFragmActivity newInstance() {return newSchoolInfoFragmActivity();

}

@Nullable

@OverridepublicView onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {return inflater.inflate(R.layout.activity_school_info_fragm, container, false);

}

}

所以也必然需要四个layout文件了

activity_school_info_fragm.xml

然后就可以开始重新写一下MainActivity了

先从layout开始吧

activity_main.xml

然后是Activity

MainActivity.java

public class MainActivity extends AppCompatActivity {

private AHBottomNavigation bottomNavigationView;

private List fragments = new ArrayList<>();

private int currentTabIndex;

@Override

protected void onCreate(@Nullable Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initViews();

}

protected void initViews() {

fragments.add(SchoolInfoFragmActivity.newInstance());

fragments.add(EventInfoFragmActivity.newInstance());

fragments.add(FriendInfoFragmActivity.newInstance());

fragments.add(UserInfoFragmActivity.newInstance());

showFragment(fragments.get(0));

initBottomNav();

}

private void initBottomNav() {

bottomNavigationView = (AHBottomNavigation) findViewById(R.id.bottom_navigation_view);

AHBottomNavigationItem item1 = new AHBottomNavigationItem("学校资讯",

R.drawable.ic_tab_temporary);

AHBottomNavigationItem item2 = new AHBottomNavigationItem("周边活动",

R.drawable.ic_tab_temporary);

AHBottomNavigationItem item3 = new AHBottomNavigationItem("我的好友",

R.drawable.ic_tab_temporary);

AHBottomNavigationItem item4 = new AHBottomNavigationItem("我的设置",

R.drawable.ic_tab_temporary);

bottomNavigationView.addItem(item1);

bottomNavigationView.addItem(item2);

bottomNavigationView.addItem(item3);

bottomNavigationView.addItem(item4);

bottomNavigationView.setColored(false);

bottomNavigationView.setForceTint(false);

bottomNavigationView.setBehaviorTranslationEnabled(true);

bottomNavigationView.setTitleState(AHBottomNavigation.TitleState.ALWAYS_SHOW);

bottomNavigationView.setAccentColor(getResources().getColor(R.color.black_90));

bottomNavigationView.setInactiveColor(getResources().getColor(R.color.nav_text_color_mormal));

bottomNavigationView.setCurrentItem(0);

bottomNavigationView.setDefaultBackgroundColor(

getResources().getColor(R.color.bottom_tab_bar_color));

bottomNavigationView.setOnTabSelectedListener(new AHBottomNavigation.OnTabSelectedListener() {

@Override

public boolean onTabSelected(int position, boolean wasSelected) {

if (currentTabIndex != position) {

FragmentTransaction trx = getSupportFragmentManager().beginTransaction();

trx.hide(fragments.get(currentTabIndex));

if (!fragments.get(position).isAdded()) {

trx.add(R.id.content, fragments.get(position));

}

trx.show(fragments.get(position)).commit();

}

currentTabIndex = position;

return true;

}

});

}

private void showFragment(Fragment fragment) {

getSupportFragmentManager()

.beginTransaction()

.replace(R.id.content, fragment)

.commit();

}

}

这里话说回来感觉应该做一个基类,不过想起来可能之后fragment也需要,那就到时候再一起重构一次吧

当然这里还有些样式和颜色的定义,就不列出来了,图片是随便找的,之后也需要换,那么今天就到这吧

android实践练习_android 练习之路 (四)相关推荐

  1. android实践练习_android 练习之路 (五)

    ------------------------------------------------------------------------ 之前几天因为竞赛一直没做,得,今天开始接着完成这玩意 ...

  2. Android程序员的进阶之路

    本文主要论述的是Android程序员的进阶之路,博主本人就是一名android开发攻城狮,所以这里讲述的大多数是android开发攻城狮的技术进阶之路,如有问题请多指正. 大家都知道程序员之中有有菜鸟 ...

  3. App项目实战之路(四):UI篇

    原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/practice/20160903 微信订阅号:keeganlee_me 写于2016- ...

  4. Hadoop YARN 在快手的应用实践与技术演进之路

    本文是房孝敬老师主题为"yarn在快手应用实践与技术演进之路"的分享整理,内容包含yarn系统在快手的应用实践,遇到的问题以及相应的技术演进过程. 讲师介绍:房孝敬,快手大数据架构 ...

  5. YARN 在快手的应用实践与技术演进之路

    YARN 在快手的应用实践与技术演进之路 过往记忆大数据 今天 编者荐语: 本文来自8月24日的云+社区技术沙龙"大数据技术实践与应用",议题来自房孝敬老师主题为"yar ...

  6. android静默卸载,Android实践 -- Android静默安装和卸载

    App的静默安装和卸载 Android系统本身提供了安装卸载功能,但是api接口是@hide的,不是公开的接口,所以在应用级别 是无法实现静默安装和卸载的,要实现静默安装和卸载需要是系统应用,要有系统 ...

  7. Android Glide图片加载框架(四)回调与监听

    文章目录 Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源码解析之with() Android Gl ...

  8. Android音频实时传输与播放(四):源码下载(问题更新)【转】

    Android音频实时传输与播放(四):源码下载(问题更新) 激动人心的时刻到了有木有 ^_^ 服务端下载请点击这里,客户端下载请点击这里! 最近有朋友在下载源码使用之后,说播放出来的声音噪声很大.其 ...

  9. Android 系统(194)---Android实践 -- 设置系统日期时间和时区

    Android实践 -- 设置系统日期时间和时区 转自:https://www.cnblogs.com/Free-Thinker/p/6627813.html 设置系统日期时间和时区 设置系统的日期时 ...

最新文章

  1. 小明分享|nRF52840 蓝牙模块连接测试
  2. boost::geometry::box_view用法的测试程序
  3. 数据挖掘十大算法之—C4.5
  4. setTimeout() 实现程序每隔一段时间自动执行
  5. 有关Struts2a的ction直接使用response异步问题
  6. Pod资源管理(pod容器分类,k8s添加harbor私库,上传下载私库)
  7. 玩转oracle 11g(23):区分大小写和字符集不同
  8. Java学科课程大纲
  9. 服务器和数据库基本知识
  10. office是python打开方式_Python读取word文本操作详解
  11. 揭密 Vue 的双向绑定
  12. Lucene创建索引和搜索索引
  13. 苹果macOS 13 Ventura 5K原生动态壁纸
  14. 计算机网络的三级结构是什么,计算机的三级存储结构是什么
  15. 自定义图标iconfont
  16. 系统重装后恢复MySQL数据
  17. 良田高拍仪 网页版 二次开发_档案产品库良田书籍高拍仪BS3000P
  18. 现代软件工程 第一章 【概论】练习与讨论
  19. 主干光缆线路的组网结构
  20. oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]

热门文章

  1. Python编程基础20:实例成员与类成员
  2. 安卓案例:标签页演示
  3. 写给省选前的自己V2
  4. 论文笔记 - 《Very Deep Convolutional Networks For Large-Scale Image Recognition》 精典
  5. 2017.4.20 火星人 思考记录
  6. 【英语学习】【Level 07】U04 Rest and Relaxation L5 An inn by the lake
  7. linux多线程加解锁
  8. 李群与李代数2:李代数求导和李群扰动模型
  9. Office 365新管理中心目录同步配置
  10. 关于Web安全的三个攻防姿势