android实践练习_android 练习之路 (四)
------------------------------------------------------------------------
今天应该勉强算是把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 练习之路 (四)相关推荐
- android实践练习_android 练习之路 (五)
------------------------------------------------------------------------ 之前几天因为竞赛一直没做,得,今天开始接着完成这玩意 ...
- Android程序员的进阶之路
本文主要论述的是Android程序员的进阶之路,博主本人就是一名android开发攻城狮,所以这里讲述的大多数是android开发攻城狮的技术进阶之路,如有问题请多指正. 大家都知道程序员之中有有菜鸟 ...
- App项目实战之路(四):UI篇
原创文章,转载请注明:转载自Keegan小钢 并标明原文链接:http://keeganlee.me/post/practice/20160903 微信订阅号:keeganlee_me 写于2016- ...
- Hadoop YARN 在快手的应用实践与技术演进之路
本文是房孝敬老师主题为"yarn在快手应用实践与技术演进之路"的分享整理,内容包含yarn系统在快手的应用实践,遇到的问题以及相应的技术演进过程. 讲师介绍:房孝敬,快手大数据架构 ...
- YARN 在快手的应用实践与技术演进之路
YARN 在快手的应用实践与技术演进之路 过往记忆大数据 今天 编者荐语: 本文来自8月24日的云+社区技术沙龙"大数据技术实践与应用",议题来自房孝敬老师主题为"yar ...
- android静默卸载,Android实践 -- Android静默安装和卸载
App的静默安装和卸载 Android系统本身提供了安装卸载功能,但是api接口是@hide的,不是公开的接口,所以在应用级别 是无法实现静默安装和卸载的,要实现静默安装和卸载需要是系统应用,要有系统 ...
- Android Glide图片加载框架(四)回调与监听
文章目录 Android Glide图片加载框架系列文章 Android Glide图片加载框架(一)基本用法 Android Glide图片加载框架(二)源码解析之with() Android Gl ...
- Android音频实时传输与播放(四):源码下载(问题更新)【转】
Android音频实时传输与播放(四):源码下载(问题更新) 激动人心的时刻到了有木有 ^_^ 服务端下载请点击这里,客户端下载请点击这里! 最近有朋友在下载源码使用之后,说播放出来的声音噪声很大.其 ...
- Android 系统(194)---Android实践 -- 设置系统日期时间和时区
Android实践 -- 设置系统日期时间和时区 转自:https://www.cnblogs.com/Free-Thinker/p/6627813.html 设置系统日期时间和时区 设置系统的日期时 ...
最新文章
- 小明分享|nRF52840 蓝牙模块连接测试
- boost::geometry::box_view用法的测试程序
- 数据挖掘十大算法之—C4.5
- setTimeout() 实现程序每隔一段时间自动执行
- 有关Struts2a的ction直接使用response异步问题
- Pod资源管理(pod容器分类,k8s添加harbor私库,上传下载私库)
- 玩转oracle 11g(23):区分大小写和字符集不同
- Java学科课程大纲
- 服务器和数据库基本知识
- office是python打开方式_Python读取word文本操作详解
- 揭密 Vue 的双向绑定
- Lucene创建索引和搜索索引
- 苹果macOS 13 Ventura 5K原生动态壁纸
- 计算机网络的三级结构是什么,计算机的三级存储结构是什么
- 自定义图标iconfont
- 系统重装后恢复MySQL数据
- 良田高拍仪 网页版 二次开发_档案产品库良田书籍高拍仪BS3000P
- 现代软件工程 第一章 【概论】练习与讨论
- 主干光缆线路的组网结构
- oracle 连接组件,[2021] node连接oracle数据库示例[使用oracle官方组件]