项目之底部导航栏
来源:互联网 发布:青藏铁路灵异事件知乎 编辑:程序博客网 时间:2024/06/10 07:08
1.activity_main.xml
1)图片选择器 main_girl.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_main_chat_selector" android:state_selected="true"/> <item android:drawable="@drawable/ic_main_chat"/></selector>
2)字体颜色选择 main_text.xml
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/redColor" android:state_selected="true"/> <item android:color="@color/titleColor"/></selector>
activity_main
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/bottom" android:layout_width="match_parent" android:layout_height="56dp" android:layout_alignParentBottom="true" android:background="@color/navigationColor" android:gravity="center_vertical" android:orientation="horizontal"> <Button android:id="@+id/news" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:drawableTop="@drawable/main_news" android:paddingBottom="2dp" android:paddingTop="7dp" android:text="@string/fragment_news" android:textColor="@drawable/main_text" android:textSize="12sp" /> <Button android:id="@+id/video" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:drawableTop="@drawable/main_video" android:paddingBottom="2dp" android:paddingTop="7dp" android:text="@string/fragment_video" android:textColor="@drawable/main_text" android:textSize="12sp" /> <Button android:id="@+id/girl" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:drawableTop="@drawable/main_girl" android:paddingBottom="2dp" android:paddingTop="7dp" android:text="@string/fragment_girl" android:textColor="@drawable/main_text" android:textSize="12sp" /> <Button android:id="@+id/mine" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:background="@null" android:drawableTop="@drawable/main_mine" android:paddingBottom="2dp" android:paddingTop="7dp" android:text="@string/fragment_mine" android:textColor="@drawable/main_text" android:textSize="12sp" /> </LinearLayout> <View android:id="@+id/divider" android:layout_width="match_parent" android:layout_height="2dp" android:layout_above="@id/bottom" android:background="@color/dividerColor" /> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/divider" /> <com.huading.myvolley.widget.LoadStateLayout android:id="@+id/ls_loadStateLayout" android:layout_width="match_parent" android:layout_height="match_parent"> </com.huading.myvolley.widget.LoadStateLayout></RelativeLayout>
2.MainActivity
1)继承BaseActivity
2)fragment的创建
3)viewPager的适配器
4)viewPager的监听
5)按钮的点击事件
6)Handler的进程通讯
RootFragmentPagerAdapter
package com.huading.myvolley.adapter;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import java.util.List;/** * 作者:LHZ on 2017/5/27 13:48 * 界面: */public class RootFragmentPagerAdapter extends FragmentPagerAdapter { private List<Fragment> list; public RootFragmentPagerAdapter(FragmentManager fm, List<Fragment> list ) { super(fm); this.list = list; } @Override public Fragment getItem(int position) { return list.get(position); } @Override public int getCount() { return list.size(); }}
MainActivity
package com.huading.myvolley;import android.os.Message;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.view.View;import android.widget.Button;import android.widget.Toast;import com.huading.myvolley.adapter.RootFragmentPagerAdapter;import com.huading.myvolley.base.BaseActivity;import com.huading.myvolley.ui.OneFragment;import com.huading.myvolley.ui.TwoFragment;import com.huading.myvolley.ui.ThreeFragment;import com.huading.myvolley.ui.FourFragment;import com.huading.myvolley.widget.LoadStateLayout;import java.util.ArrayList;import java.util.List;import butterknife.InjectView;import butterknife.OnClick;import static com.huading.myvolley.R.id.viewPager;public class MainActivity extends BaseActivity { @InjectView(R.id.ls_loadStateLayout) LoadStateLayout lsLoadStateLayout; @InjectView(R.id.news) Button mNews; @InjectView(R.id.video) Button mVideo; @InjectView(R.id.girl) Button mGirl; @InjectView(R.id.mine) Button mMine; @InjectView(viewPager) ViewPager mViewPager; int currentTabPosition = 0; @Override protected int getContentViewLayoutID() { return R.layout.activity_main; } @Override protected void initView() { Fragment oneFragment = new OneFragment(); Fragment twoFragment = new TwoFragment(); Fragment threeFragment = new ThreeFragment(); Fragment fourFragment = new FourFragment(); List<Fragment> fragments = new ArrayList<Fragment>(); fragments.add(oneFragment); fragments.add(twoFragment); fragments.add(threeFragment); fragments.add(fourFragment); // ViewPager设置适配器 mViewPager.setAdapter(new RootFragmentPagerAdapter(getSupportFragmentManager(), fragments)); // ViewPager滑动监听 mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { // 初始化tab initTab(); switch (position) { case 0: mNews.setSelected(true); break; case 1: mVideo.setSelected(true); break; case 2: mGirl.setSelected(true); break; case 3: mMine.setSelected(true); break; default: //其他 break; } } @Override public void onPageScrollStateChanged(int state) { } }); // 初始化 mViewPager.setCurrentItem(currentTabPosition); mNews.setSelected(true);// showLoadingDialog("努力加载中"); lsLoadStateLayout.showLoading("拼命加载中"); mHandler.postDelayed(new Runnable() { @Override public void run() { Message msg = Message.obtain(); msg.what = 110; msg.obj = "雄安"; mHandler.sendMessage(msg); } }, 3000); } @Override protected void initData() { } @OnClick({R.id.news, R.id.video, R.id.girl, R.id.mine}) public void onClick(View view) { switch (view.getId()) { case R.id.news: mViewPager.setCurrentItem(0, false); break; case R.id.video: mViewPager.setCurrentItem(1, false); break; case R.id.girl: mViewPager.setCurrentItem(2, false); break; case R.id.mine: mViewPager.setCurrentItem(3, false); break; default: break; } } private void initTab() { mNews.setSelected(false); mVideo.setSelected(false); mGirl.setSelected(false); mMine.setSelected(false); } @Override protected void onHandlerThread(Message msg) {// hideLoadingDialog(); super.onHandlerThread(msg); switch (msg.what) { case 110: String string = (String) msg.obj; if (string.equals("雄安新区")) { lsLoadStateLayout.showSuccess(); Toast.makeText(mContext, string, Toast.LENGTH_SHORT).show(); } else { lsLoadStateLayout.showEmpty(); } break; } }}
注意地方:
Fragment oneFragment = new OneFragment();要用父类Fragment
mViewPager.setAdapter(new RootFragmentPagerAdapter(getSupportFragmentManager(), fragments));导包问题,一定要用v4包下的fragment
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
-----------------------------------------------------------------
1.增加修改颜色值Colors.xml
<?xml version="1.0" encoding="utf-8"?><resources> <color name="colorPrimary">#FF03A9F4</color> <color name="colorPrimaryDark">#FF0288D1</color> <color name="colorAccent">#FF4081</color> <color name="transparent">#00000000</color> <!--透明 --> <color name="white">#FFFFFF</color> <!--白色 --> <color name="black">#000000</color> <!--黑色 --> <color name="background">#F2F2F2</color> <!--背景色 --> <color name="navigationColor">#F8F8F8</color> <!--状态导航栏背景色--> <color name="dividerColor">#EEEEEE</color> <!--二级分割线--> <color name="divider">#DDDDDD</color> <!--分割线--> <color name="titleColor">#999999</color> <!--导航文字--> <color name="textColor">#333333</color> <!--文字颜色--> <color name="text">#666666</color> <!--次文字--> <color name="blueColor">#00AAFF</color> <!--标准蓝--> <color name="orangeColor">#FFAB19</color> <!--标准橙--> <color name="orange">#FB7E00</color> <!--标准深橙--> <color name="greenColor">#5ED125</color> <!--标准绿--> <color name="redColor">#FF4343</color> <!--标准红--> <color name="pinkColor">#DE1E7C</color> <!--标准粉红--> <!--PagerSlidingTab的颜色值--> <color name="background_tab_pressed">#BEBEBE</color> <color name="slidingtab_indicatorcolor">#FF5055</color></resources>
2.更改styles
<resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!--隐藏ActionBar--> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style></resources>
3.增加strings
<resources> <string name="app_name">MyVolley</string> <!--底部导航栏文字--> <string-array name="main_titles"> <item>@string/fragment_news</item> <item>@string/fragment_video</item> <item>@string/fragment_girl</item> <item>@string/fragment_mine</item> </string-array> <string name="fragment_news">新闻</string> <string name="fragment_video">视频</string> <string name="fragment_girl">发现</string> <string name="fragment_mine">我的</string></resources>
4.图片状态选择器
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/ic_main_news_selector" android:state_selected="true"/> <item android:drawable="@drawable/ic_main_news"/></selector>
5.文字状态选择器
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/colorPrimary" android:state_selected="true"/> <item android:color="@color/titleColor"/></selector>
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/bottom" android:layout_width="match_parent" android:layout_height="56dp" android:layout_alignParentBottom="true" android:background="@color/navigationColor" android:gravity="center_vertical" android:orientation="horizontal"> <Button android:id="@+id/news" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:drawableTop="@drawable/main_news" android:paddingBottom="2dp" android:paddingTop="7dp" android:background="@null" android:text="@string/fragment_news" android:textColor="@color/titleColor" android:textSize="12sp" /> <Button android:id="@+id/video" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:drawableTop="@drawable/main_video" android:paddingBottom="2dp" android:paddingTop="7dp" android:background="@null" android:text="@string/fragment_video" android:textColor="@color/titleColor" android:textSize="12sp" /> <Button android:id="@+id/girl" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:drawableTop="@drawable/main_girl" android:paddingBottom="2dp" android:paddingTop="7dp" android:background="@null" android:text="@string/fragment_girl" android:textColor="@color/titleColor" android:textSize="12sp" /> <Button android:id="@+id/mine" style="?android:attr/borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="1" android:drawableTop="@drawable/main_mine" android:paddingBottom="2dp" android:paddingTop="7dp" android:background="@null" android:text="@string/fragment_mine" android:textColor="@color/titleColor" android:textSize="12sp" /> </LinearLayout> <View android:id="@+id/divider" android:layout_width="match_parent" android:layout_height="1px" android:layout_above="@id/bottom" android:background="@color/dividerColor" /> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@id/divider" /></RelativeLayout>
0 0
- 项目之底部导航栏
- 项目之底部导航栏(二)
- Android项目导航栏之仿微信底部导航栏TabLayout+ViewPager+Fragment
- Fragment之底部导航栏的实现
- Android底部导航栏实现之BottomNavigationBar
- Material Design之底部导航栏
- Android之底部导航栏BottomNavigationBar
- android之底部导航
- 底部导航之BottomNavigationBar
- 底部导航之RadioGroup
- APP之底部导航
- Android小项目之底部导航(RadioButton&Fragment&ViewPager)
- Android项目常用内容之底部ViewPager滑动导航
- 安卓项目之淘忆2.0的代码实现之主页底部的导航栏功能
- 底部导航栏(自定义View+ViewPager实现) android项目详解
- [webAPP项目]基于MUI框架webAPP之头部导航与底部导航制作详解02
- [webAPP项目]基于MUI框架webAPP之头部导航与底部导航制作详解02
- android底部导航栏
- H5与native有啥区别?
- 台湾大学林轩田机器学习基石课程学习笔记6 -- Theory of Generalization
- [Android]查看KeyStore的MD5或SHA1签名
- MySQL 数据库的安装及配置
- bzoj 1083: [SCOI2005]繁忙的都市 (最小生成树)
- 项目之底部导航栏
- Java并发读书笔记(二)
- Ogre2.1 分析笔记(一)
- 解决PySide+Python子线程更新UI线程
- PopupWindow
- linux/unix下telnet提示Escape character is '^]'的意义
- Android Activity的跳转动画
- this关键字的使用
- xutils3使用方法(很全面)