技术标签: 2018 BottomNavigationBar 底部导航 Android
1.首先要在grade里依赖下
com.ashokvarma.android:bottom-navigation-bar:2.0.4
2.在布局文件里使用
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical" >
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"/>
<View
android:layout_width="match_parent"
android:layout_height="@dimen/px_1"
android:background="@color/tab_text_default"
/>
<com.ashokvarma.bottomnavigation.BottomNavigationBar
android:id="@+id/bottom_navigation_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:bnbBackgroundColor="@color/bg_gray"
/>
</LinearLayout>
3.对bottomNavigationBar的一些设置
mBottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);
mBottomNavigationBar.setTabSelectedListener(this);
//设置监听
mBottomNavigationBar.clearAll();
mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
//还用一种mode是Shifting,大家可以自己试下有何区别
mBottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);
mBottomNavigationBar
.addItem(new BottomNavigationItem(R.mipmap.icon_home_on, getString(R.string.text_main_tab_home))
.setInactiveIconResource(R.mipmap.icon_home_off)
.setActiveColorResource(R.color.tab_text_selected)
.setInActiveColorResource(R.color.tab_text_default))
// .setBadgeItem(badgeItem))
.addItem(new BottomNavigationItem(R.mipmap.icon_record_on, getString(R.string.text_main_tab_record))
.setInactiveIconResource(R.mipmap.icon_record_off)
.setActiveColorResource(R.color.tab_text_selected)
.setInActiveColorResource(R.color.tab_text_default))
//配置图片文字及选中时的颜色
.setFirstSelectedPosition(0) //默认位置就是0
.initialise();//初始化
4.初始化viewPager
private void initViewPager() {
mViewPager = (ViewPager) findViewById(R.id.view_pager);
mFragments = new ArrayList<>();
mFragments.add(MainFragmentOne.newInstance());
mFragments.add(MainFragmentTwo.newInstance());
mViewPager.setAdapter(new SectionsPagerAdapter(getSupportFragmentManager(), mFragments));
mViewPager.addOnPageChangeListener(this);
mViewPager.setCurrentItem(0);
}
class SectionsPagerAdapter extends FragmentPagerAdapter {
List<Fragment> fragments;
public SectionsPagerAdapter(FragmentManager fm, List<Fragment> fragments) {
super(fm);
this.fragments = fragments;
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
}
5.切换或滑动时设置参数
@Override
public void onTabSelected(int position) {
mViewPager.setCurrentItem(position);
}
@Override
public void onPageSelected(int position) {
mBottomNavigationBar.selectTab(position);
}
这些弄完功能就实现了,图就不贴了
Thomas MiconiWorkingNeural networks with differentiable structure虽然梯度下降在学习神经网络的连接权值方面已经被证明是非常成功的,但是这些网络的实际结构通常是由人工或其他优化算法来确定的。这里我们描述了一个简单的方法,使网络结构可微,从而可以得到梯度下降。我们在应用于简单序列预测问题的递归神经网络上测试了这种方法。从只包含一个节点的初始网络开始,该方法自动构建成功解决任务的网络。最终网络中的节点数与任务难度有关。该方法可以动态地增加网络规
本文转载自:http://www.tuicool.com/articles/ZzuQnmI现在谈人工智能已经绕不开“神经网络”这个词了。人造神经网络粗线条地模拟人脑,使得计算机能够从数据中学习。机器学习这一强大的分支结束了 AI 的寒冬,迎来了人工智能的新时代。简而言之,神经网络可能是今天最具有根本颠覆性的技术。看完这篇神经网络的指南,你也可以和别人聊聊深度学习了。为此
滚动数组1.如果是左上推右下则为了防止这一层的dp覆盖掉上一层的dp必须逆着遍历eg.f[i][j]=f[i-1][j-len[i]]->dp[j]=dp[j-len[i]] (j:1->n)
c++ Simpson积分//// main.cpp// 5.14 01//// Created by Shatong on 2020/5/14.// Copyright 2020 Shatong. All rights reserved.//#include <iostream>#include <iomanip>#include <cmath>using namespace std;class Base{public:
webView加载失败显示的ViewwebView.setWebViewClient(new WebViewClient() { @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onReceivedHttpError(WebView view, WebResourceRequ...
websocket进行Authorization验证在网上找了各种方法尝试去在websocket进行连接之前添加请求头无果后,找到一种方法,亲测有效。var ws = new WebSocket("ws://username:[email protected]")在new websocket()时已经创建了连接,暂未找到添加请求头的方法。补充:在接口未加Authorization验证时,进行用户认证可以在open之后使用send方法进行验证,若不正确则关闭连接。...
特征选择,也就是特征缩减,是通过对损失函数(即优化目标)加入惩罚项,使得训练求解参数过程中会考虑到系数的大小,通过设置缩减系数(惩罚系数),会使得影响较小的特征的系数衰减到0,只保留重要的特征。嵌入式特征选择方法有:LASSO(L1正则化)和岭回归(L2正则化)。特征选择,可消除噪声特征和消除关联的特征,并能减少训练开销。对于特征选择,需要关注正则化概念,正则化是对损失函数(目标函数)加入一个
如果不明白文件代表的意思,可以先看看我的另一篇博客总的架构http://blog.csdn.net/zxc_user/article/details/77369047manifest.json{"manifest_version":2,"name":"zxc-chrome","description":"my first chro
Python中多个列表与字典的合并方法1多列表的合并1)a+=ba=['','','']b = ['','','']a += bprint(a)>>>['','','','','','']2) a.extend(b)a=['','','']b = ['','','']a.extend(b)print(a)>>>['1','2','3','22','55','66']3) a[0:0] = b切片的...
1. 配置文件简介spring boot使用一个全局配置文件:application.properties或者application.yml,放置在src/main/resources目录下或者类路径的/config目录下。application.properties是我们熟知的键值对配置文件: application.yml是yaml语言的配置文件,yaml是一种以数据为中心的语言,在配置数
在开始刷题之前先让我介绍一下欧几里得和扩展欧几里得。先介绍什么叫做欧几里德算法 有两个数 a b,现在,我们要求 a b 的最大公约数,怎么求?枚举他们的因子?不现实,当 a b 很大的时候,枚举显得那么的naïve ,那怎么做? 欧几里德有个十分又用的定理: gcd(a, b) = gcd(b , a%b) ,这样,我们就可以在几乎是 log 的时间复杂度里求解出来 a ...
接口是使用interface关键字来定义的。 例如:interface MyInterface { var name:String; var age: Int get() = 20 set(value) = TODO() fun getName() fun doAction(){ println("MyInte...