资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Android中怎么实现底部状态栏切换

Android中怎么实现底部状态栏切换,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

专注于为中小企业提供网站制作、成都网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业富蕴免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上千多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

一、使用TabLayout + Fragment + ViewPager实现

1、实现步骤:

(1)、布局文件中定义TabLayout控件 (2)、定义切换的每个Fragment布局文件 (3)、定义切换的每个Fragment的Java类 (4)、定义TabLayoutMainActivity类 (5)、效果图演示

2、实现过程:

(1)、布局文件中定义TabLayout控件(activity_main.xml)

(2)、定义切换的每个Fragment布局文件(fragment_frist.xml)

这里有四个Tab类别(首页、娱乐、游戏、我的),布局都类似,这里只贴出其中一个

(3)、定义切换的每个Fragment的Java类(FristFragment.class)

这里的Java 类实现方式也相似,贴出其中一个

package com.showly.bottomnavigationbardemo.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.showly.bottomnavigationbardemo.R;public class FristFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_frist, null); return view; }}

(4)、定义TabLayoutMainActivity类(TabLayoutMainActivity.class)

package com.showly.bottomnavigationbardemo;import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import com.showly.bottomnavigationbardemo.fragment.FourthlyFragment;import com.showly.bottomnavigationbardemo.fragment.FristFragment;import com.showly.bottomnavigationbardemo.fragment.SecondFragment;import com.showly.bottomnavigationbardemo.fragment.ThirtlyFragment;public class TabLayoutMainActivity extends AppCompatActivity { //未选中的Tab图片 private int[] unSelectTabRes = new int[]{R.drawable.i8live_menu_home_normal  , R.drawable.i8live_menu_information_normal, R.drawable.i8live_menu_game_normal, R.drawable.i8live_menu_personl_normal}; //选中的Tab图片 private int[] selectTabRes = new int[]{R.drawable.i8live_menu_home_press, R.drawable.i8live_menu_information_press  , R.drawable.i8live_menu_game_press, R.drawable.i8live_menu_personl_press}; //Tab标题 private String[] title = new String[]{"首页", "娱乐", "游戏", "我的"}; private ViewPager viewPager; private TabLayout tabLayout; private TabLayout.Tab tabAtOne; private TabLayout.Tab tabAttwo; private TabLayout.Tab tabAtthree; private TabLayout.Tab tabAtfour; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().hide();//隐藏掉整个ActionBar setContentView(R.layout.activity_main); initView(); initData(); initListener(); } private void initView() { viewPager = (ViewPager) findViewById(R.id.viewpager_content_view); tabLayout = (TabLayout) findViewById(R.id.tab_layout_view); //使用适配器将ViewPager与Fragment绑定在一起 viewPager.setAdapter(new MyFragmentPagerAdapter(getSupportFragmentManager())); //将TabLayout与ViewPager绑定 tabLayout.setupWithViewPager(viewPager); /* //设置方式一: //获取底部的单个Tab tabAtOne = tabLayout.getTabAt(0); tabAttwo = tabLayout.getTabAt(1); tabAtthree = tabLayout.getTabAt(2); tabAtfour = tabLayout.getTabAt(3); //设置Tab图片 tabAtOne.setIcon(R.drawable.i8live_menu_home_press); tabAttwo.setIcon(R.drawable.i8live_menu_information_normal); tabAtthree.setIcon(R.drawable.i8live_menu_game_normal); tabAtfour.setIcon(R.drawable.i8live_menu_personl_normal);*/ //设置方式二: for (int i = 0; i < title.length; i++) {  if (i == 0) {  tabLayout.getTabAt(0).setIcon(selectTabRes[0]);  } else {  tabLayout.getTabAt(i).setIcon(unSelectTabRes[i]);  } } } private void initData() { } private void initListener() { //TabLayout切换时导航栏图片处理 tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {  @Override  public void onTabSelected(TabLayout.Tab tab) {//选中图片操作  for (int i = 0; i < title.length; i++) {   if (tab == tabLayout.getTabAt(i)) {   tabLayout.getTabAt(i).setIcon(selectTabRes[i]);   viewPager.setCurrentItem(i);   }  }  }  @Override  public void onTabUnselected(TabLayout.Tab tab) {//未选中图片操作  for (int i = 0; i < title.length; i++) {   if (tab == tabLayout.getTabAt(i)) {   tabLayout.getTabAt(i).setIcon(unSelectTabRes[i]);   }  }  }  @Override  public void onTabReselected(TabLayout.Tab tab) {  } }); } //自定义适配器 public class MyFragmentPagerAdapter extends FragmentPagerAdapter { public MyFragmentPagerAdapter(FragmentManager fm) {  super(fm); } @Override public Fragment getItem(int position) {  if (position == 1) {  return new SecondFragment();//娱乐  } else if (position == 2) {  return new ThirtlyFragment();//游戏  } else if (position == 3) {  return new FourthlyFragment();//我的  }  return new FristFragment();//首页 } @Override public int getCount() {  return title.length; } @Override public CharSequence getPageTitle(int position) {  return title[position]; } }}

(5)、效果图演示

二、使用FragmentTabHost+ Fragment + ViewPager实现

1、实现步骤:

(1)、布局文件中定义FragmentTabHost控件 (2)、定义底部菜单栏布局 (3)、定义切换的每个Fragment布局文件 (4)、定义切换的每个Fragment的Java类 (5)、切换按钮的图片 (6)、定义FragmentTabHostMainActivity类 (7)、效果图演示

2、实现过程:

(1)、布局文件中定义FragmentTabHost控件(fragment_tabhost_activity.xml)

(2)、定义底部菜单栏布局(tab_content.xml)

(3)、定义切换的每个Fragment布局文件(fragment_frist.xml)

这里有四个Tab类别(首页、娱乐、游戏、我的),布局都类似,这里只贴出其中一个

(4)、定义切换的每个Fragment的Java类(FristFragment.class)

这里的Java 类实现方式也相似,贴出其中一个

package com.showly.bottomnavigationbardemo.fragment;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import com.showly.bottomnavigationbardemo.R;public class FristFragment extends Fragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_frist, null); return view; }}

