重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
很多android应用底部都有一个底部导航栏,方便用户在使用过程中随意切换。目前常用的做法有三种:一种是使用自定义tabHost,一种是使用activityGroup,一种是结合FrameLayout实现。笔者再做了多款应用后,为了节约开发周期,封装了一个抽象类,只要三步便可完成底部栏的生成及不同页面的调用。
站在用户的角度思考问题,与客户深入沟通,找到硚口网站设计与硚口网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、成都做网站、企业官网、英文网站、手机端网站、网站推广、主机域名、虚拟主机、企业邮箱。业务覆盖硚口地区。
public class ActivitycollectiondemoActivity extends ActivityCollection {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setBottomTabBackground(resId);// 设置底部导航背景图
@Override
protected boolean isShowWindowFeature() {
return true;//设置是否显示title;
@Override
protected ListIndicatorInfo setDrawableCollections() {
ListIndicatorInfo IndicatorInfos = new ArrayListIndicatorInfo();
IndicatorInfo indicatorInfo_1 = new IndicatorInfo(R.drawable.baby1,
R.drawable.baby1_s, R.string.baby1, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity01.class));
IndicatorInfo indicatorInfo_2 = new IndicatorInfo(R.drawable.baby2,
R.drawable.baby2_s, R.string.baby2, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity02.class));
IndicatorInfo indicatorInfo_3 = new IndicatorInfo(R.drawable.baby3,
R.drawable.baby3_s, R.string.baby3, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity03.class));
IndicatorInfo indicatorInfo_4 = new IndicatorInfo(R.drawable.baby4,
R.drawable.baby4_s, R.string.baby4, 12, Color.WHITE,
new Intent(ActivitycollectiondemoActivity.this,
Activity04.class));
IndicatorInfos.add(indicatorInfo_1);
IndicatorInfos.add(indicatorInfo_2);
IndicatorInfos.add(indicatorInfo_3);
IndicatorInfos.add(indicatorInfo_4);
return IndicatorInfos;
第一步:导入jar包;
第二步:让你的homeactivity 继承ActivityCollection类;
第三步:将你的图片资源及跳转intent放入list中,设置可选项;
雏形就形成啦!
xxx耀10上面...底部漏出来了。另外一个项目也是类似弹窗,但是没有这个问题。
然后对比了下这个风格文件,发现是 是否悬浮在Activity之上 的问题:
item name="android:windowIsFloating"true/item设置为true就行了。
不过发现一个现象就是当锁屏再打开的时候显示就又正常了...也就是在某个生命周期里面做了一些事情(具体的先不管了哈。记录下...)
使用风格文件的地方:
正在思考自己尝试封装弹窗(计划包括分享弹窗,更新弹窗,奖励弹窗等,逐步来)。这个大概是自定义View差不多了再开始尝试搞....感觉从开始学习了好久,才完成了个人计划的一小半....
方法一:隐藏
Android中布局内容被底部系统导航栏遮挡
方法二:内容上移
Android手机底部NavigationBar挡住界面的解决方法
在 Manifest.xml 文件中设置 Activity 的属性
Android布局界面隐藏顶部导航栏
Android隐藏和显示虚拟导航栏
Android 获取手机存储总大小,系统占用空间
Android 获取屏幕宽度和高度的几种方法
Android 获取电池相关信息
Android电量计重要的类及函数介绍
安卓5.0后获取所有运行的进程信息
Android获取内存(RAM)大小信息
android 几种杀进程的方式
Android开发中 获取App缓存大小以及清除缓存
Looper.getMainLooper()使用误区
Android中通过资源文件获取drawable的几种方法
Fragment向Activity传递值
注意:
git地址 ,如果对您有帮助,麻烦点个赞~ 谢谢~
框架设计思想
需求分析
实现思路
通过resetHeight达到底部凸起效果
外部容器封装
咳咳,答应过年增加新功能的,没想到拖到现在,延迟了一个来月,尴尬,尴尬
那个,我们先忽略这尴尬的事情吧,进入正题才是最重要滴
老规矩,先上效果图:
跟原来的图有个很明显的区别,你们也一定都发现了,对不对。那么显眼的小红点,一定都看到了吧。
当然除了这个,还增加了一项功能,虽然不是很明显,但相信也有小伙伴发现了吧,截图的这俩手机屏幕明显大小不同,但是底部导航栏的大小还是相差不大滴。
是的,你们没有看多,这次不仅增加了小红点功能,还增加了底部导航栏的适配,你没有听错,以后底部导航栏也不用那些dp、sp了,都按照UI妹子们标注的px来就可以了,再也不用为了底部导航栏去跟UI妹子解释啥叫dp了。
好了,效果图展示完了,现在该进入枯燥的使用介绍了。
由于这次改动有点大,所以,先介绍下上个稳定版本的用法,到底是用最新的,还是用原来的,就看各位小伙伴的意愿了
上个稳定版本是1.1.3的,引用方式如下
compile 'com.hjm:BottomTabBar:1.1.3'
具体用法如下(备注都加好了,我也就不多废话了):
最新版本是1.2.2的,引用方式如下
compile 'com.hjm:BottomTabBar:1.2.2'
其实1.2.0与1.1.3区别并不大,只有4点改动:
现在默认的,分割线高度都是设置的1个像素。这里以后也固定都用这个默认的高度了,不再对外提供修改的方法。
这就是新增加的适配了,多的也不说了,你们都懂的
标准尺寸,就是UI妹子给你提供的效果图的屏幕尺寸,只要在init()方法里添加上标准尺寸,你就可以放肆的使用px了
这个方法就是控制小红点显示的方法了,index就是需要显示或者隐藏小红点的TabItem,isShow是一个boolean类型的参数,他是控制小红点是否显示的,如果为true,就会显示小红点;如果为false,就会隐藏小红点
1.2.2版本新增了两个方法
介绍到这里,超简单的底部导航栏,第二阶段就可以告一段落了。以后还会持续优化,完善的。
第三阶段我打算封装一下有中间凸起的底部导航栏,这个功能我本地已经做了,但是封装进去的时候,封装的不理想,这次就没有上线,留作下次了。
最后,再上个 GitHub 地址