android 开发实例 底部导航栏(1)

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);
    }


	@Override
	public 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;


	@Override
	protected 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() {

			@Override
			public 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() {

			@Override
			public 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() {

			@Override
			public 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() {

			@Override
			public 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();
			}
		});
	}

	// 点击返回按钮
	@Override
	public void onBackPressed() {
		i++;
		if (i == 2) {

			Toast.makeText(this, "再按一次退出", Toast.LENGTH_LONG).show();
			Eoiu spotManager = Eoiu.getInstance(getApplicationContext(),
					"bec9e95da11570a46e46b2b005c204a9");
					spotManager.exit(this);

		}

		else
			MainActivity.this.finish();

	}

	@Override
	protected void onRestart() {
		i = 1;
		super.onRestart();
	}

	@Override
	protected void onResume() {
		i = 1;
		super.onResume();
	}

	@Override
	protected void onActivityResult(int requestCode, int resultCode, Intent data) {

 switch (requestCode) {
  case Add_REQUEST_CODE:
	    nf.refresh();
	break;

   default:
	break;
}
		super.onActivityResult(requestCode, resultCode, data);
	}
	
	

}



未完待续 可以滑动的导航 viewPager+Fragment

源码


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值