闲鱼底部tab android,最简单最快的实现底部标签导航(仿闲鱼样式)

编程是一种美德,是促使一个人不断向上发展的一种原动力

—————–以下是正文———————

最近好多app的底部标签导航使用以下形式了,所以我们就来学习一下它是如何实现的。

先看效果:

02ce5cb19f6574e9fe123b36cee90bc9.png

c07ab57b0139609d200d870746cbd623.png

中间的“+”我给了一个旋转动画,看起来还是不错的,有兴趣的同学可以下载Demo看一下。

最近准备开发一款新App, 产品也给出了这么一个底部标签导航。于是就开始研究这个样式怎么实现的。常规的做法是粘贴复制…,我就在想可以简单点不。于是就开始了网上海选工作,在gitHub上找到了MainNavigateTabBar,他是一个普通的底部标签导航。不太符合我的需求,于是就对其源码进行了一些修改,把消息提示加进去了。

,先看一下这个功能的实现吧,有了图之后,分分钟搞定

MainActivity 代码:

public class MainActivity extends AppCompatActivity {

private static final String TAG_PAGE_HOME = "首页";

private static final String TAG_PAGE_CITY = "同城";

private static final String TAG_PAGE_PUBLISH = "发布";

private static final String TAG_PAGE_MESSAGE = "消息";

private static final String TAG_PAGE_PERSON = "我的";

private MainNavigateTabBar mNavigateTabBar;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

mNavigateTabBar = (MainNavigateTabBar) findViewById(R.id.mainTabBar);

mNavigateTabBar.onRestoreInstanceState(savedInstanceState);

mNavigateTabBar.setTabTextColor(getResources().getColor(R.color.blue_btn_disabled));

//对应xml中的navigateTabSelectedTextColor

mNavigateTabBar.setSelectedTabTextColor(getResources().getColor(R.color.blue_btn_normal));

mNavigateTabBar.addTab(HomeFragment.class, new MainNavigateTabBar.TabParam(R.mipmap.tab_home_n, R.mipmap.tab_home_p, TAG_PAGE_HOME));

mNavigateTabBar.addTab(CityFragment.class, new MainNavigateTabBar.TabParam(R.mipmap.tab_class_n, R.mipmap.tab_class_p, TAG_PAGE_CITY));

mNavigateTabBar.addTab(null, new MainNavigateTabBar.TabParam(0, 0, TAG_PAGE_PUBLISH));

mNavigateTabBar.addTab(MessageFragment.class, new MainNavigateTabBar.TabParam(R.mipmap.tab_user_n, R.mipmap.tab_user_p, TAG_PAGE_MESSAGE));

mNavigateTabBar.addTab(PersonFragment.class, new MainNavigateTabBar.TabParam(R.mipmap.tab_more_n, R.mipmap.tab_more_p, TAG_PAGE_PERSON));

//消息提醒 显示

mNavigateTabBar.disPlayBadgeCount(0, 2);

mNavigateTabBar.disPlayBadgeCount(1, 2);

mNavigateTabBar.disPlayBadgeCount(2, 2);

mNavigateTabBar.disPlayBadgeCount(3, 2);

}

@Override

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

mNavigateTabBar.onSaveInstanceState(outState);

}

public void onClickPublish(View v) {

//消息提醒 消失

mNavigateTabBar.disMissBadgeCount(0, 0);

mNavigateTabBar.disMissBadgeCount(1, 0);

mNavigateTabBar.disMissBadgeCount(2, 0);

mNavigateTabBar.disMissBadgeCount(3, 0);

//中间图片动画

RotateAnimation myAnimation_Rotate = new RotateAnimation(0.0f, 90.0f,

Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF, 0.5f);

v.startAnimation(myAnimation_Rotate);

myAnimation_Rotate.setDuration(300);

Toast.makeText(this, "发布", Toast.LENGTH_LONG).show();

}

}

activity_main.xml:

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="match_parent"

