1.使用LinearLayout 底部布局+p_w_picpathView 实现

     底部四个主导航页面 布局文件  activity_main.xml

                                                                                                                                                                                                      MainActivitypackage com.example.tastelibrary;    import android.support.v7.app.ActionBarActivity;  import android.support.v7.app.ActionBar;  import android.support.v4.app.Fragment;  import android.support.v4.app.FragmentManager;  import android.support.v4.app.FragmentTransaction;  import android.os.Bundle;  import android.view.LayoutInflater;  import android.view.Menu;  import android.view.MenuItem;  import android.view.View;  import android.view.View.OnClickListener;  import android.view.ViewGroup;  import android.widget.ImageView;  import android.widget.LinearLayout;  import android.os.Build;    public class MainActivity extends ActionBarActivity  implements OnClickListener{       private LinearLayout ll_recipe;            private LinearLayout ll_kitchen;            private LinearLayout ll_find;            private LinearLayout ll_user;            private ImageView p_w_picpath_home;            private ImageView p_w_picpath_friends;            private ImageView p_w_picpath_message;            private ImageView p_w_picpath_more;            //Fragment管理器            private FragmentManager fm = this.getSupportFragmentManager();            private FragmentTransaction ft;            private RecipeFragment fragmentPage1;            private FindFragment fragmentPage2;            private KitchenFragment fragmentPage3;            private UserFragment fragmentPage4;            ActionBar myActionBar;      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_main);        myActionBar=getSupportActionBar();          initView();            //开始事务(每次改变Fragment管理器之后都要提交)            ft = fm.beginTransaction();            home();            //提交事务            ft.commit();         }      private void initView(){            ll_recipe = (LinearLayout)findViewById(R.id.ll_recipe);            ll_kitchen = (LinearLayout)findViewById(R.id.ll_kitchen);            ll_find = (LinearLayout)findViewById(R.id.ll_find);            ll_user = (LinearLayout)findViewById(R.id.ll_user);                        p_w_picpath_home = (ImageView)findViewById(R.id.p_w_picpath_recipe);            p_w_picpath_friends = (ImageView)findViewById(R.id.p_w_picpath_kitchen);            p_w_picpath_message = (ImageView)findViewById(R.id.p_w_picpath_find);            p_w_picpath_more = (ImageView)findViewById(R.id.p_w_picpath_user);                        ll_recipe.setOnClickListener(this);            ll_kitchen.setOnClickListener(this);            ll_find.setOnClickListener(this);            ll_user.setOnClickListener(this);            ll_recipe.setSelected(true);            p_w_picpath_home.setSelected(true);                    }          @Override      public boolean onCreateOptionsMenu(Menu menu) {                    // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.main, menu);          return true;      }        @Override      public boolean onOptionsItemSelected(MenuItem item) {          int id = item.getItemId();          if (id == R.id.action_settings) {              return true;          }          return super.onOptionsItemSelected(item);      }          @Override      public void onClick(View v) {           //每次点击时都需要重新开始事务            ft = fm.beginTransaction();            //把显示的Fragment隐藏            setSelected();            switch (v.getId()) {            case R.id.ll_recipe:                ll_recipe.setSelected(true);                p_w_picpath_home.setSelected(true);                home();                break;            case R.id.ll_kitchen:                ll_kitchen.setSelected(true);                p_w_picpath_friends.setSelected(true);                friend();                                break;            case R.id.ll_find:                ll_find.setSelected(true);                p_w_picpath_message.setSelected(true);                message();                break;            case R.id.ll_user:                ll_user.setSelected(true);                p_w_picpath_more.setSelected(true);                more();                break;            }            ft.commit();        }      /**      * 设置每个按钮是否被选中      */      private void setSelected(){            ll_recipe.setSelected(false);            ll_kitchen.setSelected(false);            ll_find.setSelected(false);            ll_user.setSelected(false);            p_w_picpath_home.setSelected(false);            p_w_picpath_friends.setSelected(false);            p_w_picpath_message.setSelected(false);            p_w_picpath_more.setSelected(false);            if(fragmentPage1 != null){                //隐藏Fragment                ft.hide(fragmentPage1);            }            if(fragmentPage2 != null){                ft.hide(fragmentPage2);            }            if(fragmentPage3 != null){                ft.hide(fragmentPage3);            }            if(fragmentPage4 != null){                ft.hide(fragmentPage4);            }        }        private void home(){            if(fragmentPage1 == null){                fragmentPage1 = new RecipeFragment();                /*添加到Fragment管理器中              这里如果用replace,              当每次调用时都会把前一个Fragment给干掉,              这样就导致了每一次都要创建、销毁,              数据就很难保存,用add就不存在这样的问题了,              当Fragment存在时候就让它显示,不存在时就创建,              这样的话数据就不需要自己保存了,              因为第一次创建的时候就已经保存了,              只要不销毁一直都将存在*/                ft.add(R.id.fl_content, fragmentPage1);            }else{                //显示Fragment                ft.show(fragmentPage1);            }        }        private void friend(){            if(fragmentPage2 == null){                fragmentPage2 = new FindFragment();                ft.add(R.id.fl_content, fragmentPage2);            }else{                ft.show(fragmentPage2);            }                    }        private void message(){            if(fragmentPage3 == null){                fragmentPage3 = new KitchenFragment();                ft.add(R.id.fl_content, fragmentPage3);            }else{                ft.show(fragmentPage3);            }                    }        private void more(){            if(fragmentPage4 == null){                fragmentPage4 = new UserFragment();                ft.add(R.id.fl_content, fragmentPage4);            }else{                ft.show(fragmentPage4);            }                    }    }

源码

更多相关文章

  1. Android(安卓)Dialog中EditText自动弹出软键盘
  2. android 入门demo menu
  3. android studio 55[2]线程更新UI handler 2
  4. Android(安卓)ImageSwithcher的使用
  5. Android(安卓)onSaveInstanceState和onRestoreInstanceState触发
  6. android SharePrefereces的使用入门
  7. 升级android sdk到5.0,创建项目错误解决方法
  8. MacAndroid源码下载 Android10详解
  9. Android(安卓)数据存储与读取:文件

随机推荐

  1. android studio打开react-native的androi
  2. 从Android界面开发谈起
  3. android控件属性
  4. 使用 Android(安卓)Studio 跑新浪微博SDK
  5. Android学习札记15:对Android中View绘制流
  6. Android(安卓)提供的一系列辅助系统开发
  7. 什么是mono for android(使用C#开发androi
  8. Androidmanifest.xml里的
  9. Android软键盘softboard(1)
  10. 我的android 第10天 - pull解析Xml文档