Android实现360手机助手底部的动画菜单

 更新时间:2016年10月10日 11:52:48   投稿:daisy  
这篇文章给大家分享了利用Android实现360手机助手底部的动画菜单效果,文中给出了实例代码,这样对大家的学习或者理解更有帮助,有需要的朋友们下面来一起看看吧。

首先来看下我们实现的效果和360效果的对比:

360手机助手效果演示

本库实现的效果(Icon来自360手机助手,侵删)

xml布局文件

注:为了美观,讲每个Button的高度以及固定,设置wrap_content时候是最大高度,为50dp,如果需要设置特定高度请参见下文的方法表格

<com.brioal.bottomtab.view.BottomLayout
    android:id="@+id/main_tab"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true">

  </com.brioal.bottomtab.view.BottomLayout>

数据源添加与基本设置

mList = new ArrayList<>();
    mList.add(new TabEntity(R.mipmap.icon_1, "推荐"));
    mList.add(new TabEntity(R.mipmap.icon_2, "游戏"));
    mList.add(new TabEntity(R.mipmap.icon_3, "软件"));
    mList.add(new TabEntity(R.mipmap.icon_4, "应用圈"));
    mList.add(new TabEntity(R.mipmap.icon_5, "管理"));
    mBottomLayout.setList(mList); //设置数据源
    mBottomLayout.setNews(1, 0); //设置未读消息
    mBottomLayout.setNews(2, 1);
    mBottomLayout.setNews(3, 2);
    mBottomLayout.setNews(4, 3);
    mBottomLayout.setNews(5, 4);
    //设置Item点击事件
    mBottomLayout.setSelectedListener(new OnTabSelectedListener() {
      @Override
      public void onSelected(int position) {
        mBottomLayout.cleanNews(position); //清除未读消息
        if (mToast == null) {
          mToast = Toast.makeText(MainActivity.this, position + "", Toast.LENGTH_SHORT);
        } else {
          mToast.setText(position + "");
        }
        mToast.show();
      }
    });

这样设置之后的效果如示例图所以,已经可以基本使用,本库还提供其他自定义效果,如下:

xml属性 Java方法 功能
colorNormal colorNormal void setColorNormal(int colorNormal)  设置未选中的时候Icon和文字的颜色
colorSelected setColorSelect(int colorSelect)  设置选中的时候Icon和文字的颜色
textSize  setTextSize(int textSize) 设置字体的大小
exCircleColor  setExCircleColor(int exCircleColor) 设置外圆颜色
inCircleColor  setInCircleColor(int inCircleColor)  设置内圆颜色
animDuration  setDuration(int duration)  设置点击涟漪的动画时长
void setList(List<TabEntity> list)  设置数据源,格式为资源文件,菜单名称
void setMenuHeight(int height)  设置菜单高度,默认为50dp,适宜高度
void setCurrentIndex(int currentIndex) 设置选中的Tab按钮下表
setSelectedListener(OnTabSelectedListener selectedListener) 设置Item点击事件
setNews(int newSum, int index)  设置指定Item的未读消息数量
cleanNews(int index)  清除指定Item的未读消息

在项目中添加此组件的方式:

Step 1. 项目的build.gradle文件做如下修改

allprojects {
    repositories {
      ...
      maven { url "https://jitpack.io" }
    }
  }

Step 2. 添加依赖

dependencies {
      compile 'com.github.Brioal:BottomTabLayout:1.1'
  }

总结

以上就是这篇文章的全部内容了,希望能对各位Android开发者们有所帮助,如果有疑问大家可以留言交流。

相关文章

  • Android开发自学笔记(二):工程文件剖析

    Android开发自学笔记(二):工程文件剖析

    这篇文章主要介绍了Android开发自学笔记(二):工程文件剖析,本文讲解了AndroidManifest.xml、src文件夹、res文件夹等文件的作用,需要的朋友可以参考下
    2015-04-04
  • android编程实现sd卡读取数据库的方法

    android编程实现sd卡读取数据库的方法

    这篇文章主要介绍了android编程实现sd卡读取数据库的方法,涉及Android权限控制及针对sd卡与数据库的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • Android Bitmap的加载优化与Cache相关介绍

    Android Bitmap的加载优化与Cache相关介绍

    这篇文章主要介绍了Android中性能优化之Bitmap的加载优化与Cache相关内容介绍,文中介绍的很详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-02-02
  • Kotlin中Suppress的非常规用法示例

    Kotlin中Suppress的非常规用法示例

    这篇文章主要给大家介绍了关于Kotlin中Suppress的非常规用法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 实例讲解Android App使用自带的SQLite数据库的基本方法

    实例讲解Android App使用自带的SQLite数据库的基本方法

    这篇文章主要介绍了Android App使用自带的SQLite数据库的基本方法,SQLite是一个小巧的内嵌型数据库,在数据库需求不大的情况下使用SQLite其实非常有效,需要的朋友可以参考下
    2016-04-04
  • Android编程开发之RadioGroup用法实例

    Android编程开发之RadioGroup用法实例

    这篇文章主要介绍了Android编程开发之RadioGroup用法,结合实例形式分析了Android中RadioGroup单选按钮的具体使用技巧,需要的朋友可以参考下
    2015-12-12
  • Android应用中加入微信分享简单方法

    Android应用中加入微信分享简单方法

    这篇文章主要介绍了Android应用中加入微信分享简单方法,本文用简洁明快的步骤讲解了加入微信分享的方法,需要的朋友可以参考下
    2015-05-05
  • Android 序列化的存储和读取总结及简单使用

    Android 序列化的存储和读取总结及简单使用

    这篇文章主要介绍了Android 序列化的存储和读取总结及简单使用的相关资料,Serializable接口和Parcelable接口,本文对这两种方式进行简单的总结和使用,需要的朋友可以参考下
    2016-12-12
  • kotlin浅析when与循环的使用

    kotlin浅析when与循环的使用

    这篇文章主要介绍了kotlin语言中when与循环的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • Flutter如何完成路由拦截,实现权限管理

    Flutter如何完成路由拦截,实现权限管理

    本篇介绍了利用 Fluro 路由管理实现路由权限拦截的两种方式,两种方式各有好处,使用过程中可以根据实际情况决定使用哪一种方法。
    2021-06-06

最新评论