android:layout_height="match_parent">

android:layout_width="match_parent"

android:layout_height="match_parent"

android:layout_above="@+id/mainTabBar"/>

android:layout_width="match_parent"

android:layout_height="50.0dip"

android:layout_alignParentBottom="true"

android:background="@android:color/white"

app:containerId="@+id/main_container"

app:navigateTabSelectedTextColor="@color/blue_btn_disabled"

app:navigateTabTextColor="@color/blue_btn_normal"/>

android:layout_height="wrap_content"

android:layout_above="@+id/mainTabBar"

android:background="@mipmap/comui_bar_top_shadow"/>

android:layout_height="80.0dip"

android:layout_alignParentBottom="true"

android:background="@android:color/transparent"

android:gravity="center|top"

android:orientation="vertical">

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:onClick="onClickPublish"

android:src="@mipmap/comui_tab_post"/>

这就把主页搞定了,简单吧,当然还有几个Fragment。具体内容根据项目需求来开发了

来说说怎么修改的MainNavigateTabBar吧,其实也很简单,就是找了个BadgeView 把它加到MainNavigateTabBar里就OK了,

/**

* 隐藏消息数量提示

*@param index 底部导航的位置

*@param count 消息数量 count >0 显示

*/

public void disPlayBadgeCount(int index,int count){

if (index >= 0 && index < mViewHolderList.size()) {

ViewHolder holder = mViewHolderList.get(index);

holder.badgeView.setTargetView(holder.view);

holder.badgeView.setBadgeMargin(0,0,10,0);

holder.badgeView.setBadgeCount(count);

}

}

/**

* 隐藏消息数量提示

*@param index 底部导航的位置

*@param count 消息数量 count = 0 消失

*/

public void disMissBadgeCount(int index,int count){

if (index >= 0 && index < mViewHolderList.size()) {

ViewHolder holder = mViewHolderList.get(index);

holder.badgeView.setBadgeCount(count);

}

}

加一句话: 除了消息提示是我加上去的,其他的是其他人的劳动成果。遗憾的他的链接找不到了….

我的京东旗舰店有喜欢的可以购买尝尝Android儿 郎 享用零食

源码下载

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 闲鱼Python机器人是一个自动化工具,它可以帮助用户更快地浏览、搜索、筛选闲鱼上的商品,并根据用户设定的规则对商品进行自动化操作。这个机器人基于Python开发,它可以模拟用户的行为,自动地执行各种操作。因为它使用了机器学习算法和自然语言处理技术,所以它可以自动地识别用户的意图并根据意图进行推荐和操作。之所以使用Python来开发这个机器人是因为Python是一种易学易用、功能强大且被广泛应用于数据科学和自动化任务的编程语言,因此它非常适合用于开发这样的机器人。使用这个机器人可以帮助用户节省时间,提高效率,更好地利用闲鱼上的资源。同时,这个机器人也具有良好的可扩展性和可定制性,可以根据用户的需求进行自定义操作和定制开发。总体来说,闲鱼Python机器人是一个非常有用的工具,它可以帮助用户更加智能地使用闲鱼这个平台。 ### 回答2: 闲鱼Python机器人是一个能够自动化处理闲鱼交易信息的程序。它使用Python语言编写,并利用了Python中的相关库和插件,实现了智能化处理闲鱼交易信息的功能。 该机器人可以帮助用户自动处理闲鱼上的商品信息,包括查询、筛选和搜索。同时,它还可以根据用户的需求提供相关的推荐和信息,让用户可以更方便地进行购买或售卖。 因为Python是一种易于学习且功能强大的编程语言,因此开发闲鱼Python机器人的门槛较低,让更多的人可以利用这个工具快速、高效地处理闲鱼交易信息。 此外,由于闲鱼Python机器人是一个自动化工具,在处理闲鱼交易信息的同时,也为用户节省了大量的时间和精力。因此,它成为了越来越多闲鱼用户的首选工具。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值