(5)、切换按钮的图片(tab_main.xml)

这里有四个是相似的,只贴出其中一个

(6)、定义FragmentTabHostMainActivity类(FragmentTabHostMainActivity.class)

package com.showly.bottomnavigationbardemo;import android.graphics.Color;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentPagerAdapter;import android.support.v4.app.FragmentTabHost;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TabHost;import android.widget.TabWidget;import android.widget.TextView;import com.showly.bottomnavigationbardemo.fragment.FourthlyFragment;import com.showly.bottomnavigationbardemo.fragment.FristFragment;import com.showly.bottomnavigationbardemo.fragment.SecondFragment;import com.showly.bottomnavigationbardemo.fragment.ThirtlyFragment;import java.util.ArrayList;import java.util.List;public class FragmentTabHostMainActivity extends FragmentActivity implements ViewPager.OnPageChangeListener, TabHost.OnTabChangeListener { private int[] selectTabRes = new int[]{R.drawable.tab_main, R.drawable.tab_infomation  , R.drawable.tab_game, R.drawable.tab_personal}; //Tab标题 private String[] title = new String[]{"首页", "娱乐", "游戏", "我的"}; private Class fragmentArry[] = {FristFragment.class, SecondFragment.class, ThirtlyFragment.class, FourthlyFragment.class}; private List fragmentList = new ArrayList(); private ViewPager viewPager; private FragmentTabHost tabHost; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.fragment_tabhost_activity); initView(); initData(); initListener(); } /** * 初始化Fragment并给ViewPager添加适配器 */ private void initVaper() { FristFragment fristFragment = new FristFragment(); SecondFragment secondFragment = new SecondFragment(); ThirtlyFragment thirtlyFragment = new ThirtlyFragment(); FourthlyFragment fourthlyFragment = new FourthlyFragment(); fragmentList.add(fristFragment); fragmentList.add(secondFragment); fragmentList.add(thirtlyFragment); fragmentList.add(fourthlyFragment); //ViewPager添加适配器 viewPager.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(), fragmentList)); tabHost.getTabWidget().setDividerDrawable(null); } private void initView() { viewPager = (ViewPager) findViewById(R.id.vp_pager); tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);//绑定tabhost tabHost.setup(this, getSupportFragmentManager(), R.id.vp_pager);//TabHost绑定viewpager //获取item的个数 int count = title.length; for (int i = 0; i < count; i++) {  //设置每个TabHost布局  TabHost.TabSpec tabSpec = tabHost.newTabSpec(title[i])   .setIndicator(getTabItemView(i));  //item与fragment关联  tabHost.addTab(tabSpec, fragmentArry[i], null);  tabHost.setTag(i); } //初始化TabHost文字颜色 upDateTab(tabHost); //给ViewPager设置适配器 initVaper(); } /** * 更新文字颜色。 * * @param mTabHost */ private void upDateTab(FragmentTabHost mTabHost) { for (int i = 0; i < mTabHost.getTabWidget().getChildCount(); i++) {  TextView tv = (TextView) mTabHost.getTabWidget().getChildAt(i).findViewById(R.id.tv_item);  if (mTabHost.getCurrentTab() == i) {//选中  tv.setTextColor(Color.parseColor("#FF5959"));  } else {//不选中  tv.setTextColor(Color.parseColor("#777777"));  } } } /** * 设置每个Item布局 */ private View getTabItemView(int i) { View view = LayoutInflater.from(this).inflate(R.layout.tab_content, null); ImageView itemImg = (ImageView) view.findViewById(R.id.iv_imageview); TextView itemText = (TextView) view.findViewById(R.id.tv_item); itemImg.setBackgroundResource(selectTabRes[i]); itemText.setText(title[i]); return view; } private void initData() { } private void initListener() { viewPager.addOnPageChangeListener(this); tabHost.setOnTabChangedListener(this); } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { TabWidget widget = tabHost.getTabWidget(); int oldFocusability = widget.getDescendantFocusability(); widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);//设置View覆盖子类控件而直接获得焦点 tabHost.setCurrentTab(position);//根据位置Postion设置当前的Tab widget.setDescendantFocusability(oldFocusability);//设置取消分割线 } @Override public void onPageScrollStateChanged(int state) { } @Override public void onTabChanged(String tabId) { int position = tabHost.getCurrentTab(); viewPager.setCurrentItem(position);//把选中的Tab的位置赋给适配器,让它控制页面切换 upDateTab(tabHost);//设置TabHost文字颜色 } /** * 适配器 * */ public class MyFragmentAdapter extends FragmentPagerAdapter { List list; public MyFragmentAdapter(FragmentManager fm, List list) {  super(fm);  this.list = list; } @Override public Fragment getItem(int position) {  return list.get(position); } @Override public int getCount() {  return list.size(); } }

关于Android中怎么实现底部状态栏切换问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。


本文标题:Android中怎么实现底部状态栏切换
转载来于:http://www.cdkjz.cn/article/ghhpie.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220