博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android 练习之路 (四)
阅读量:5092 次
发布时间:2019-06-13

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

项目的github地址:

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

今天应该勉强算是把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 extends Fragment {    public static SchoolInfoFragmActivity newInstance() {        return new SchoolInfoFragmActivity();    }    @Nullable    @Override    public View 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也需要,那就到时候再一起重构一次吧

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

转载于:https://www.cnblogs.com/Qunter/p/6613957.html

你可能感兴趣的文章
RHEL 无图形界面安装oracle 11gr2
查看>>
sql连接left join、right join、inner join的使用
查看>>
h5 的localStorage和sessionStorage存到缓存里面的值是string类型
查看>>
自定义序列化
查看>>
1020. 分解质因数
查看>>
linux下的shell——如何修改shell的提示符,能够出现登录用户名、主机名和路径...
查看>>
网络流量监测图形分析工具 Cacti
查看>>
php session 和cookie
查看>>
Java中的小知识。
查看>>
如何执行超过一百兆(100MB)的sql脚本?
查看>>
git merge的recursive策略和merge-base
查看>>
JS创建对象的几种方式
查看>>
python:实例化configparser模块读写配置文件
查看>>
博客首发
查看>>
redis源码分析之发布订阅(pub/sub)
查看>>
理解flexbox(一)
查看>>
团队项目视频介绍
查看>>
Schaepher 博客目录
查看>>
linux 网卡eth0检测时没有IP地址,怎么回事??
查看>>
OpenGL(三)MFC中应用OpenGL的两个类
查看>>