簡單說明
之前見過類似這個庫, 是帶ripple效果的
不記得具體地址了,和這個類似
https://github.com/Ashok-Varma/BottomNavigation

還有:
https://github.com/armcha/LuseenBottomNavigation

在看 簡友:[英勇青銅5] 文章的時候
http://www.itdecent.cn/users/8edc8ef5fef3/latest_articles
發(fā)現(xiàn),在 com.android.support:design:25.0.0 中
有對應(yīng)的類支持
可能是自己其他方面事情的原因,android的代碼量現(xiàn)在減少了很多,包括去了解新東西
大體效果
和之前的一些切換差不多
只是多了一個動畫效果

或者簡單padding一下,放到靠中間一點(diǎn)的位置(或者別的地方也行)

簡單使用
添加比較簡單
大體分為下面幾部
在 build.gradle 文件中增加依賴:
compile 'com.android.support:design:25.0.0'-
在 res/menu/ 文件夾下創(chuàng)建一個 xml 文件
沒有menu文件夾,則自己創(chuàng)建一個即可
將其xml文件,命名為 xxx_xxx.xml,自己的是 bottom_navigation_main.xml- 內(nèi)容大體為:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/basketball"
android:enabled="true"
android:icon="@android:drawable/ic_menu_call"
android:title="basketball"
app:showAsAction="ifRoom" />
<item
android:id="@+id/football"
android:enabled="true"
android:icon="@android:drawable/ic_popup_reminder"
android:title="football"
app:showAsAction="ifRoom" />
<item
android:id="@+id/volleyball"
android:enabled="true"
android:icon="@android:drawable/ic_dialog_info"
android:title="volleyball"
app:showAsAction="ifRoom" />
<item
android:id="@+id/dodo"
android:enabled="true"
android:icon="@android:drawable/ic_input_add"
android:title="dodo"
app:showAsAction="ifRoom" />
</menu>
- 寫對應(yīng)的layout
自己添加了一個TextView,切換后,修改TextView,表示切換:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.aohuan.demo.bottomnavigation.MainActivity">
<!--android:paddingBottom="@dimen/activity_vertical_margin"-->
<!--android:paddingLeft="@dimen/activity_horizontal_margin"-->
<!--android:paddingRight="@dimen/activity_horizontal_margin"-->
<!--android:paddingTop="@dimen/activity_vertical_margin"-->
<!--android:background="@android:color/holo_red_light"-->
<TextView
android:id="@+id/tv_dodo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="BASKETBALL" />
<android.support.design.widget.BottomNavigationView
android:id="@+id/bottom_navigation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
app:itemBackground="@color/colorPrimary"
app:itemIconTint="@color/white"
app:itemTextColor="@color/colorAccent"
app:menu="@menu/bottom_navigation_main" />
</RelativeLayout>
- Activity只是簡單調(diào)用
package com.aohuan.demo.bottomnavigation;
import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView mTvDodo;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvDodo = (TextView) findViewById(R.id.tv_dodo);
BottomNavigationView bottomNavigationView = (BottomNavigationView)
findViewById(R.id.bottom_navigation);
bottomNavigationView.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
switch (item.getItemId()) {
}
mTvDodo.setText(item.getTitle().toString().toUpperCase());
return false;
}
}
);
}
}
---
### 簡單小節(jié)
這個控件用起來還是挺方便的
可以根據(jù)自己的需求,再次進(jìn)行封裝
具體的源碼,也很短
也就300多行
里面關(guān)聯(lián)了 BottomNavigationMenuView, BottomNavigationPresenter, MenuBuilder 等類
其中, MenuBuilder 比較復(fù)雜
對應(yīng)的響應(yīng),通過內(nèi)部接口OnNavigationItemSelectedListener 去Invoke回傳
最近代碼量很少,自己多花點(diǎn)時間看看組件,寫寫demo
具體代碼,可以見
https://github.com/2954722256/use_little_demo
對應(yīng) bottomnavigation 的 Module