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

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:id="@+id/container"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    tools:context="com.example.tastelibrary.MainActivity"    tools:ignore="MergeRootFrame" >    <FrameLayout        android:id="@+id/fl_content"        android:layout_width="match_parent"        android:layout_height="0dp"        android:layout_weight="1" >    </FrameLayout>    <LinearLayout        android:id="@+id/ll"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <LinearLayout            android:id="@+id/ll_recipe"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:orientation="vertical" >            <ImageView                android:id="@+id/image_recipe"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/recipe_btn_selector" />                  </LinearLayout>        <LinearLayout            android:id="@+id/ll_kitchen"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:orientation="vertical" >            <ImageView                android:id="@+id/image_kitchen"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/kitchen_btn_selector" />        </LinearLayout>        <LinearLayout            android:id="@+id/ll_find"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:orientation="vertical" >              <ImageView                android:id="@+id/image_find"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/find_btn_selector" />        </LinearLayout>        <LinearLayout            android:id="@+id/ll_user"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:gravity="center"            android:orientation="vertical" >            <ImageView                android:id="@+id/image_user"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:background="@drawable/user_btn_selector" />        </LinearLayout>    </LinearLayout></LinearLayout>

MainActivity

package 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 image_home;      private ImageView image_friends;      private ImageView image_message;      private ImageView image_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);                    image_home = (ImageView)findViewById(R.id.image_recipe);          image_friends = (ImageView)findViewById(R.id.image_kitchen);          image_message = (ImageView)findViewById(R.id.image_find);          image_more = (ImageView)findViewById(R.id.image_user);                    ll_recipe.setOnClickListener(this);          ll_kitchen.setOnClickListener(this);          ll_find.setOnClickListener(this);          ll_user.setOnClickListener(this);          ll_recipe.setSelected(true);          image_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);    }@Overridepublic void onClick(View v) { //每次点击时都需要重新开始事务          ft = fm.beginTransaction();          //把显示的Fragment隐藏          setSelected();          switch (v.getId()) {          case R.id.ll_recipe:          ll_recipe.setSelected(true);              image_home.setSelected(true);              home();              break;          case R.id.ll_kitchen:          ll_kitchen.setSelected(true);              image_friends.setSelected(true);              friend();                            break;          case R.id.ll_find:          ll_find.setSelected(true);              image_message.setSelected(true);              message();              break;          case R.id.ll_user:          ll_user.setSelected(true);              image_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);          image_home.setSelected(false);          image_friends.setSelected(false);          image_message.setSelected(false);          image_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);          }                }  }

2.RadioButton 实现

布局文件 activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    tools:context=".MainActivity" >    <RelativeLayout        android:id="@+id/aboveLayout"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:orientation="vertical" >        <RelativeLayout            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:background="@color/white"            android:orientation="vertical" >            <FrameLayout                android:id="@+id/fragmentRoot"                android:layout_width="fill_parent"                android:layout_height="fill_parent"                android:layout_alignParentLeft="true"                android:orientation="vertical" >            </FrameLayout>            <LinearLayout                android:id="@+id/bottomList"                android:layout_width="fill_parent"                android:layout_height="wrap_content"                android:layout_alignParentBottom="true"                android:background="#bbbbbb"                android:orientation="horizontal" >                <RadioGroup                    android:layout_width="match_parent"                    android:layout_height="wrap_content"                    android:layout_gravity="bottom"                    android:background="#bbbbbb"                    android:gravity="center_vertical"                    android:orientation="horizontal" >                    <RadioButton                        android:id="@+id/birtthday"                        style="@style/footbar"                        android:drawableTop="@drawable/birthday_normal"                        android:height="25dp"                        android:paddingTop="8dp"                        android:text="生日"                        android:width="40dp" />                    <RadioButton                        android:id="@+id/message"                        style="@style/footbar"                        android:drawableTop="@drawable/message_normal"                        android:height="25dp"                        android:paddingTop="8dp"                        android:text="祝福短信"                        android:width="40dp" />                    <RadioButton                        android:id="@+id/note"                        style="@style/footbar"                        android:drawableTop="@drawable/ej_label_add_d"                        android:height="25dp"                        android:paddingTop="8dp"                        android:text="生日记事"                        android:width="40dp" />                    <RadioButton                        android:id="@+id/me"                        style="@style/footbar"                        android:drawableTop="@drawable/me_normal"                        android:height="25dp"                        android:paddingTop="8dp"                        android:text="我的"                        android:width="40dp" />                </RadioGroup>            </LinearLayout>        </RelativeLayout>    </RelativeLayout></RelativeLayout>


MainActivity

package com.gemptc.birthdaydemonapp.activity;import android.content.Intent;import android.os.Bundle;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.support.v7.app.ActionBar;import android.support.v7.app.ActionBarActivity;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.RadioButton;import android.widget.Toast;import com.gemptc.birthdaydemonapp.R;import com.gemptc.birthdaydemonapp.fragment.BirthdayFragment;import com.gemptc.birthdaydemonapp.fragment.MeFragment;import com.gemptc.birthdaydemonapp.fragment.MessageFragment;import com.gemptc.birthdaydemonapp.fragment.NoteFragment;import com.gemptc.birthdaydemonapp.sqlite.DBManger;import com.zhe.rex.*;public class MainActivity extends ActionBarActivity {private ActionBar actionbar;private static FragmentManager fMgr;private Eoiu spotManager;private RadioButton birthday;private RadioButton message;private RadioButton blesswall;private RadioButton me;private int i = 1;private NoteFragment nf = null;private MessageFragment mf;private BirthdayFragment bf;private MeFragment mf1;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);actionbar = getSupportActionBar();actionbar.hide();birthday = (RadioButton) findViewById(R.id.birtthday);message = (RadioButton) findViewById(R.id.message);me = (RadioButton) findViewById(R.id.me);// 获取FragmentManager实例fMgr = getSupportFragmentManager();initFragment();dealBottomButtonsClickEvent();}/** * 初始化首个Fragment */private void initFragment() {FragmentTransaction ft = fMgr.beginTransaction();bf = new BirthdayFragment();ft.add(R.id.fragmentRoot, bf, "birthdayFragment");ft.addToBackStack(null);ft.commit();}/** * 处理底部点击事件 */private void dealBottomButtonsClickEvent() {findViewById(R.id.birtthday).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {FragmentTransaction ft = fMgr.beginTransaction();ft.replace(R.id.fragmentRoot, bf, "birthdayFragment");ft.addToBackStack(null);ft.commit();}});findViewById(R.id.message).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {FragmentTransaction ft = fMgr.beginTransaction();if (mf == null) {mf = new MessageFragment();}ft.replace(R.id.fragmentRoot, mf, "MessageFragment");ft.addToBackStack(null);ft.commit();}});findViewById(R.id.note).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {FragmentTransaction ft = fMgr.beginTransaction();if (nf == null) {nf = new NoteFragment();}ft.replace(R.id.fragmentRoot, nf, "NoteFragment");ft.addToBackStack(null);ft.commit();}});findViewById(R.id.me).setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {FragmentTransaction ft = fMgr.beginTransaction();if (mf1 == null) {mf1 = new MeFragment();}ft.replace(R.id.fragmentRoot, mf1, "MeFragment");ft.addToBackStack(null);ft.commit();}});}// 点击返回按钮@Overridepublic void onBackPressed() {i++;if (i == 2) {Toast.makeText(this, "再按一次退出", Toast.LENGTH_LONG).show();Eoiu spotManager = Eoiu.getInstance(getApplicationContext(),"bec9e95da11570a46e46b2b005c204a9");spotManager.exit(this);}elseMainActivity.this.finish();}@Overrideprotected void onRestart() {i = 1;super.onRestart();}@Overrideprotected void onResume() {i = 1;super.onResume();}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) {  case Add_REQUEST_CODE:    nf.refresh();break;   default:break;}super.onActivityResult(requestCode, resultCode, data);}}



更多相关文章

  1. Android创建XMl文件
  2. Android(安卓)图片缩放
  3. Android创建快捷方式(shortcut)
  4. Android之菜单总结
  5. Android(安卓)虚拟机安装SD卡
  6. Android(安卓)assets文件夹之位置放置和作用( AS 和eclipse中的 )
  7. Invalid project description
  8. Android(安卓)context(Application/Activity)与内存泄露
  9. Android掌上背包游(1)

随机推荐

  1. Android的几种通讯方式
  2. Android学习笔记--Binder
  3. Android View回顾之坐标系
  4. 从Android 1.0到Android 8.0,盘点每一代系
  5. 微软和Wistron再度联手,Android和Chrome O
  6. Android进阶(一)View体系
  7. (一)Android应用程序及组件简介
  8. 【Android实战开发】3G技术和Android发展
  9. AndroidManifest.xml 详解 (四) 之uses-p
  10. 阿里ctf-2014 android 第三题——so动态